public function testUnscan() { $s = new StringScanner('test string'); $this->assertEquals('test', $s->scan('/\\w+/')); $s->unscan(); $this->assertEquals('te', $s->scan('/../')); $this->assertNull($s->scan('/\\d/')); try { $s->unscan(); # ScanError: unscan failed: previous match record not exist } catch (Exception $e) { } $this->assertNotNull($e); $s->reset(); $this->assertEquals('test ', $s->scan('/\\w+\\s/')); $this->assertEquals('st', $s->scan('/st/')); $this->assertEquals('ri', $s->scan('/ri/')); $s->unscan(); $this->assertEquals(7, $s->pos); $this->assertEquals('ri', $s->scan('/ri/')); }