diff options
Diffstat (limited to 'vendor/chillerlan/php-settings-container/tests')
3 files changed, 176 insertions, 0 deletions
diff --git a/vendor/chillerlan/php-settings-container/tests/ContainerTest.php b/vendor/chillerlan/php-settings-container/tests/ContainerTest.php new file mode 100644 index 000000000..ddae538f3 --- /dev/null +++ b/vendor/chillerlan/php-settings-container/tests/ContainerTest.php @@ -0,0 +1,105 @@ +<?php +/** + * Class ContainerTraitTest + * + * @filesource ContainerTraitTest.php + * @created 28.08.2018 + * @package chillerlan\SettingsTest + * @author Smiley <[email protected]> + * @copyright 2018 Smiley + * @license MIT + */ + +namespace chillerlan\SettingsTest; + +use PHPUnit\Framework\TestCase; +use Exception, TypeError; + +class ContainerTraitTest extends TestCase{ + + public function testConstruct(){ + $container = new TestContainer([ + 'test1' => 'test1', + 'test2' => 'test2', + 'test3' => 'test3', + 'test4' => 'test4', + ]); + + $this->assertSame('test1', $container->test1); + $this->assertSame('test2', $container->test2); + $this->assertNull($container->test3); + $this->assertSame('test4', $container->test4); + + $this->assertSame('success', $container->testConstruct); + } + + public function testGet(){ + $container = new TestContainer; + + $this->assertSame('foo', $container->test1); + $this->assertNull($container->test2); + $this->assertNull($container->test3); + $this->assertNull($container->test4); + $this->assertNull($container->foo); + + // isset test + $this->assertTrue(isset($container->test1)); + $this->assertFalse(isset($container->test2)); + $this->assertFalse(isset($container->test3)); + $this->assertFalse(isset($container->test4)); + $this->assertFalse(isset($container->foo)); + + // custom getter + $container->test6 = 'foo'; + $this->assertSame(sha1('foo'), $container->test6); + // nullable/isset test + $container->test6 = null; + $this->assertFalse(isset($container->test6)); + $this->assertSame('null', $container->test6); + } + + public function testSet(){ + $container = new TestContainer; + $container->test1 = 'bar'; + $container->test2 = 'what'; + $container->test3 = 'nope'; + + $this->assertSame('bar', $container->test1); + $this->assertSame('what', $container->test2); + $this->assertNull($container->test3); + + // unset + unset($container->test1); + $this->assertFalse(isset($container->test1)); + + // custom setter + $container->test5 = 'bar'; + $this->assertSame('bar_test5', $container->test5); + } + + public function testToArray(){ + $container = new TestContainer(['test1' => 'no', 'test2' => true, 'testConstruct' => 'success']); + + $this->assertSame(['test1' => 'no', 'test2' => true, 'testConstruct' => 'success', 'test4' => null, 'test5' => null, 'test6' => null], $container->toArray()); + } + + public function testToJSON(){ + $container = (new TestContainer)->fromJSON('{"test1":"no","test2":true,"testConstruct":"success"}'); + + $expected = '{"test1":"no","test2":true,"testConstruct":"success","test4":null,"test5":null,"test6":null}'; + + $this->assertSame($expected, $container->toJSON()); + $this->assertSame($expected, (string)$container); + } + + public function testFromJsonException(){ + $this->expectException(Exception::class); + (new TestContainer)->fromJSON('-'); + + } + public function testFromJsonTypeError(){ + $this->expectException(TypeError::class); + (new TestContainer)->fromJSON('2'); + } + +} diff --git a/vendor/chillerlan/php-settings-container/tests/TestContainer.php b/vendor/chillerlan/php-settings-container/tests/TestContainer.php new file mode 100644 index 000000000..a35f75277 --- /dev/null +++ b/vendor/chillerlan/php-settings-container/tests/TestContainer.php @@ -0,0 +1,29 @@ +<?php +/** + * Class TestContainer + * + * @filesource TestContainer.php + * @created 28.08.2018 + * @package chillerlan\SettingsTest + * @author Smiley <[email protected]> + * @copyright 2018 Smiley + * @license MIT + */ + +namespace chillerlan\SettingsTest; + +use chillerlan\Settings\SettingsContainerAbstract; + +/** + * @property $test1 + * @property $test2 + * @property $test3 + * @property $test4 + * @property $test5 + * @property $test6 + */ +class TestContainer extends SettingsContainerAbstract{ + use TestOptionsTrait; + + private $test3 = 'what'; +} diff --git a/vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php b/vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php new file mode 100644 index 000000000..261f533ac --- /dev/null +++ b/vendor/chillerlan/php-settings-container/tests/TestOptionsTrait.php @@ -0,0 +1,42 @@ +<?php +/** + * Trait TestOptionsTrait + * + * @filesource TestOptionsTrait.php + * @created 28.08.2018 + * @package chillerlan\SettingsTest + * @author smiley <[email protected]> + * @copyright 2018 smiley + * @license MIT + */ + +namespace chillerlan\SettingsTest; + +trait TestOptionsTrait{ + + protected $test1 = 'foo'; + + protected $test2; + + protected $testConstruct; + + protected $test4; + + protected $test5; + + protected $test6; + + protected function TestOptionsTrait(){ + $this->testConstruct = 'success'; + } + + protected function set_test5($value){ + $this->test5 = $value.'_test5'; + } + + protected function get_test6(){ + return $this->test6 === null + ? 'null' + : sha1($this->test6); + } +} |