annotate core/tests/Drupal/Tests/Component/Serialization/YamlSymfonyTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\Component\Serialization;
Chris@0 4
Chris@0 5 use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
Chris@0 6 use Drupal\Component\Serialization\YamlSymfony;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Tests the YamlSymfony serialization implementation.
Chris@0 10 *
Chris@0 11 * @group Drupal
Chris@0 12 * @group Serialization
Chris@0 13 * @coversDefaultClass \Drupal\Component\Serialization\YamlSymfony
Chris@0 14 */
Chris@0 15 class YamlSymfonyTest extends YamlTestBase {
Chris@0 16
Chris@0 17 /**
Chris@0 18 * Tests encoding and decoding basic data structures.
Chris@0 19 *
Chris@0 20 * @covers ::encode
Chris@0 21 * @covers ::decode
Chris@0 22 * @dataProvider providerEncodeDecodeTests
Chris@0 23 */
Chris@0 24 public function testEncodeDecode($data) {
Chris@0 25 $this->assertEquals($data, YamlSymfony::decode(YamlSymfony::encode($data)));
Chris@0 26 }
Chris@0 27
Chris@0 28 /**
Chris@0 29 * Tests decoding YAML node anchors.
Chris@0 30 *
Chris@0 31 * @covers ::decode
Chris@0 32 * @dataProvider providerDecodeTests
Chris@0 33 */
Chris@0 34 public function testDecode($string, $data) {
Chris@0 35 $this->assertEquals($data, YamlSymfony::decode($string));
Chris@0 36 }
Chris@0 37
Chris@0 38 /**
Chris@0 39 * Tests our encode settings.
Chris@0 40 *
Chris@0 41 * @covers ::encode
Chris@0 42 */
Chris@0 43 public function testEncode() {
Chris@0 44 $this->assertEquals('foo:
Chris@0 45 bar: \'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis\'
Chris@0 46 ', YamlSymfony::encode(['foo' => ['bar' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis']]));
Chris@0 47 }
Chris@0 48
Chris@0 49 /**
Chris@0 50 * @covers ::getFileExtension
Chris@0 51 */
Chris@0 52 public function testGetFileExtension() {
Chris@0 53 $this->assertEquals('yml', YamlSymfony::getFileExtension());
Chris@0 54 }
Chris@0 55
Chris@0 56 /**
Chris@0 57 * Tests that invalid YAML throws an exception.
Chris@0 58 *
Chris@0 59 * @covers ::decode
Chris@0 60 */
Chris@0 61 public function testError() {
Chris@14 62 if (method_exists($this, 'expectException')) {
Chris@14 63 $this->expectException(InvalidDataTypeException::class);
Chris@14 64 }
Chris@14 65 else {
Chris@14 66 $this->setExpectedException(InvalidDataTypeException::class);
Chris@14 67 }
Chris@0 68 YamlSymfony::decode('foo: [ads');
Chris@0 69 }
Chris@0 70
Chris@0 71 /**
Chris@0 72 * Ensures that php object support is disabled.
Chris@0 73 *
Chris@0 74 * @covers ::encode
Chris@0 75 */
Chris@0 76 public function testObjectSupportDisabled() {
Chris@14 77 if (method_exists($this, 'expectException')) {
Chris@14 78 $this->expectException(InvalidDataTypeException::class);
Chris@14 79 $this->expectExceptionMessage('Object support when dumping a YAML file has been disabled.');
Chris@14 80 }
Chris@14 81 else {
Chris@14 82 $this->setExpectedException(InvalidDataTypeException::class, 'Object support when dumping a YAML file has been disabled.');
Chris@14 83 }
Chris@0 84 $object = new \stdClass();
Chris@0 85 $object->foo = 'bar';
Chris@0 86 YamlSymfony::encode([$object]);
Chris@0 87 }
Chris@0 88
Chris@0 89 }