summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/tests/phpunit/TranslateYamlTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/tests/phpunit/TranslateYamlTest.php')
-rw-r--r--www/wiki/extensions/Translate/tests/phpunit/TranslateYamlTest.php72
1 files changed, 72 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/tests/phpunit/TranslateYamlTest.php b/www/wiki/extensions/Translate/tests/phpunit/TranslateYamlTest.php
new file mode 100644
index 00000000..f0259528
--- /dev/null
+++ b/www/wiki/extensions/Translate/tests/phpunit/TranslateYamlTest.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Tests for yaml wrapper.
+ *
+ * @author Niklas Laxström
+ * @license GPL-2.0-or-later
+ */
+
+class TranslateYamlTest extends MediaWikiTestCase {
+ protected function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( [
+ 'wgTranslateYamlLibrary' => 'phpyaml',
+ ] );
+ }
+
+ /**
+ * TODO: test other drivers too.
+ * @requires function yaml_parse
+ * @dataProvider provideTestLoadString
+ */
+ public function testLoadStringPhpyaml( $input, $expected, $comment ) {
+ $output = TranslateYaml::loadString( $input );
+ $this->assertEquals( $expected, $output, $comment );
+ }
+
+ public function provideTestLoadString() {
+ $tests = [];
+ $tests[] = [
+ 'a: b',
+ [ 'a' => 'b' ],
+ 'Simple key-value'
+ ];
+
+ $tests[] = [
+ 'a: !php/object "O:8:\"stdClass\":1:{s:1:\"a\";s:1:\"b\";}"',
+ [ 'a' => 'O:8:"stdClass":1:{s:1:"a";s:1:"b";}' ],
+ 'PHP objects must not be unserialized'
+ ];
+
+ return $tests;
+ }
+
+ /**
+ * Tests workaround for https://bugs.php.net/bug.php?id=76309
+ * @requires function yaml_emit
+ */
+ public function testBug76309() {
+ $input = [
+ 'a' => '2.',
+ 'b' => '22222222222222222222222222222222222222222222222222222222222222.',
+ 'c' => 2.0,
+ 'd' => "2.0"
+ ];
+
+ $expected = <<<YAML
+---
+a: "2."
+b: "22222222222222222222222222222222222222222222222222222222222222."
+c: 2.000000
+d: "2.0"
+...
+
+YAML;
+
+ $output = TranslateYaml::dump( $input );
+ $this->assertEquals( $expected, $output, "Floaty strings outputted as strings" );
+ $parsed = TranslateYaml::loadString( $output );
+ $this->assertEquals( $input, $parsed, "Floaty strings roundtrip" );
+ }
+}