Mercurial > hg > isophonics-drupal-site
diff core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,94 @@ +<?php + +namespace Drupal\Tests\Component\Serialization; + +use Drupal\Component\Serialization\Exception\InvalidDataTypeException; +use Drupal\Component\Serialization\YamlPecl; + +/** + * Tests the YamlPecl serialization implementation. + * + * @group Drupal + * @group Serialization + * @coversDefaultClass \Drupal\Component\Serialization\YamlPecl + * @requires extension yaml + */ +class YamlPeclTest extends YamlTestBase { + + /** + * Tests encoding and decoding basic data structures. + * + * @covers ::encode + * @covers ::decode + * @dataProvider providerEncodeDecodeTests + */ + public function testEncodeDecode($data) { + $this->assertEquals($data, YamlPecl::decode(YamlPecl::encode($data))); + } + + /** + * Ensures that php object support is disabled. + */ + public function testObjectSupportDisabled() { + $object = new \stdClass(); + $object->foo = 'bar'; + $this->assertEquals(['O:8:"stdClass":1:{s:3:"foo";s:3:"bar";}'], YamlPecl::decode(YamlPecl::encode([$object]))); + $this->assertEquals(0, ini_get('yaml.decode_php')); + } + + /** + * Tests decoding YAML node anchors. + * + * @covers ::decode + * @dataProvider providerDecodeTests + */ + public function testDecode($string, $data) { + $this->assertEquals($data, YamlPecl::decode($string)); + } + + /** + * Tests our encode settings. + * + * @covers ::encode + */ + public function testEncode() { + $this->assertEquals('--- +foo: + bar: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis +... +', YamlPecl::encode(['foo' => ['bar' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis']])); + } + + /** + * Tests YAML boolean callback. + * + * @param string $string + * String value for the YAML boolean. + * @param string|bool $expected + * The expected return value. + * + * @covers ::applyBooleanCallbacks + * @dataProvider providerBoolTest + */ + public function testApplyBooleanCallbacks($string, $expected) { + $this->assertEquals($expected, YamlPecl::applyBooleanCallbacks($string, 'bool', NULL)); + } + + /** + * @covers ::getFileExtension + */ + public function testGetFileExtension() { + $this->assertEquals('yml', YamlPecl::getFileExtension()); + } + + /** + * Tests that invalid YAML throws an exception. + * + * @covers ::errorHandler + */ + public function testError() { + $this->setExpectedException(InvalidDataTypeException::class); + YamlPecl::decode('foo: [ads'); + } + +}