public function testAddGetRemove() { $key1 = 'key1'; $key2 = 'key2'; $key3 = 'key3'; $item1 = 'item 1'; $item2 = 'item 2'; $item3 = 'item 3'; $items = [$key1 => $item1, $key2 => $item2]; $keys = new Set([$key1, $key2]); $values = new ArrayList([$item1, $item2]); $map = new Map(); $map->set($key1, $item1); $this->assertEquals(1, $map->size()); $this->assertEquals($item1, $map->get($key1)); $this->assertEquals($key1, $map->getKey($item1)); $this->assertNull($map->getKey($item2)); $this->assertTrue($map->has($key1)); $this->assertFalse($map->has($key2)); $map->remove($key1); $this->assertEquals(0, $map->size()); $map->setAll($items); $this->assertEquals(2, $map->size()); $this->assertEquals($keys, $map->keys()); $this->assertEquals($values, $map->values()); $map->set($key3, $item3); $this->assertEquals(3, $map->size()); $map->clear(); $this->assertEquals(0, $map->size()); $dupKeyItems = [$key1 => $item1, $key2 => $item2]; $map->setAll($dupKeyItems); $map->set($key2, $item3); $this->assertEquals(2, $map->size()); $this->assertEquals($item3, $map->get($key2)); $this->assertEmpty($map->get('non_existing_key')); $this->assertEmpty($map->remove('non_existing_key')); $this->assertEquals([], $map->get('non_existing_key', [])); }
/** * A list of tags sorted by tag-name * * @return ArrayList */ public function getSortedTags() { if ($this->comparator === null) { $this->comparator = new TagNameComparator(); } // 1) group by tag name $group = new Map(); foreach ($this->tags as $tag) { if (!$group->has($tag->getTagName())) { $group->set($tag->getTagName(), new ArrayList()); } $group->get($tag->getTagName())->add($tag); } // 2) Sort the group by tag name $group->sortKeys(new TagNameComparator()); // 3) flatten the group $sorted = new ArrayList(); foreach ($group->values() as $tags) { $sorted->addAll($tags); } return $sorted; }