float_unit = new MeasurementUnit(); $this->float_unit->setIsInteger(false); $this->int_unit = new MeasurementUnit(); $this->int_unit->setIsInteger(true); } public function testUseFloatAmount() { $part = new Part(); $part->setPartUnit(null); $this->assertFalse($part->useFloatAmount()); $part->setPartUnit($this->float_unit); $this->assertTrue($part->useFloatAmount()); $part->setPartUnit($this->int_unit); $this->assertFalse($part->useFloatAmount()); } public function testGetMinAmount() { $part = new Part(); $part->setMinAmount(10.32); $part->setPartUnit(null); $this->assertEquals(10.0, $part->getMinAmount()); $part->setPartUnit($this->float_unit); $this->assertEquals(10.32, $part->getMinAmount()); } public function testAddPartLot() { $part = new Part(); //Part must be empty after creation $this->assertEmpty($part->getPartLots()); $part_lot = new PartLot(); $part->addPartLot($part_lot); $this->assertCount(1, $part->getPartLots()); //PartLot must now be assigned to part $this->assertEquals($part, $part_lot->getPart()); } public function testGetAmountSum() { $part = new Part(); $part->addPartLot((new PartLot())->setAmount(5.42)); $part->addPartLot((new PartLot())->setAmount(0.4)); $part->addPartLot((new PartLot())->setAmount(10.4)); $part->addPartLot((new PartLot())->setAmount(100)->setInstockUnknown(true)); $part->setPartUnit(null); //It is important that we get 15 here (values are round and then summed), not 16 (sum and then round) $this->assertEquals(15, $part->getAmountSum()); $part->setPartUnit($this->float_unit); $this->assertEquals(16.22, $part->getAmountSum()); } }