2017-11-02 18:56:01 +01:00
|
|
|
<?php declare(strict_types=1);
|
2011-08-20 10:40:27 +02:00
|
|
|
|
2014-02-06 14:44:16 +01:00
|
|
|
namespace PhpParser\Node\Scalar;
|
|
|
|
|
2019-01-19 11:18:00 +01:00
|
|
|
class StringTest extends \PHPUnit\Framework\TestCase
|
2011-08-20 10:40:27 +02:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @dataProvider provideTestParseEscapeSequences
|
|
|
|
*/
|
|
|
|
public function testParseEscapeSequences($expected, $string, $quote) {
|
2014-09-30 20:38:09 +02:00
|
|
|
$this->assertSame(
|
2011-08-20 10:40:27 +02:00
|
|
|
$expected,
|
2015-03-20 21:47:20 +01:00
|
|
|
String_::parseEscapeSequences($string, $quote)
|
2011-08-20 10:40:27 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2012-10-19 15:17:08 +02:00
|
|
|
* @dataProvider provideTestParse
|
2011-08-20 10:40:27 +02:00
|
|
|
*/
|
|
|
|
public function testCreate($expected, $string) {
|
2014-09-30 20:38:09 +02:00
|
|
|
$this->assertSame(
|
2011-08-20 10:40:27 +02:00
|
|
|
$expected,
|
2015-03-20 21:47:20 +01:00
|
|
|
String_::parse($string)
|
2011-08-20 10:40:27 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function provideTestParseEscapeSequences() {
|
2017-08-13 14:35:03 +02:00
|
|
|
return [
|
|
|
|
['"', '\\"', '"'],
|
|
|
|
['\\"', '\\"', '`'],
|
|
|
|
['\\"\\`', '\\"\\`', null],
|
|
|
|
["\\\$\n\r\t\f\v", '\\\\\$\n\r\t\f\v', null],
|
|
|
|
["\x1B", '\e', null],
|
|
|
|
[chr(255), '\xFF', null],
|
|
|
|
[chr(255), '\377', null],
|
|
|
|
[chr(0), '\400', null],
|
|
|
|
["\0", '\0', null],
|
|
|
|
['\xFF', '\\\\xFF', null],
|
|
|
|
];
|
2011-08-20 10:40:27 +02:00
|
|
|
}
|
|
|
|
|
2012-10-19 15:17:08 +02:00
|
|
|
public function provideTestParse() {
|
2017-08-13 14:35:03 +02:00
|
|
|
$tests = [
|
|
|
|
['A', '\'A\''],
|
|
|
|
['A', 'b\'A\''],
|
|
|
|
['A', '"A"'],
|
|
|
|
['A', 'b"A"'],
|
|
|
|
['\\', '\'\\\\\''],
|
|
|
|
['\'', '\'\\\'\''],
|
|
|
|
];
|
2011-08-20 10:40:27 +02:00
|
|
|
|
|
|
|
foreach ($this->provideTestParseEscapeSequences() as $i => $test) {
|
|
|
|
// skip second and third tests, they aren't for double quotes
|
2017-08-13 14:35:03 +02:00
|
|
|
if ($i !== 1 && $i !== 2) {
|
|
|
|
$tests[] = [$test[0], '"' . $test[1] . '"'];
|
2011-08-20 10:40:27 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $tests;
|
|
|
|
}
|
2015-03-20 21:47:20 +01:00
|
|
|
}
|