public function testPhutilArrayWithDefaultValue() { $a = new PhutilArrayWithDefaultValue(); $this->assertEqual(0, $a[99]); $a[99] = 1; $this->assertEqual(1, $a[99]); $a->setDefaultValue('default'); $this->assertEqual('default', $a['key']); $this->assertEqual(array(99 => 1, 'key' => 'default'), $a->toArray()); $init = array('apple' => 'red'); $b = new PhutilArrayWithDefaultValue($init); $this->assertEqual($init, $b->toArray()); $fruits = array('apple', 'cherry', 'banana', 'cherry', 'cherry', 'apple', 'banana', 'plum', 'cherry', 'cherry'); $counts = new PhutilArrayWithDefaultValue(); foreach ($fruits as $fruit) { $counts[$fruit] += 1; } $this->assertEqual(array('apple' => 2, 'cherry' => 5, 'banana' => 2, 'plum' => 1), $counts->toArray()); $masks = array(1, 2, 4); $bitmask = new PhutilArrayWithDefaultValue(); foreach ($masks as $mask) { $bitmask['value'] |= $mask; } $this->assertEqual(7, $bitmask['value']); }