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
 | 
						|
}
 |