Chris@0: 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@0: return array( Chris@0: array('"', '\\"', '"'), Chris@0: array('\\"', '\\"', '`'), Chris@0: array('\\"\\`', '\\"\\`', null), Chris@0: array("\\\$\n\r\t\f\v", '\\\\\$\n\r\t\f\v', null), Chris@0: array("\x1B", '\e', null), Chris@0: array(chr(255), '\xFF', null), Chris@0: array(chr(255), '\377', null), Chris@0: array(chr(0), '\400', null), Chris@0: array("\0", '\0', null), Chris@0: array('\xFF', '\\\\xFF', null), Chris@0: ); Chris@0: } Chris@0: Chris@0: public function provideTestParse() { Chris@0: $tests = array( Chris@0: array('A', '\'A\''), Chris@0: array('A', 'b\'A\''), Chris@0: array('A', '"A"'), Chris@0: array('A', 'b"A"'), Chris@0: array('\\', '\'\\\\\''), Chris@0: array('\'', '\'\\\'\''), Chris@0: ); Chris@0: Chris@0: foreach ($this->provideTestParseEscapeSequences() as $i => $test) { Chris@0: // skip second and third tests, they aren't for double quotes Chris@0: if ($i != 1 && $i != 2) { Chris@0: $tests[] = array($test[0], '"' . $test[1] . '"'); Chris@0: } Chris@0: } Chris@0: Chris@0: return $tests; Chris@0: } Chris@0: }