X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fmerry;a=blobdiff_plain;f=tests%2Fmerry%2FContainerTest.php;fp=tests%2Fmerry%2FContainerTest.php;h=17878b7dc46f8a400d69b3b49e780d92f5481868;hp=0000000000000000000000000000000000000000;hb=c5cc1f0cf7b1b7665e7e9d5745855066527605e6;hpb=efc2af3c944d9c1180f1b503a664695ef10cf6f2 diff --git a/tests/merry/ContainerTest.php b/tests/merry/ContainerTest.php new file mode 100644 index 0000000..17878b7 --- /dev/null +++ b/tests/merry/ContainerTest.php @@ -0,0 +1,125 @@ + "bar", "bar" => "foo"]; + $object = new Container($config); + $this->assertEquals($config, $object->toArray()); + $this->assertEquals("bar", $object->foo); + $this->assertEquals("foo", $object->bar); + $this->assertTrue(isset($object->foo)); + $this->assertFalse(isset($object->foobar)); + unset($object->bar); + $this->assertFalse(isset($object->bar)); + } + + public function testBasicOffset() { + $config = ["foo" => "bar", "bar" => "foo"]; + $object = new Container($config); + $this->assertEquals("bar", $object["foo"]); + $this->assertEquals("foo", $object["bar"]); + $this->assertTrue(isset($object["foo"])); + $this->assertFalse(isset($object["foobar"])); + unset($object["bar"]); + $this->assertFalse(isset($object["bar"])); + } + + public function testSetArray() { + $config = ["foo" => "bar", "arr" => [1,2,3]]; + $object = new Container($config); + $object["foo"] = [$object->foo, "baz"]; + $object["arr"][] = 4; + + $this->assertEquals(["bar", "baz"], $object["foo"]->toArray()); + $this->assertEquals([1,2,3,4], $object["arr"]->toArray()); + + $this->assertEquals(["foo"=>["bar","baz"], "arr"=>[1,2,3,4]], $object->toArray()); + } + + public function testApply() { + $config = [ + "level1" => [ + "level2" => [ + "level3" => "123" + ], + "level2-1" => [ + "level3-1" => "321" + ] + ] + ]; + $object = new Container($config); + $this->assertEquals("123", $object->level1["level2"]->level3); + $reverse = function ($v){return strrev($v);}; + $object->apply([ + "level1" => [ + "level2" => [ + "level3" => $reverse + ], + "level2-1" => [ + "level3-1" => $reverse + ] + ] + ]); + $compare = [ + "level1" => [ + "level2" => [ + "level3" => "321" + ], + "level2-1" => [ + "level3-1" => "123" + ] + ] + ]; + $this->assertEquals($compare, $object->toArray()); + + $object->apply(function() { + return null; + }); + $this->assertEquals(["level1" => null], $object->toArray()); + } + + public function testIterator() { + $config = [ + "level1-0" => [ + "level2-0" => "1-0.2-0", + "level2-1" => "1-0.2-1", + "level2-2" => [ + "level3" => "1-0.2-2.3" + ] + ], + "level1-1" => [ + 1,2,3 + ] + ]; + $object = new Container($config); + $array = []; + foreach (new \RecursiveIteratorIterator($object) as $key => $val) { + $array[$key] = $val; + } + $compare = [ + 'level2-0' => '1-0.2-0', + 'level2-1' => '1-0.2-1', + 'level3' => '1-0.2-2.3', + 1, 2, 3 + ]; + $this->assertEquals($compare, $array); + } + + public function testJsonSerialize() { + $container = new Container; + $container->foo = "bar"; + $container->bar->foo = "bar"; + $this->assertJsonStringEqualsJsonString( + '{"foo": "bar", "bar": {"foo": "bar"}}', + json_encode($container) + ); + } +}