class YamlPeclTest

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php \Drupal\Tests\Component\Serialization\YamlPeclTest
  2. 8.9.x core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php \Drupal\Tests\Component\Serialization\YamlPeclTest
  3. 10 core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php \Drupal\Tests\Component\Serialization\YamlPeclTest

Tests the YamlPecl serialization implementation.

@group Drupal @group Serialization @coversDefaultClass \Drupal\Component\Serialization\YamlPecl @requires extension yaml

Hierarchy

  • class \Drupal\Tests\Component\Serialization\YamlTestBase extends \PHPUnit\Framework\TestCase
    • class \Drupal\Tests\Component\Serialization\YamlPeclTest extends \Drupal\Tests\Component\Serialization\YamlTestBase

Expanded class hierarchy of YamlPeclTest

File

core/tests/Drupal/Tests/Component/Serialization/YamlPeclTest.php, line 18

Namespace

Drupal\Tests\Component\Serialization
View source
class YamlPeclTest extends YamlTestBase {
    
    /**
     * Tests encoding and decoding basic data structures.
     *
     * @covers ::encode
     * @covers ::decode
     * @dataProvider providerEncodeDecodeTests
     */
    public function testEncodeDecode(array $data) : void {
        $this->assertEquals($data, YamlPecl::decode(YamlPecl::encode($data)));
    }
    
    /**
     * Ensures that php object support is disabled.
     */
    public function testObjectSupportDisabled() : void {
        $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) : void {
        $this->assertEquals($data, YamlPecl::decode($string));
    }
    
    /**
     * Tests our encode settings.
     *
     * @covers ::encode
     */
    public function testEncode() : void {
        // cSpell:disable
        $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',
            ],
        ]));
        // cSpell:enable
    }
    
    /**
     * 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) : void {
        $this->assertEquals($expected, YamlPecl::applyBooleanCallbacks($string, 'bool', NULL));
    }
    
    /**
     * @covers ::getFileExtension
     */
    public function testGetFileExtension() : void {
        $this->assertEquals('yml', YamlPecl::getFileExtension());
    }
    
    /**
     * Tests that invalid YAML throws an exception.
     *
     * @covers ::errorHandler
     */
    public function testError() : void {
        $this->expectException(InvalidDataTypeException::class);
        YamlPecl::decode('foo: [ads');
    }

}

Members

Title Sort descending Modifiers Object type Summary
YamlPeclTest::testApplyBooleanCallbacks public function Tests YAML boolean callback.
YamlPeclTest::testDecode public function Tests decoding YAML node anchors.
YamlPeclTest::testEncode public function Tests our encode settings.
YamlPeclTest::testEncodeDecode public function Tests encoding and decoding basic data structures.
YamlPeclTest::testError public function Tests that invalid YAML throws an exception.
YamlPeclTest::testGetFileExtension public function @covers ::getFileExtension
YamlPeclTest::testObjectSupportDisabled public function Ensures that php object support is disabled.
YamlTestBase::providerBoolTest public static function Tests different boolean serialization and deserialization.
YamlTestBase::providerDecodeTests public static function Some data that should be able to be deserialized.
YamlTestBase::providerEncodeDecodeTests public static function Some data that should be able to be serialized.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.