Chris@13: assertSame( Chris@0: $expected, Chris@0: String_::parseEscapeSequences($string, $quote) Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @dataProvider provideTestParse Chris@0: */ Chris@0: public function testCreate($expected, $string) { Chris@0: $this->assertSame( Chris@0: $expected, Chris@0: String_::parse($string) Chris@0: ); Chris@0: } Chris@0: Chris@0: public function provideTestParseEscapeSequences() { Chris@13: return [ Chris@13: ['"', '\\"', '"'], Chris@13: ['\\"', '\\"', '`'], Chris@13: ['\\"\\`', '\\"\\`', null], Chris@13: ["\\\$\n\r\t\f\v", '\\\\\$\n\r\t\f\v', null], Chris@13: ["\x1B", '\e', null], Chris@13: [chr(255), '\xFF', null], Chris@13: [chr(255), '\377', null], Chris@13: [chr(0), '\400', null], Chris@13: ["\0", '\0', null], Chris@13: ['\xFF', '\\\\xFF', null], Chris@13: ]; Chris@0: } Chris@0: Chris@0: public function provideTestParse() { Chris@13: $tests = [ Chris@13: ['A', '\'A\''], Chris@13: ['A', 'b\'A\''], Chris@13: ['A', '"A"'], Chris@13: ['A', 'b"A"'], Chris@13: ['\\', '\'\\\\\''], Chris@13: ['\'', '\'\\\'\''], Chris@13: ]; Chris@0: Chris@0: foreach ($this->provideTestParseEscapeSequences() as $i => $test) { Chris@0: // skip second and third tests, they aren't for double quotes Chris@13: if ($i !== 1 && $i !== 2) { Chris@13: $tests[] = [$test[0], '"' . $test[1] . '"']; Chris@0: } Chris@0: } Chris@0: Chris@0: return $tests; Chris@0: } Chris@0: }