Example #1
0
 public function testCreate()
 {
     $props = new Props(['a' => 5, 'b' => 1000, 'c' => 'c']);
     $props->computed('sum', function ($props) {
         return $props->a + $props->b;
     });
     $this->assertEquals(['a', 'b', 'c', 'sum'], $props->keys());
     $clone1 = $props->create(['a', 'sum'], ['extra' => 'extra_value']);
     $this->assertFalse($clone1->immutable());
     $this->assertEquals(['extra', 'a', 'sum'], $clone1->keys());
     $clone1->computed('b', function ($props) {
         return $props->a * 100;
     });
     $this->assertEquals(['extra', 'a', 'sum', 'b'], $clone1->keys());
     $this->assertEquals(500, $clone1->b);
     $this->assertEquals(505, $clone1->sum);
     $this->assertException(function () use($props) {
         $props->create(['a', 'b'], ['a' => 3]);
     }, 'Ra\\PropExistsException');
 }