62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\b\coll;
 | |
| 
 | |
| use nur\b\coll\impl\ItemView;
 | |
| use nur\t\TestCase;
 | |
| 
 | |
| class ArrayViewTest extends TestCase {
 | |
|   function testBasic() {
 | |
|     $array = [];
 | |
|     $v = new ArrayView($array);
 | |
|     self::assertFalse($v->has("x"));
 | |
|     $v["x"] = 2;
 | |
|     self::assertTrue($v->has("x"));
 | |
|     self::assertSame(2, $v["x"]);
 | |
|     self::assertSame(["x" => 2], $array);
 | |
|     $v->del("x");
 | |
|     self::assertFalse($v->has("x"));
 | |
|     self::assertSame([], $array);
 | |
| 
 | |
|     $array = [];
 | |
|     $v = new ArrayView($array, "sub");
 | |
|     self::assertFalse($v->has("x"));
 | |
|     $v["x"] = 2;
 | |
|     self::assertTrue($v->has("x"));
 | |
|     self::assertSame(2, $v["x"]);
 | |
|     self::assertSame(["sub" => ["x" => 2]], $array);
 | |
|     $v->del("x");
 | |
|     self::assertFalse($v->has("x"));
 | |
|     self::assertSame(["sub" => []], $array);
 | |
| 
 | |
|     $array = new class extends FancyArray {
 | |
|       use TGenericArray;
 | |
|     };
 | |
|     $array["x"] = 0;
 | |
|     $array["sub"] = ["y" => 3];
 | |
|     $v = new ArrayView($array, "sub");
 | |
|     self::assertFalse($v->has("x"));
 | |
|     self::assertTrue($v->has("y"));
 | |
|     $v["x"] = 2;
 | |
|     self::assertTrue($v->has("x"));
 | |
|     self::assertSame(2, $v["x"]);
 | |
|     self::assertSame(["x" => 0, "sub" => ["y" => 3, "x" => 2]], $array->array());
 | |
|     $v->del("x");
 | |
|     self::assertFalse($v->has("x"));
 | |
|     self::assertSame(["x" => 0, "sub" => ["y" => 3]], $array->array());
 | |
|   }
 | |
| 
 | |
|   function testItemView() {
 | |
|     $array = ["alice" => null, "bob" => null];
 | |
|     $alice = new ItemView($array, "alice");
 | |
|     $bob = new ItemView($array, "bob");
 | |
|     $alice->setName("Alice");
 | |
|     $alice->setAge(32);
 | |
|     self::assertSame([
 | |
|       "alice" => ["name" => "Alice", "age" => 32],
 | |
|       "bob" => ["name" => "bob", "age" => 0],
 | |
|     ], $array);
 | |
|   }
 | |
| 
 | |
|   #XXX tester vue d'une vue
 | |
| }
 |