Chris@0: assertEquals('gomjabbar', $expanded['env-test']); Chris@0: $this->assertEquals('Frank Herbert 1965', $expanded['book']['copyright']); Chris@0: $this->assertEquals('Paul Atreides', $expanded['book']['protaganist']); Chris@0: $this->assertEquals('Dune by Frank Herbert', $expanded['summary']); Chris@0: $this->assertEquals('${book.media.1}, hardcover', $expanded['available-products']); Chris@0: $this->assertEquals('Dune', $expanded['product-name']); Chris@0: $this->assertEquals(Yaml::dump($array['inline-array'], 0), $expanded['expand-array']); Chris@0: Chris@0: $expanded = Expander::expandArrayProperties($array, $reference_array); Chris@0: $this->assertEquals('Dune Messiah, and others.', $expanded['sequels']); Chris@0: $this->assertEquals('Dune Messiah', $expanded['book']['nested-reference']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests Expander::parse(). Chris@0: * Chris@0: * @param string $filename Chris@0: * @param array $reference_array Chris@0: * Chris@0: * @dataProvider providerYaml Chris@0: */ Chris@0: public function testParse($filename, $reference_array) Chris@0: { Chris@0: $yaml_string = file_get_contents(__DIR__ . "/../resources/$filename"); Chris@0: $expanded = Expander::parse($yaml_string); Chris@0: $this->assertEquals('Frank Herbert 1965', $expanded['book']['copyright']); Chris@0: $this->assertEquals('Paul Atreides', $expanded['book']['protaganist']); Chris@0: $this->assertEquals('Dune by Frank Herbert', $expanded['summary']); Chris@0: $this->assertEquals('${book.media.1}, hardcover', $expanded['available-products']); Chris@0: Chris@0: $expanded = Expander::parse($yaml_string, $reference_array); Chris@0: $this->assertEquals('Dune Messiah, and others.', $expanded['sequels']); Chris@0: $this->assertEquals('Dune Messiah', $expanded['book']['nested-reference']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @return array Chris@0: * An array of values to test. Chris@0: */ Chris@0: public function providerYaml() Chris@0: { Chris@0: return [ Chris@0: ['valid.yml', [ Chris@0: 'book' => [ Chris@0: 'sequel' => 'Dune Messiah' Chris@0: ] Chris@0: ]], Chris@0: ]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests Expander::expandProperty(). Chris@0: * Chris@0: * @dataProvider providerTestExpandProperty Chris@0: */ Chris@0: public function testExpandProperty($array, $property_name, $unexpanded_string, $expected) Chris@0: { Chris@0: $data = new Data($array); Chris@0: $expanded_value = Expander::expandProperty($property_name, $unexpanded_string, $data); Chris@0: Chris@0: $this->assertEquals($expected, $expanded_value); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @return array Chris@0: */ Chris@0: public function providerTestExpandProperty() Chris@0: { Chris@0: return [ Chris@0: [ ['author' => 'Frank Herbert'], 'author', '${author}', 'Frank Herbert' ], Chris@0: [ ['book' => ['author' => 'Frank Herbert' ]], 'book.author', '${book.author}', 'Frank Herbert' ], Chris@0: ]; Chris@0: } Chris@0: }