<?php
namespace nur\b\coll;

use nur\t\TestCase;

class ArrayViewStackTest extends TestCase {
  function testBasic() {
    $first = ["a" => 1, "b"=> 1];
    $second = ["b" => 2, "c" => 2];
    $third = [];
    $stack = new ArrayViewStack();
    $stack->push($first)->push($second)->push($third);

    self::assertSame(null, $stack->get("d"));
    self::assertSame(2, $stack->get("c"));
    self::assertSame(2, $stack->get("b"));
    self::assertSame(1, $stack->get("a"));

    $stack["a"] = "x";
    $stack["b"] = "y";
    $stack["c"] = "z";
    $stack["d"] = "t";

    self::assertSame("t", $stack->get("d"));
    self::assertSame("z", $stack->get("c"));
    self::assertSame("y", $stack->get("b"));
    self::assertSame("x", $stack->get("a"));

    unset($stack["a"]);
    unset($stack["b"]);
    unset($stack["c"]);
    unset($stack["d"]);

    self::assertSame(null, $stack->get("d"));
    self::assertSame(2, $stack->get("c"));
    self::assertSame(2, $stack->get("b"));
    self::assertSame(1, $stack->get("a"));
  }
}