public function testGetBestMatchFromBuilder() { $root = new ComparablePair(); $root->buildFromSets([new Color('red'), new Color('green'), new Color('blue')], [new Color('blueviolet'), new Color('bluegreen'), new Color('reed')]); $expected = [new ComparablePair(new Color('blue'), new Color('blueviolet')), new ComparablePair(new Color('green'), new Color('bluegreen')), new ComparablePair(new Color('red'), new Color('reed'))]; $this->assertEquals($expected, $root->getBestMatch()); }
/** * @param ComparableInterface[] $set1 * @param ComparableInterface[] $set2 * @return ComparablePair */ public function buildFromSets(array $set1, array $set2) { if (empty($set1)) { return $this; } list($key1, $item1) = $this->getFirstKeyAndItem($set1); foreach ($set2 as $key2 => $item2) { list($subset1, $subset2) = $this->getSubsetsWithoutKeys($set1, $set2, $key1, $key2); $pair = new ComparablePair($item1, $item2); $this->addChild($pair->buildFromSets($subset1, $subset2)); } return $this; }