<?php

namespace Doctrine\Tests\Mocks;

use Doctrine\ORM\EntityManager;

class SequenceMock extends \Doctrine\ORM\Id\SequenceGenerator
{
    private $_sequenceNumber = 0;

    public function generate(EntityManager $em, $entity)
    {
        return $this->_sequenceNumber++;
    }

    /**
     * @override
     */
    public function nextId($seqName, $ondemand = true)
    {
        return $this->_sequenceNumber++;
    }

    /**
     * @override
     */
    public function lastInsertId($table = null, $field = null)
    {
        return $this->_sequenceNumber - 1;
    }

    /**
     * @override
     */
    public function currId($seqName)
    {
        return $this->_sequenceNumber;
    }

    /* Mock API */

    public function reset()
    {
        $this->_sequenceNumber = 0;
    }

    public function autoinc()
    {
        $this->_sequenceNumber++;
    }
}