sixty-nine/ClassGrapher

View on GitHub
src/SixtyNine/PhpParse/Tests/Reader/BufferReaderTest.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php

namespace SixtyNine\PhpParse\Tests\Reader;

use SixtyNine\PhpParse\Reader\BufferReader;

class BufferReaderTest extends \PHPUnit_Framework_TestCase
{
    public function test__construct()
    {
        $buffer = "Some random\nstring";
        $reader = new BufferReader($buffer);

        $this->assertInstanceOf('\SixtyNine\PhpParse\Reader\BufferReader', $reader);
        $this->assertAttributeEquals($buffer . $reader->getEofMarker(), 'buffer', $reader);
        $this->assertAttributeEquals(0, 'startPos', $reader);
        $this->assertAttributeEquals(0, 'forwardPos', $reader);

        $this->assertEquals(1, $reader->getCurrentLine());
        $this->assertEquals(1, $reader->getCurrentColumn());

        $this->assertEquals('', $reader->current());
        $this->assertEquals('S', $reader->forward());
        $this->assertEquals('So', $reader->forward());

        $reader->rewind();

        $this->assertEquals(1, $reader->getCurrentLine());
        $this->assertEquals(1, $reader->getCurrentColumn());

        $this->assertEquals('', $reader->current());
        $this->assertEquals('S', $reader->forward());
        $this->assertEquals('So', $reader->forward());
        $this->assertEquals('Som', $reader->forward());
        $this->assertEquals('Some', $reader->forward());
        $this->assertEquals('Some', $reader->consume());

        $this->assertEquals(5, $reader->getCurrentColumn());

        $this->assertEquals(' ', $reader->forward());
        $this->assertEquals(' r', $reader->forward());
        $reader->rewind();
        $this->assertEquals(' ', $reader->forward());
        $reader->unget();
        $this->assertEquals(' ', $reader->forward());
        $reader->unget();
        $reader->unget();
        $this->assertEquals(' ', $reader->forward());
        $this->assertEquals(' ', $reader->consume());

        $this->assertEquals(6, $reader->getCurrentColumn());

        $this->assertEquals('r', $reader->forward());
        $this->assertEquals('ra', $reader->forward());
        $this->assertEquals('ran', $reader->forward());
        $this->assertEquals('rand', $reader->forward());
        $this->assertEquals('rando', $reader->forward());
        $this->assertEquals('random', $reader->forward());
        $this->assertEquals('random', $reader->consume());

        $this->assertEquals(12, $reader->getCurrentColumn());

        $this->assertEquals(PHP_EOL, $reader->forward());
        $this->assertEquals(PHP_EOL, $reader->consume());

        $this->assertEquals(2, $reader->getCurrentLine());
        $this->assertEquals(1, $reader->getCurrentColumn());

        $this->assertEquals('s', $reader->forward());
        $this->assertEquals('st', $reader->forward());
        $this->assertEquals('str', $reader->forward());
        $this->assertEquals('stri', $reader->forward());
        $this->assertEquals('strin', $reader->forward());
        $this->assertEquals('string', $reader->forward());
        $this->assertEquals('string', $reader->consume());

        $this->assertEquals(2, $reader->getCurrentLine());
        $this->assertEquals(7, $reader->getCurrentColumn());

        $this->assertEquals($reader->getEofMarker(), $reader->forward());
        $this->assertEquals($reader->getEofMarker(), $reader->consume());
        $this->assertEquals($reader->getEofMarker(), $reader->forward());
    }

    public function test__constructEmptyString()
    {
        $reader = new BufferReader('');

        $this->assertInstanceOf('\SixtyNine\PhpParse\Reader\BufferReader', $reader);
        $this->assertAttributeEquals($reader->getEofMarker(), 'buffer', $reader);
        $this->assertAttributeEquals(0, 'startPos', $reader);
        $this->assertAttributeEquals(0, 'forwardPos', $reader);

        $this->assertEquals(1, $reader->getCurrentLine());
        $this->assertEquals(1, $reader->getCurrentColumn());

        $this->assertEquals('', $reader->current());
        $this->assertEquals($reader->getEofMarker(), $reader->forward());
        $this->assertEquals($reader->getEofMarker(), $reader->forward());
        $reader->rewind();
        $this->assertEquals($reader->getEofMarker(), $reader->forward());
        $this->assertEquals($reader->getEofMarker(), $reader->consume());
    }

}