Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace PhpParser\Node\Scalar;
|
Chris@0
|
4
|
Chris@0
|
5 class StringTest extends \PHPUnit_Framework_TestCase
|
Chris@0
|
6 {
|
Chris@0
|
7 /**
|
Chris@0
|
8 * @dataProvider provideTestParseEscapeSequences
|
Chris@0
|
9 */
|
Chris@0
|
10 public function testParseEscapeSequences($expected, $string, $quote) {
|
Chris@0
|
11 $this->assertSame(
|
Chris@0
|
12 $expected,
|
Chris@0
|
13 String_::parseEscapeSequences($string, $quote)
|
Chris@0
|
14 );
|
Chris@0
|
15 }
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * @dataProvider provideTestParse
|
Chris@0
|
19 */
|
Chris@0
|
20 public function testCreate($expected, $string) {
|
Chris@0
|
21 $this->assertSame(
|
Chris@0
|
22 $expected,
|
Chris@0
|
23 String_::parse($string)
|
Chris@0
|
24 );
|
Chris@0
|
25 }
|
Chris@0
|
26
|
Chris@0
|
27 public function provideTestParseEscapeSequences() {
|
Chris@0
|
28 return array(
|
Chris@0
|
29 array('"', '\\"', '"'),
|
Chris@0
|
30 array('\\"', '\\"', '`'),
|
Chris@0
|
31 array('\\"\\`', '\\"\\`', null),
|
Chris@0
|
32 array("\\\$\n\r\t\f\v", '\\\\\$\n\r\t\f\v', null),
|
Chris@0
|
33 array("\x1B", '\e', null),
|
Chris@0
|
34 array(chr(255), '\xFF', null),
|
Chris@0
|
35 array(chr(255), '\377', null),
|
Chris@0
|
36 array(chr(0), '\400', null),
|
Chris@0
|
37 array("\0", '\0', null),
|
Chris@0
|
38 array('\xFF', '\\\\xFF', null),
|
Chris@0
|
39 );
|
Chris@0
|
40 }
|
Chris@0
|
41
|
Chris@0
|
42 public function provideTestParse() {
|
Chris@0
|
43 $tests = array(
|
Chris@0
|
44 array('A', '\'A\''),
|
Chris@0
|
45 array('A', 'b\'A\''),
|
Chris@0
|
46 array('A', '"A"'),
|
Chris@0
|
47 array('A', 'b"A"'),
|
Chris@0
|
48 array('\\', '\'\\\\\''),
|
Chris@0
|
49 array('\'', '\'\\\'\''),
|
Chris@0
|
50 );
|
Chris@0
|
51
|
Chris@0
|
52 foreach ($this->provideTestParseEscapeSequences() as $i => $test) {
|
Chris@0
|
53 // skip second and third tests, they aren't for double quotes
|
Chris@0
|
54 if ($i != 1 && $i != 2) {
|
Chris@0
|
55 $tests[] = array($test[0], '"' . $test[1] . '"');
|
Chris@0
|
56 }
|
Chris@0
|
57 }
|
Chris@0
|
58
|
Chris@0
|
59 return $tests;
|
Chris@0
|
60 }
|
Chris@0
|
61 }
|