public function test_that_it_allows_value_replacement() { $monday = WeekDay::MONDAY(); $node = new RedBlackNode($monday, 'Monday', 1, RedBlackNode::RED); $node->setValue('Sunday'); $this->assertSame('Sunday', $node->value()); }
/** * Inserts a key-value pair in a subtree * * @param mixed $key The key * @param mixed $value The value * @param RedBlackNode|null $node The subtree root * * @return RedBlackNode */ protected function nodeSet($key, $value, RedBlackNode $node = null) : RedBlackNode { if ($node === null) { return new RedBlackNode($key, $value, 1, RedBlackNode::RED); } $comp = $this->comparator->compare($key, $node->key()); if ($comp < 0) { $node->setLeft($this->nodeSet($key, $value, $node->left())); } elseif ($comp > 0) { $node->setRight($this->nodeSet($key, $value, $node->right())); } else { $node->setValue($value); } return $this->balanceOnInsert($node); }