+
+ private function closestHouseNumberEvenOddOther($startnumber, $endnumber, $fraction, $aExpected)
+ {
+ foreach (['even', 'odd', 'other'] as $itype) {
+ $this->assertEquals(
+ $aExpected[$itype],
+ closestHouseNumber([
+ 'startnumber' => $startnumber,
+ 'endnumber' => $endnumber,
+ 'fraction' => $fraction,
+ 'interpolationtype' => $itype
+ ]),
+ "$startnumber => $endnumber, $fraction, $itype"
+ );
+ }
+ }
+
+ public function testClosestHouseNumber()
+ {
+ $this->closestHouseNumberEvenOddOther(50, 100, 0.5, ['even' => 76, 'odd' => 75, 'other' => 75]);
+ // upper bound
+ $this->closestHouseNumberEvenOddOther(50, 100, 1.5, ['even' => 100, 'odd' => 100, 'other' => 100]);
+ // lower bound
+ $this->closestHouseNumberEvenOddOther(50, 100, -0.5, ['even' => 50, 'odd' => 50, 'other' => 50]);
+ // fraction 0
+ $this->closestHouseNumberEvenOddOther(50, 100, 0, ['even' => 50, 'odd' => 51, 'other' => 50]);
+ // start == end
+ $this->closestHouseNumberEvenOddOther(50, 50, 0.5, ['even' => 50, 'odd' => 50, 'other' => 50]);
+ }