diff options
Diffstat (limited to 'lib/fabpot-yaml/test/sfYamlParserTest.php')
-rw-r--r-- | lib/fabpot-yaml/test/sfYamlParserTest.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/fabpot-yaml/test/sfYamlParserTest.php b/lib/fabpot-yaml/test/sfYamlParserTest.php new file mode 100644 index 0000000..e17f023 --- /dev/null +++ b/lib/fabpot-yaml/test/sfYamlParserTest.php @@ -0,0 +1,91 @@ +<?php + +/* + * This file is part of the symfony package. + * (c) Fabien Potencier <fabien.potencier@symfony-project.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once(dirname(__FILE__).'/lime/lime.php'); +require_once(dirname(__FILE__).'/../lib/sfYaml.php'); +require_once(dirname(__FILE__).'/../lib/sfYamlParser.php'); + +sfYaml::setSpecVersion('1.1'); + +$t = new lime_test(153); + +$parser = new sfYamlParser(); + +$path = dirname(__FILE__).'/fixtures'; +$files = $parser->parse(file_get_contents($path.'/index.yml')); +foreach ($files as $file) +{ + $t->diag($file); + + $yamls = file_get_contents($path.'/'.$file.'.yml'); + + // split YAMLs documents + foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) + { + if (!$yaml) + { + continue; + } + + $test = $parser->parse($yaml); + if (isset($test['todo']) && $test['todo']) + { + $t->todo($test['test']); + } + else + { + $expected = var_export(eval('return '.trim($test['php']).';'), true); + + $t->is(var_export($parser->parse($test['yaml']), true), $expected, $test['test']); + } + } +} + +// test tabs in YAML +$yamls = array( + "foo:\n bar", + "foo:\n bar", + "foo:\n bar", + "foo:\n bar", +); + +foreach ($yamls as $yaml) +{ + try + { + $content = $parser->parse($yaml); + $t->fail('YAML files must not contain tabs'); + } + catch (InvalidArgumentException $e) + { + $t->pass('YAML files must not contain tabs'); + } +} + +$yaml = <<<EOF +--- %YAML:1.0 +foo +... +EOF; + +$t->is('foo', $parser->parse($yaml)); + +// objects +$t->diag('Objects support'); +class A +{ + public $a = 'foo'; +} +$a = array('foo' => new A(), 'bar' => 1); +$t->is($parser->parse(<<<EOF +foo: !!php/object:O:1:"A":1:{s:1:"a";s:3:"foo";} +bar: 1 +EOF +), $a, '->parse() is able to dump objects'); |