public function testLexesStrings()
{
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 8, 'value' => 'simple'], (array) $this->lexOne('"simple"'));
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 15, 'value' => ' white space '], (array) $this->lexOne('" white space "'));
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 10, 'value' => 'quote "'], (array) $this->lexOne('"quote \\""'));
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 25, 'value' => 'escaped \\n\\r\\b\\t\\f'], (array) $this->lexOne('"escaped \\\\n\\\\r\\\\b\\\\t\\\\f"'));
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 16, 'value' => 'slashes \\ \\/'], (array) $this->lexOne('"slashes \\\\ \\\\/"'));
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 13, 'value' => 'unicode яуц'], (array) $this->lexOne('"unicode яуц"'));
$unicode = json_decode('"\\u1234\\u5678\\u90AB\\uCDEF"');
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 34, 'value' => 'unicode ' . $unicode], (array) $this->lexOne('"unicode \\u1234\\u5678\\u90AB\\uCDEF"'));
$this->assertArraySubset(['kind' => Token::STRING, 'start' => 0, 'end' => 26, 'value' => $unicode], (array) $this->lexOne('"\\u1234\\u5678\\u90AB\\uCDEF"'));
}