public function testEquals() { // Using the default comparator. $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => "a", "two" => "b", "three" => "c"]); $this->assertTrue($map0->equals($map1)); $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => "a", "two" => "b", "four" => "c"]); $this->assertFalse($map0->equals($map1)); $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => "a", "two" => "b", "three" => "d"]); $this->assertFalse($map0->equals($map1)); $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => "a", "two" => "b", "three" => "C"]); $this->assertFalse($map0->equals($map1)); $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => "a", "two" => "b", "three" => "c", "four" => "d"]); $this->assertFalse($map0->equals($map1)); $map0 = m(["one" => 1, "two" => 2, "three" => 3]); $map1 = m(["one" => 1, "two" => 2, "three" => 3]); $this->assertTrue($map0->equals($map1)); $map0 = m([1, 2, 3]); $map1 = m([1, 2, 3]); $this->assertTrue($map0->equals($map1)); $map0 = m([1.2, 3.4, 5.6]); $map1 = m([1.2, 3.4, 5.6]); $this->assertTrue($map0->equals($map1)); $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => u("a"), "two" => u("b"), "three" => u("c")]); $this->assertTrue($map0->equals($map1)); $map0 = new CMapObject(); $map1 = m(["one" => "a", "two" => "b", "three" => "c"]); $this->assertFalse($map0->equals($map1)); $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = new CMapObject(); $this->assertFalse($map0->equals($map1)); // Using a custom comparator. $map0 = m(["one" => "a", "two" => "b", "three" => "c"]); $map1 = m(["one" => "A", "two" => "B", "three" => "C"]); $comparator = function ($string0, $string1) { return $string0->toLowerCase()->equals($string1->toLowerCase()); }; $this->assertTrue($map0->equals($map1, $comparator)); }