You are here

InlineTest.php in Loft Data Grids 7.2

File

vendor/symfony/yaml/Tests/InlineTest.php
View source
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\Yaml\Tests;

use PHPUnit\Framework\TestCase;
use Symfony\Component\Yaml\Inline;
class InlineTest extends TestCase {

  /**
   * @dataProvider getTestsForParse
   */
  public function testParse($yaml, $value) {
    $this
      ->assertSame($value, Inline::parse($yaml), sprintf('::parse() converts an inline YAML to a PHP structure (%s)', $yaml));
  }

  /**
   * @dataProvider getTestsForParseWithMapObjects
   */
  public function testParseWithMapObjects($yaml, $value) {
    $actual = Inline::parse($yaml, false, false, true);
    $this
      ->assertSame(serialize($value), serialize($actual));
  }

  /**
   * @dataProvider getTestsForDump
   */
  public function testDump($yaml, $value) {
    $this
      ->assertEquals($yaml, Inline::dump($value), sprintf('::dump() converts a PHP structure to an inline YAML (%s)', $yaml));
    $this
      ->assertSame($value, Inline::parse(Inline::dump($value)), 'check consistency');
  }
  public function testDumpNumericValueWithLocale() {
    $locale = setlocale(LC_NUMERIC, 0);
    if (false === $locale) {
      $this
        ->markTestSkipped('Your platform does not support locales.');
    }
    try {
      $requiredLocales = array(
        'fr_FR.UTF-8',
        'fr_FR.UTF8',
        'fr_FR.utf-8',
        'fr_FR.utf8',
        'French_France.1252',
      );
      if (false === setlocale(LC_NUMERIC, $requiredLocales)) {
        $this
          ->markTestSkipped('Could not set any of required locales: ' . implode(', ', $requiredLocales));
      }
      $this
        ->assertEquals('1.2', Inline::dump(1.2));
      $this
        ->assertContains('fr', strtolower(setlocale(LC_NUMERIC, 0)));
      setlocale(LC_NUMERIC, $locale);
    } catch (\Exception $e) {
      setlocale(LC_NUMERIC, $locale);
      throw $e;
    }
  }
  public function testHashStringsResemblingExponentialNumericsShouldNotBeChangedToINF() {
    $value = '686e444';
    $this
      ->assertSame($value, Inline::parse(Inline::dump($value)));
  }

  /**
   * @group legacy
   * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0
   */
  public function testParseScalarWithNonEscapedBlackslashShouldThrowException() {
    $this
      ->assertSame('Foo\\Var', Inline::parse('"Foo\\Var"'));
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   */
  public function testParseScalarWithNonEscapedBlackslashAtTheEndShouldThrowException() {
    Inline::parse('"Foo\\"');
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   */
  public function testParseScalarWithIncorrectlyQuotedStringShouldThrowException() {
    $value = "'don't do somthin' like that'";
    Inline::parse($value);
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   */
  public function testParseScalarWithIncorrectlyDoubleQuotedStringShouldThrowException() {
    $value = '"don"t do somthin" like that"';
    Inline::parse($value);
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   */
  public function testParseInvalidMappingKeyShouldThrowException() {
    $value = '{ "foo " bar": "bar" }';
    Inline::parse($value);
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   */
  public function testParseInvalidMappingShouldThrowException() {
    Inline::parse('[foo] bar');
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   */
  public function testParseInvalidSequenceShouldThrowException() {
    Inline::parse('{ foo: bar } bar');
  }
  public function testParseScalarWithCorrectlyQuotedStringShouldReturnString() {
    $value = "'don''t do somthin'' like that'";
    $expect = "don't do somthin' like that";
    $this
      ->assertSame($expect, Inline::parseScalar($value));
  }

  /**
   * @dataProvider getDataForParseReferences
   */
  public function testParseReferences($yaml, $expected) {
    $this
      ->assertSame($expected, Inline::parse($yaml, false, false, false, array(
      'var' => 'var-value',
    )));
  }
  public function getDataForParseReferences() {
    return array(
      'scalar' => array(
        '*var',
        'var-value',
      ),
      'list' => array(
        '[ *var ]',
        array(
          'var-value',
        ),
      ),
      'list-in-list' => array(
        '[[ *var ]]',
        array(
          array(
            'var-value',
          ),
        ),
      ),
      'map-in-list' => array(
        '[ { key: *var } ]',
        array(
          array(
            'key' => 'var-value',
          ),
        ),
      ),
      'embedded-mapping-in-list' => array(
        '[ key: *var ]',
        array(
          array(
            'key' => 'var-value',
          ),
        ),
      ),
      'map' => array(
        '{ key: *var }',
        array(
          'key' => 'var-value',
        ),
      ),
      'list-in-map' => array(
        '{ key: [*var] }',
        array(
          'key' => array(
            'var-value',
          ),
        ),
      ),
      'map-in-map' => array(
        '{ foo: { bar: *var } }',
        array(
          'foo' => array(
            'bar' => 'var-value',
          ),
        ),
      ),
    );
  }
  public function testParseMapReferenceInSequence() {
    $foo = array(
      'a' => 'Steve',
      'b' => 'Clark',
      'c' => 'Brian',
    );
    $this
      ->assertSame(array(
      $foo,
    ), Inline::parse('[*foo]', false, false, false, array(
      'foo' => $foo,
    )));
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   * @expectedExceptionMessage A reference must contain at least one character.
   */
  public function testParseUnquotedAsterisk() {
    Inline::parse('{ foo: * }');
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   * @expectedExceptionMessage A reference must contain at least one character.
   */
  public function testParseUnquotedAsteriskFollowedByAComment() {
    Inline::parse('{ foo: * #foo }');
  }

  /**
   * @group legacy
   * @expectedDeprecation Not quoting the scalar "@foo " starting with "@" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.
   * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0
   */
  public function testParseUnquotedScalarStartingWithReservedAtIndicator() {
    Inline::parse('{ foo: @foo }');
  }

  /**
   * @group legacy
   * @expectedDeprecation Not quoting the scalar "`foo " starting with "`" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.
   * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0
   */
  public function testParseUnquotedScalarStartingWithReservedBacktickIndicator() {
    Inline::parse('{ foo: `foo }');
  }

  /**
   * @group legacy
   * @expectedDeprecation Not quoting the scalar "|foo " starting with "|" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.
   * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0
   */
  public function testParseUnquotedScalarStartingWithLiteralStyleIndicator() {
    Inline::parse('{ foo: |foo }');
  }

  /**
   * @group legacy
   * @expectedDeprecation Not quoting the scalar ">foo " starting with ">" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.
   * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0
   */
  public function testParseUnquotedScalarStartingWithFoldedStyleIndicator() {
    Inline::parse('{ foo: >foo }');
  }
  public function getScalarIndicators() {
    return array(
      array(
        '|',
      ),
      array(
        '>',
      ),
    );
  }

  /**
   * @dataProvider getDataForIsHash
   */
  public function testIsHash($array, $expected) {
    $this
      ->assertSame($expected, Inline::isHash($array));
  }
  public function getDataForIsHash() {
    return array(
      array(
        array(),
        false,
      ),
      array(
        array(
          1,
          2,
          3,
        ),
        false,
      ),
      array(
        array(
          2 => 1,
          1 => 2,
          0 => 3,
        ),
        true,
      ),
      array(
        array(
          'foo' => 1,
          'bar' => 2,
        ),
        true,
      ),
    );
  }
  public function getTestsForParse() {
    return array(
      array(
        '',
        '',
      ),
      array(
        'null',
        null,
      ),
      array(
        'false',
        false,
      ),
      array(
        'true',
        true,
      ),
      array(
        '12',
        12,
      ),
      array(
        '-12',
        -12,
      ),
      array(
        '"quoted string"',
        'quoted string',
      ),
      array(
        "'quoted string'",
        'quoted string',
      ),
      array(
        '12.30e+02',
        1230.0,
      ),
      array(
        '0x4D2',
        0x4d2,
      ),
      array(
        '02333',
        02333,
      ),
      array(
        '.Inf',
        -log(0),
      ),
      array(
        '-.Inf',
        log(0),
      ),
      array(
        "'686e444'",
        '686e444',
      ),
      array(
        '686e444',
        \INF,
      ),
      array(
        '123456789123456789123456789123456789',
        '123456789123456789123456789123456789',
      ),
      array(
        '"foo\\r\\nbar"',
        "foo\r\nbar",
      ),
      array(
        "'foo#bar'",
        'foo#bar',
      ),
      array(
        "'foo # bar'",
        'foo # bar',
      ),
      array(
        "'#cfcfcf'",
        '#cfcfcf',
      ),
      array(
        '::form_base.html.twig',
        '::form_base.html.twig',
      ),
      // Pre-YAML-1.2 booleans
      array(
        "'y'",
        'y',
      ),
      array(
        "'n'",
        'n',
      ),
      array(
        "'yes'",
        'yes',
      ),
      array(
        "'no'",
        'no',
      ),
      array(
        "'on'",
        'on',
      ),
      array(
        "'off'",
        'off',
      ),
      array(
        '2007-10-30',
        gmmktime(0, 0, 0, 10, 30, 2007),
      ),
      array(
        '2007-10-30T02:59:43Z',
        gmmktime(2, 59, 43, 10, 30, 2007),
      ),
      array(
        '2007-10-30 02:59:43 Z',
        gmmktime(2, 59, 43, 10, 30, 2007),
      ),
      array(
        '1960-10-30 02:59:43 Z',
        gmmktime(2, 59, 43, 10, 30, 1960),
      ),
      array(
        '1730-10-30T02:59:43Z',
        gmmktime(2, 59, 43, 10, 30, 1730),
      ),
      array(
        '"a \\"string\\" with \'quoted strings inside\'"',
        'a "string" with \'quoted strings inside\'',
      ),
      array(
        "'a \"string\" with ''quoted strings inside'''",
        'a "string" with \'quoted strings inside\'',
      ),
      // sequences
      // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon
      array(
        '[foo, http://urls.are/no/mappings, false, null, 12]',
        array(
          'foo',
          'http://urls.are/no/mappings',
          false,
          null,
          12,
        ),
      ),
      array(
        '[  foo  ,   bar , false  ,  null     ,  12  ]',
        array(
          'foo',
          'bar',
          false,
          null,
          12,
        ),
      ),
      array(
        '[\'foo,bar\', \'foo bar\']',
        array(
          'foo,bar',
          'foo bar',
        ),
      ),
      // mappings
      array(
        '{foo:bar,bar:foo,false:false,null:null,integer:12}',
        array(
          'foo' => 'bar',
          'bar' => 'foo',
          'false' => false,
          'null' => null,
          'integer' => 12,
        ),
      ),
      array(
        '{ foo  : bar, bar : foo,  false  :   false,  null  :   null,  integer :  12  }',
        array(
          'foo' => 'bar',
          'bar' => 'foo',
          'false' => false,
          'null' => null,
          'integer' => 12,
        ),
      ),
      array(
        '{foo: \'bar\', bar: \'foo: bar\'}',
        array(
          'foo' => 'bar',
          'bar' => 'foo: bar',
        ),
      ),
      array(
        '{\'foo\': \'bar\', "bar": \'foo: bar\'}',
        array(
          'foo' => 'bar',
          'bar' => 'foo: bar',
        ),
      ),
      array(
        '{\'foo\'\'\': \'bar\', "bar\\"": \'foo: bar\'}',
        array(
          'foo\'' => 'bar',
          'bar"' => 'foo: bar',
        ),
      ),
      array(
        '{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}',
        array(
          'foo: ' => 'bar',
          'bar: ' => 'foo: bar',
        ),
      ),
      // nested sequences and mappings
      array(
        '[foo, [bar, foo]]',
        array(
          'foo',
          array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[foo, {bar: foo}]',
        array(
          'foo',
          array(
            'bar' => 'foo',
          ),
        ),
      ),
      array(
        '{ foo: {bar: foo} }',
        array(
          'foo' => array(
            'bar' => 'foo',
          ),
        ),
      ),
      array(
        '{ foo: [bar, foo] }',
        array(
          'foo' => array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[  foo, [  bar, foo  ]  ]',
        array(
          'foo',
          array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[{ foo: {bar: foo} }]',
        array(
          array(
            'foo' => array(
              'bar' => 'foo',
            ),
          ),
        ),
      ),
      array(
        '[foo, [bar, [foo, [bar, foo]], foo]]',
        array(
          'foo',
          array(
            'bar',
            array(
              'foo',
              array(
                'bar',
                'foo',
              ),
            ),
            'foo',
          ),
        ),
      ),
      array(
        '[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]',
        array(
          'foo',
          array(
            'bar' => 'foo',
            'foo' => array(
              'foo',
              array(
                'bar' => 'foo',
              ),
            ),
          ),
          array(
            'foo',
            array(
              'bar' => 'foo',
            ),
          ),
        ),
      ),
      array(
        '[foo, bar: { foo: bar }]',
        array(
          'foo',
          '1' => array(
            'bar' => array(
              'foo' => 'bar',
            ),
          ),
        ),
      ),
      array(
        '[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']',
        array(
          'foo',
          '@foo.baz',
          array(
            '%foo%' => 'foo is %foo%',
            'bar' => '%foo%',
          ),
          true,
          '@service_container',
        ),
      ),
    );
  }
  public function getTestsForParseWithMapObjects() {
    return array(
      array(
        '',
        '',
      ),
      array(
        'null',
        null,
      ),
      array(
        'false',
        false,
      ),
      array(
        'true',
        true,
      ),
      array(
        '12',
        12,
      ),
      array(
        '-12',
        -12,
      ),
      array(
        '"quoted string"',
        'quoted string',
      ),
      array(
        "'quoted string'",
        'quoted string',
      ),
      array(
        '12.30e+02',
        1230.0,
      ),
      array(
        '0x4D2',
        0x4d2,
      ),
      array(
        '02333',
        02333,
      ),
      array(
        '.Inf',
        -log(0),
      ),
      array(
        '-.Inf',
        log(0),
      ),
      array(
        "'686e444'",
        '686e444',
      ),
      array(
        '686e444',
        \INF,
      ),
      array(
        '123456789123456789123456789123456789',
        '123456789123456789123456789123456789',
      ),
      array(
        '"foo\\r\\nbar"',
        "foo\r\nbar",
      ),
      array(
        "'foo#bar'",
        'foo#bar',
      ),
      array(
        "'foo # bar'",
        'foo # bar',
      ),
      array(
        "'#cfcfcf'",
        '#cfcfcf',
      ),
      array(
        '::form_base.html.twig',
        '::form_base.html.twig',
      ),
      array(
        '2007-10-30',
        gmmktime(0, 0, 0, 10, 30, 2007),
      ),
      array(
        '2007-10-30T02:59:43Z',
        gmmktime(2, 59, 43, 10, 30, 2007),
      ),
      array(
        '2007-10-30 02:59:43 Z',
        gmmktime(2, 59, 43, 10, 30, 2007),
      ),
      array(
        '1960-10-30 02:59:43 Z',
        gmmktime(2, 59, 43, 10, 30, 1960),
      ),
      array(
        '1730-10-30T02:59:43Z',
        gmmktime(2, 59, 43, 10, 30, 1730),
      ),
      array(
        '"a \\"string\\" with \'quoted strings inside\'"',
        'a "string" with \'quoted strings inside\'',
      ),
      array(
        "'a \"string\" with ''quoted strings inside'''",
        'a "string" with \'quoted strings inside\'',
      ),
      // sequences
      // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon
      array(
        '[foo, http://urls.are/no/mappings, false, null, 12]',
        array(
          'foo',
          'http://urls.are/no/mappings',
          false,
          null,
          12,
        ),
      ),
      array(
        '[  foo  ,   bar , false  ,  null     ,  12  ]',
        array(
          'foo',
          'bar',
          false,
          null,
          12,
        ),
      ),
      array(
        '[\'foo,bar\', \'foo bar\']',
        array(
          'foo,bar',
          'foo bar',
        ),
      ),
      // mappings
      array(
        '{foo:bar,bar:foo,false:false,null:null,integer:12}',
        (object) array(
          'foo' => 'bar',
          'bar' => 'foo',
          'false' => false,
          'null' => null,
          'integer' => 12,
        ),
      ),
      array(
        '{ foo  : bar, bar : foo,  false  :   false,  null  :   null,  integer :  12  }',
        (object) array(
          'foo' => 'bar',
          'bar' => 'foo',
          'false' => false,
          'null' => null,
          'integer' => 12,
        ),
      ),
      array(
        '{foo: \'bar\', bar: \'foo: bar\'}',
        (object) array(
          'foo' => 'bar',
          'bar' => 'foo: bar',
        ),
      ),
      array(
        '{\'foo\': \'bar\', "bar": \'foo: bar\'}',
        (object) array(
          'foo' => 'bar',
          'bar' => 'foo: bar',
        ),
      ),
      array(
        '{\'foo\'\'\': \'bar\', "bar\\"": \'foo: bar\'}',
        (object) array(
          'foo\'' => 'bar',
          'bar"' => 'foo: bar',
        ),
      ),
      array(
        '{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}',
        (object) array(
          'foo: ' => 'bar',
          'bar: ' => 'foo: bar',
        ),
      ),
      // nested sequences and mappings
      array(
        '[foo, [bar, foo]]',
        array(
          'foo',
          array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[foo, {bar: foo}]',
        array(
          'foo',
          (object) array(
            'bar' => 'foo',
          ),
        ),
      ),
      array(
        '{ foo: {bar: foo} }',
        (object) array(
          'foo' => (object) array(
            'bar' => 'foo',
          ),
        ),
      ),
      array(
        '{ foo: [bar, foo] }',
        (object) array(
          'foo' => array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[  foo, [  bar, foo  ]  ]',
        array(
          'foo',
          array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[{ foo: {bar: foo} }]',
        array(
          (object) array(
            'foo' => (object) array(
              'bar' => 'foo',
            ),
          ),
        ),
      ),
      array(
        '[foo, [bar, [foo, [bar, foo]], foo]]',
        array(
          'foo',
          array(
            'bar',
            array(
              'foo',
              array(
                'bar',
                'foo',
              ),
            ),
            'foo',
          ),
        ),
      ),
      array(
        '[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]',
        array(
          'foo',
          (object) array(
            'bar' => 'foo',
            'foo' => array(
              'foo',
              (object) array(
                'bar' => 'foo',
              ),
            ),
          ),
          array(
            'foo',
            (object) array(
              'bar' => 'foo',
            ),
          ),
        ),
      ),
      array(
        '[foo, bar: { foo: bar }]',
        array(
          'foo',
          '1' => (object) array(
            'bar' => (object) array(
              'foo' => 'bar',
            ),
          ),
        ),
      ),
      array(
        '[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']',
        array(
          'foo',
          '@foo.baz',
          (object) array(
            '%foo%' => 'foo is %foo%',
            'bar' => '%foo%',
          ),
          true,
          '@service_container',
        ),
      ),
      array(
        '{}',
        new \stdClass(),
      ),
      array(
        '{ foo  : bar, bar : {}  }',
        (object) array(
          'foo' => 'bar',
          'bar' => new \stdClass(),
        ),
      ),
      array(
        '{ foo  : [], bar : {}  }',
        (object) array(
          'foo' => array(),
          'bar' => new \stdClass(),
        ),
      ),
      array(
        '{foo: \'bar\', bar: {} }',
        (object) array(
          'foo' => 'bar',
          'bar' => new \stdClass(),
        ),
      ),
      array(
        '{\'foo\': \'bar\', "bar": {}}',
        (object) array(
          'foo' => 'bar',
          'bar' => new \stdClass(),
        ),
      ),
      array(
        '{\'foo\': \'bar\', "bar": \'{}\'}',
        (object) array(
          'foo' => 'bar',
          'bar' => '{}',
        ),
      ),
      array(
        '[foo, [{}, {}]]',
        array(
          'foo',
          array(
            new \stdClass(),
            new \stdClass(),
          ),
        ),
      ),
      array(
        '[foo, [[], {}]]',
        array(
          'foo',
          array(
            array(),
            new \stdClass(),
          ),
        ),
      ),
      array(
        '[foo, [[{}, {}], {}]]',
        array(
          'foo',
          array(
            array(
              new \stdClass(),
              new \stdClass(),
            ),
            new \stdClass(),
          ),
        ),
      ),
      array(
        '[foo, {bar: {}}]',
        array(
          'foo',
          '1' => (object) array(
            'bar' => new \stdClass(),
          ),
        ),
      ),
    );
  }
  public function getTestsForDump() {
    return array(
      array(
        'null',
        null,
      ),
      array(
        'false',
        false,
      ),
      array(
        'true',
        true,
      ),
      array(
        '12',
        12,
      ),
      array(
        "'quoted string'",
        'quoted string',
      ),
      array(
        '!!float 1230',
        1230.0,
      ),
      array(
        '1234',
        0x4d2,
      ),
      array(
        '1243',
        02333,
      ),
      array(
        '.Inf',
        -log(0),
      ),
      array(
        '-.Inf',
        log(0),
      ),
      array(
        "'686e444'",
        '686e444',
      ),
      array(
        '"foo\\r\\nbar"',
        "foo\r\nbar",
      ),
      array(
        "'foo#bar'",
        'foo#bar',
      ),
      array(
        "'foo # bar'",
        'foo # bar',
      ),
      array(
        "'#cfcfcf'",
        '#cfcfcf',
      ),
      array(
        "'a \"string\" with ''quoted strings inside'''",
        'a "string" with \'quoted strings inside\'',
      ),
      array(
        "'-dash'",
        '-dash',
      ),
      array(
        "'-'",
        '-',
      ),
      // Pre-YAML-1.2 booleans
      array(
        "'y'",
        'y',
      ),
      array(
        "'n'",
        'n',
      ),
      array(
        "'yes'",
        'yes',
      ),
      array(
        "'no'",
        'no',
      ),
      array(
        "'on'",
        'on',
      ),
      array(
        "'off'",
        'off',
      ),
      // sequences
      array(
        '[foo, bar, false, null, 12]',
        array(
          'foo',
          'bar',
          false,
          null,
          12,
        ),
      ),
      array(
        '[\'foo,bar\', \'foo bar\']',
        array(
          'foo,bar',
          'foo bar',
        ),
      ),
      // mappings
      array(
        '{ foo: bar, bar: foo, \'false\': false, \'null\': null, integer: 12 }',
        array(
          'foo' => 'bar',
          'bar' => 'foo',
          'false' => false,
          'null' => null,
          'integer' => 12,
        ),
      ),
      array(
        '{ foo: bar, bar: \'foo: bar\' }',
        array(
          'foo' => 'bar',
          'bar' => 'foo: bar',
        ),
      ),
      // nested sequences and mappings
      array(
        '[foo, [bar, foo]]',
        array(
          'foo',
          array(
            'bar',
            'foo',
          ),
        ),
      ),
      array(
        '[foo, [bar, [foo, [bar, foo]], foo]]',
        array(
          'foo',
          array(
            'bar',
            array(
              'foo',
              array(
                'bar',
                'foo',
              ),
            ),
            'foo',
          ),
        ),
      ),
      array(
        '{ foo: { bar: foo } }',
        array(
          'foo' => array(
            'bar' => 'foo',
          ),
        ),
      ),
      array(
        '[foo, { bar: foo }]',
        array(
          'foo',
          array(
            'bar' => 'foo',
          ),
        ),
      ),
      array(
        '[foo, { bar: foo, foo: [foo, { bar: foo }] }, [foo, { bar: foo }]]',
        array(
          'foo',
          array(
            'bar' => 'foo',
            'foo' => array(
              'foo',
              array(
                'bar' => 'foo',
              ),
            ),
          ),
          array(
            'foo',
            array(
              'bar' => 'foo',
            ),
          ),
        ),
      ),
      array(
        '[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']',
        array(
          'foo',
          '@foo.baz',
          array(
            '%foo%' => 'foo is %foo%',
            'bar' => '%foo%',
          ),
          true,
          '@service_container',
        ),
      ),
      array(
        '{ foo: { bar: { 1: 2, baz: 3 } } }',
        array(
          'foo' => array(
            'bar' => array(
              1 => 2,
              'baz' => 3,
            ),
          ),
        ),
      ),
    );
  }

  /**
   * @expectedException \Symfony\Component\Yaml\Exception\ParseException
   * @expectedExceptionMessage Malformed inline YAML string: {this, is not, supported}.
   */
  public function testNotSupportedMissingValue() {
    Inline::parse('{this, is not, supported}');
  }
  public function testVeryLongQuotedStrings() {
    $longStringWithQuotes = str_repeat("x\r\n\\\"x\"x", 1000);
    $yamlString = Inline::dump(array(
      'longStringWithQuotes' => $longStringWithQuotes,
    ));
    $arrayFromYaml = Inline::parse($yamlString);
    $this
      ->assertEquals($longStringWithQuotes, $arrayFromYaml['longStringWithQuotes']);
  }
  public function testBooleanMappingKeysAreConvertedToStrings() {
    $this
      ->assertSame(array(
      'false' => 'foo',
    ), Inline::parse('{false: foo}'));
    $this
      ->assertSame(array(
      'true' => 'foo',
    ), Inline::parse('{true: foo}'));
  }
  public function testTheEmptyStringIsAValidMappingKey() {
    $this
      ->assertSame(array(
      '' => 'foo',
    ), Inline::parse('{ "": foo }'));
  }

}

Classes

Namesort descending Description
InlineTest