public function testShouldAllowAddValueToAlreadyArray() { $values = ['aNamespace' => ['aKey' => ['aVal']]]; $obj = new ValueTest(); \Makasim\Yadm\set_object_values($obj, $values); $obj->addValue('aNamespace.aKey', 'aVal'); $this->assertSame(['aVal', 'aVal'], $obj->getValue('aNamespace.aKey')); $this->assertSame(['aNamespace' => ['aKey' => ['aVal', 'aVal']]], \Makasim\Yadm\get_object_values($obj)); $this->assertSame(['aNamespace' => ['aKey' => ['aVal', 'aVal']]], \Makasim\Yadm\get_object_changed_values($obj)); }
public function testShouldAllowAddDateValueToArrayAndConvertToISO() { $now = new \DateTime('now'); $timestamp = (int) $now->format('U'); $iso = $now->format(DATE_ISO8601); $obj = new CastTest(); $obj->addValue('aNamespace.aKey', $now); $this->assertSame([['unix' => $timestamp, 'iso' => $iso]], $obj->getValue('aNamespace.aKey')); $this->assertSame(['aNamespace' => ['aKey' => [['unix' => $timestamp, 'iso' => $iso]]]], \Makasim\Yadm\get_object_values($obj)); $this->assertSame(['aNamespace' => ['aKey' => [['unix' => $timestamp, 'iso' => $iso]]]], \Makasim\Yadm\get_object_changed_values($obj)); }
public function testShouldNotReflectChangesIfObjectWasCloned() { $values = ['aName' => ['aKey' => ['aSubName' => ['aSubKey' => 'aFooVal']]]]; $obj = new ObjectTest(); \Makasim\Yadm\set_object_values($obj, $values); //guard $this->assertEmpty(\Makasim\Yadm\get_object_changed_values($obj)); /** @var SubObjectTest $subObj */ $subObj = $obj->getObject('aName.aKey', SubObjectTest::class); //guard $this->assertInstanceOf(SubObjectTest::class, $subObj); $clonedSubObj = \Makasim\Yadm\clone_object($subObj); $clonedSubObj->setValue('self.aSubKeyFoo', 'aBarVal'); $this->assertEquals(['aName' => ['aKey' => ['aSubName' => ['aSubKey' => 'aFooVal']]]], \Makasim\Yadm\get_object_values($obj)); }