]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/wikimedia/purtle/tests/phpunit/N3QuoterTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / wikimedia / purtle / tests / phpunit / N3QuoterTest.php
diff --git a/vendor/wikimedia/purtle/tests/phpunit/N3QuoterTest.php b/vendor/wikimedia/purtle/tests/phpunit/N3QuoterTest.php
new file mode 100644 (file)
index 0000000..e6ac69c
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+namespace Wikimedia\Purtle\Tests;
+
+use PHPUnit_Framework_TestCase;
+use Wikimedia\Purtle\N3Quoter;
+
+/**
+ * @covers Wikimedia\Purtle\N3Quoter
+ *
+ * @uses Wikimedia\Purtle\UnicodeEscaper
+ *
+ * @group Purtle
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class N3QuoterTest extends PHPUnit_Framework_TestCase {
+
+       public function provideEscapeIRI() {
+               return [
+                       [
+                               'http://acme.com/test.php?x=y&foo=bar#part',
+                               'http://acme.com/test.php?x=y&foo=bar#part',
+                       ],
+                       [
+                               'http://acme.com/"evil stuff"',
+                               'http://acme.com/%22evil%20stuff%22',
+                       ],
+                       [
+                               'http://acme.com/<wacky stuff>',
+                               'http://acme.com/%3Cwacky%20stuff%3E',
+                       ],
+                       [
+                               'http://acme.com\\back\\slash',
+                               'http://acme.com%5Cback%5Cslash',
+                       ],
+                       [
+                               'http://acme.com/~`!@#$%^&*()-_=+[]{}|:;\'",.<>/?',
+                               'http://acme.com/~%60!@#$%%5E&*()-_=+[]%7B%7D%7C:;\'%22,.%3C%3E/?',
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideEscapeIRI
+        */
+       public function testEscapeIRI( $iri, $expected ) {
+               $quoter = new N3Quoter();
+
+               $this->assertEquals( $expected, $quoter->escapeIRI( $iri ) );
+       }
+
+       public function provideEscapeLiteral() {
+               return [
+                       [ 'Hello World', 'Hello World' ],
+                       [ "Hello\nWorld", 'Hello\nWorld' ],
+                       [ "Hello\tWorld", 'Hello\tWorld' ],
+                       [ 'Hällo Wörld', 'Hällo Wörld', false ],
+                       [ 'Hällo Wörld', 'H\u00E4llo W\u00F6rld', true ],
+                       [ '\a', '\\\\a' ],
+                       [ "\x7\v\0\x1F", '\u0007\u000B\u0000\u001F' ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideEscapeLiteral
+        */
+       public function testEscapeLiteral( $literal, $expected, $escapeUnicode = false ) {
+               $quoter = new N3Quoter();
+               $quoter->setEscapeUnicode( $escapeUnicode );
+
+               $this->assertEquals( $expected, $quoter->escapeLiteral( $literal ) );
+       }
+
+}