First commit

This commit is contained in:
Cody Cook 2024-04-29 19:04:51 -07:00
commit d5bb2f19fa
117 changed files with 68604 additions and 0 deletions

View file

@ -0,0 +1,299 @@
<?php
/*
* This file is part of the Yosymfony\Toml package.
*
* (c) YoSymfony <http://github.com/yosymfony>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Yosymfony\Toml\tests;
use PHPUnit\Framework\TestCase;
use Yosymfony\Toml\Lexer;
class LexerTest extends TestCase
{
private $lexer;
public function setUp()
{
$this->lexer = new Lexer();
}
public function testTokenizeMustRecognizeEqualToken()
{
$ts = $this->lexer->tokenize('=');
$this->assertTrue($ts->isNext('T_EQUAL'));
}
public function testTokenizeMustRecognizeBooleanTokenWhenThereIsATrueValue()
{
$ts = $this->lexer->tokenize('true');
$this->assertTrue($ts->isNext('T_BOOLEAN'));
}
public function testTokenizeMustRecognizeBooleanTokenWhenThereIsAFalseValue()
{
$ts = $this->lexer->tokenize('false');
$this->assertTrue($ts->isNext('T_BOOLEAN'));
}
public function testTokenizeMustRecognizeUnquotedKeyToken()
{
$ts = $this->lexer->tokenize('title');
$this->assertTrue($ts->isNext('T_UNQUOTED_KEY'));
}
public function testTokenizeMustRecognizeIntegerTokenWhenThereIsAPositiveNumber()
{
$ts = $this->lexer->tokenize('25');
$this->assertTrue($ts->isNext('T_INTEGER'));
}
public function testTokenizeMustRecognizeIntegerTokenWhenThereIsANegativeNumber()
{
$ts = $this->lexer->tokenize('-25');
$this->assertTrue($ts->isNext('T_INTEGER'));
}
public function testTokenizeMustRecognizeIntegerTokenWhenThereIsNumberWithUnderscoreSeparator()
{
$ts = $this->lexer->tokenize('2_5');
$this->assertTrue($ts->isNext('T_INTEGER'));
}
public function testTokenizeMustRecognizeFloatTokenWhenThereIsAFloatNumber()
{
$ts = $this->lexer->tokenize('2.5');
$this->assertTrue($ts->isNext('T_FLOAT'));
}
public function testTokenizeMustRecognizeFloatTokenWhenThereIsAFloatNumberWithUnderscoreSeparator()
{
$ts = $this->lexer->tokenize('9_224_617.445_991_228_313');
$this->assertTrue($ts->isNext('T_FLOAT'));
}
public function testTokenizeMustRecognizeFloatTokenWhenThereIsANegativeFloatNumber()
{
$ts = $this->lexer->tokenize('-2.5');
$this->assertTrue($ts->isNext('T_FLOAT'));
}
public function testTokenizeMustRecognizeFloatTokenWhenThereIsANumberWithExponent()
{
$ts = $this->lexer->tokenize('5e+22');
$this->assertTrue($ts->isNext('T_FLOAT'));
}
public function testTokenizeMustRecognizeFloatTokenWhenThereIsANumberWithExponentAndUnderscoreSeparator()
{
$ts = $this->lexer->tokenize('1e1_000');
$this->assertTrue($ts->isNext('T_FLOAT'));
}
public function testTokenizeMustRecognizeFloatTokenWhenThereIsAFloatNumberWithExponent()
{
$ts = $this->lexer->tokenize('6.626e-34');
$this->assertTrue($ts->isNext('T_FLOAT'));
}
public function testTokenizeMustRecognizeDataTimeTokenWhenThereIsRfc3339Datetime()
{
$ts = $this->lexer->tokenize('1979-05-27T07:32:00Z');
$this->assertTrue($ts->isNext('T_DATE_TIME'));
}
public function testTokenizeMustRecognizeDataTimeTokenWhenThereIsRfc3339DatetimeWithOffset()
{
$ts = $this->lexer->tokenize('1979-05-27T00:32:00-07:00');
$this->assertTrue($ts->isNext('T_DATE_TIME'));
}
public function testTokenizeMustRecognizeDataTimeTokenWhenThereIsRfc3339DatetimeWithOffsetSecondFraction()
{
$ts = $this->lexer->tokenize('1979-05-27T00:32:00.999999-07:00');
$this->assertTrue($ts->isNext('T_DATE_TIME'));
}
public function testTokenizeMustRecognizeQuotationMark()
{
$ts = $this->lexer->tokenize('"');
$this->assertTrue($ts->isNext('T_QUOTATION_MARK'));
}
public function testTokenizeMustRecognize3QuotationMark()
{
$ts = $this->lexer->tokenize('"""');
$this->assertTrue($ts->isNextSequence(['T_3_QUOTATION_MARK', 'T_EOS']));
}
public function testTokenizeMustRecognizeApostrophe()
{
$ts = $this->lexer->tokenize("'");
$this->assertTrue($ts->isNext('T_APOSTROPHE'));
}
public function testTokenizeMustRecognize3Apostrophe()
{
$ts = $this->lexer->tokenize("'''");
$this->assertTrue($ts->isNext('T_3_APOSTROPHE'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsBackspace()
{
$ts = $this->lexer->tokenize('\b');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsTab()
{
$ts = $this->lexer->tokenize('\t');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsLinefeed()
{
$ts = $this->lexer->tokenize('\n');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsFormfeed()
{
$ts = $this->lexer->tokenize('\f');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsCarriageReturn()
{
$ts = $this->lexer->tokenize('\r');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsQuote()
{
$ts = $this->lexer->tokenize('\"');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsBackslash()
{
$ts = $this->lexer->tokenize('\\\\');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsUnicodeUsingFourCharacters()
{
$ts = $this->lexer->tokenize('\u00E9');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeEscapedCharacterWhenThereIsUnicodeUsingEightCharacters()
{
$ts = $this->lexer->tokenize('\U00E90000');
$this->assertTrue($ts->isNext('T_ESCAPED_CHARACTER'));
}
public function testTokenizeMustRecognizeBasicUnescapedString()
{
$ts = $this->lexer->tokenize('@text');
$this->assertTrue($ts->isNextSequence([
'T_BASIC_UNESCAPED',
'T_EOS'
]));
}
public function testTokenizeMustRecognizeHash()
{
$ts = $this->lexer->tokenize('#');
$this->assertTrue($ts->isNext('T_HASH'));
}
public function testTokenizeMustRecognizeEscape()
{
$ts = $this->lexer->tokenize('\\');
$this->assertTrue($ts->isNextSequence(['T_ESCAPE', 'T_EOS']));
}
public function testTokenizeMustRecognizeEscapeAndEscapedCharacter()
{
$ts = $this->lexer->tokenize('\\ \b');
$this->assertTrue($ts->isNextSequence([
'T_ESCAPE',
'T_SPACE',
'T_ESCAPED_CHARACTER',
'T_EOS'
]));
}
public function testTokenizeMustRecognizeLeftSquareBraket()
{
$ts = $this->lexer->tokenize('[');
$this->assertTrue($ts->isNext('T_LEFT_SQUARE_BRAKET'));
}
public function testTokenizeMustRecognizeRightSquareBraket()
{
$ts = $this->lexer->tokenize(']');
$this->assertTrue($ts->isNext('T_RIGHT_SQUARE_BRAKET'));
}
public function testTokenizeMustRecognizeDot()
{
$ts = $this->lexer->tokenize('.');
$this->assertTrue($ts->isNext('T_DOT'));
}
public function testTokenizeMustRecognizeLeftCurlyBrace()
{
$ts = $this->lexer->tokenize('{');
$this->assertTrue($ts->isNext('T_LEFT_CURLY_BRACE'));
}
public function testTokenizeMustRecognizeRightCurlyBrace()
{
$ts = $this->lexer->tokenize('}');
$this->assertTrue($ts->isNext('T_RIGHT_CURLY_BRACE'));
}
}