public function testLexesNumbers()
{
$this->assertArraySubset(['kind' => Token::INT, 'start' => 0, 'end' => 1, 'value' => '4'], (array) $this->lexOne('4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 5, 'value' => '4.123'], (array) $this->lexOne('4.123'));
$this->assertArraySubset(['kind' => Token::INT, 'start' => 0, 'end' => 2, 'value' => '-4'], (array) $this->lexOne('-4'));
$this->assertArraySubset(['kind' => Token::INT, 'start' => 0, 'end' => 1, 'value' => '9'], (array) $this->lexOne('9'));
$this->assertArraySubset(['kind' => Token::INT, 'start' => 0, 'end' => 1, 'value' => '0'], (array) $this->lexOne('0'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 6, 'value' => '-4.123'], (array) $this->lexOne('-4.123'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 5, 'value' => '0.123'], (array) $this->lexOne('0.123'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 5, 'value' => '123e4'], (array) $this->lexOne('123e4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 5, 'value' => '123E4'], (array) $this->lexOne('123E4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 6, 'value' => '123e-4'], (array) $this->lexOne('123e-4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 6, 'value' => '123e+4'], (array) $this->lexOne('123e+4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 8, 'value' => '-1.123e4'], (array) $this->lexOne('-1.123e4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 8, 'value' => '-1.123E4'], (array) $this->lexOne('-1.123E4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 9, 'value' => '-1.123e-4'], (array) $this->lexOne('-1.123e-4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 9, 'value' => '-1.123e+4'], (array) $this->lexOne('-1.123e+4'));
$this->assertArraySubset(['kind' => Token::FLOAT, 'start' => 0, 'end' => 11, 'value' => '-1.123e4567'], (array) $this->lexOne('-1.123e4567'));
}