public function testCopyAndMergeWithPriorities() { $this->setUpPriorities(); $map1 = new TPriorityMap(); $map1->add('key1', $this->item1); $map1->add('keyc', 'valuec'); $map1->copyFrom($this->map); $this->assertEquals(5, $map1->getCount()); $array = $map1->toArray(); $ordered_keys = array_keys($array); $this->assertEquals('key3', $ordered_keys[0]); $this->assertEquals('key5', $ordered_keys[1]); $this->assertEquals('key1', $ordered_keys[2]); $this->assertEquals('key2', $ordered_keys[3]); $this->assertEquals('key4', $ordered_keys[4]); $ordered_values = array_values($array); $this->assertEquals($this->item3, $ordered_values[0]); $this->assertEquals($this->item5, $ordered_values[1]); $this->assertEquals($this->item1, $ordered_values[2]); $this->assertEquals($this->item2, $ordered_values[3]); $this->assertEquals($this->item4, $ordered_values[4]); $map2 = new TPriorityMap(); $map2->add('startkey', 'startvalue', -1000); $map2->add('key5', 'value5', 40); $map2->add('endkey', 'endvalue', 1000); $map2->mergeWith($this->map); $this->assertEquals(7, $map2->getCount()); $array = $map2->toArray(); $ordered_keys = array_keys($array); $this->assertEquals('startkey', $ordered_keys[0]); $this->assertEquals('key3', $ordered_keys[1]); $this->assertEquals('key5', $ordered_keys[2]); $this->assertEquals('key1', $ordered_keys[3]); $this->assertEquals('key2', $ordered_keys[4]); $this->assertEquals('key4', $ordered_keys[5]); $this->assertEquals('endkey', $ordered_keys[6]); $ordered_values = array_values($array); $this->assertEquals('startvalue', $ordered_values[0]); $this->assertEquals($this->item3, $ordered_values[1]); $this->assertEquals($this->item5, $ordered_values[2]); $this->assertEquals($this->item1, $ordered_values[3]); $this->assertEquals($this->item2, $ordered_values[4]); $this->assertEquals($this->item4, $ordered_values[5]); $this->assertEquals('endvalue', $ordered_values[6]); $this->assertEquals(1, $map2->priorityAt('key5')); $this->assertEquals(1, $map2->priorityOf($this->item5)); }