@Test public void testCheckForInputs() throws Exception { assertTrue(crs.checkForInputs()); // the setup has no input need crs.getModel() .schedule .scheduleOnce( Schedule.EPOCH, new Person(crs.getModel())); // this is to have the steppable not at time -1 crs.getModel().schedule.step(crs.getModel()); Blueprint b = Blueprint.simpleBlueprint( DifferentiatedGoodType.CAPITAL, 1, DifferentiatedGoodType.CAPITAL, 2); // addSalesDepartmentListener one for input crs.setBlueprint(b); // set it as blueprint assertFalse(crs.checkForInputs()); // you should miss one crs.getOwner() .receive( Good.getInstanceOfDifferentiatedGood(DifferentiatedGoodType.CAPITAL, drs.getOwner(), 1), drs.getOwner()); // receive it // this automatically steps production (because it's inventory listener!) assertTrue(crs.checkForInputs()); // all good now }
@Test public void testProduce() throws Exception { macro.schedule = new Schedule(); // create a real schedule, please. assertTrue(crs.getModel().schedule.scheduleComplete()); // the schedule should be empty! assertTrue(!crs.getOwner().hasAny(DifferentiatedGoodType.CAPITAL)); assertTrue(crs.getOwner().hasHowMany(DifferentiatedGoodType.CAPITAL) == 0); crs.getModel().schedule.reset(); crs.getModel() .schedule .scheduleOnce( Schedule.EPOCH, new Person(crs.getModel())); // this is to have the steppable not at time -1 crs.setCostStrategy(new EmptyCostStrategy()); // crs.completeProductionRunNow(); crs.startProductionRun(); // System.out.println(crs.getModel().schedule.getTime()); assertEquals(crs.getStatus(), PlantStatus.READY); assertTrue(crs.getOwner().hasAny(DifferentiatedGoodType.CAPITAL)); assertTrue(crs.getOwner().hasHowMany(DifferentiatedGoodType.CAPITAL) == 2); // here we produced 2 crs.setBlueprint( Blueprint.simpleBlueprint( DifferentiatedGoodType.CAPITAL, 2, DifferentiatedGoodType.CAPITAL, 1)); // dumb technology to test inputs crs.startProductionRun(); assertEquals(crs.getStatus(), PlantStatus.READY); assertTrue( crs.getOwner().hasAny(DifferentiatedGoodType.CAPITAL)); // should still have the stuff assertTrue( crs.getOwner().hasHowMany(DifferentiatedGoodType.CAPITAL) == 1); // burned two, made one crs.startProductionRun(); assertEquals(crs.getStatus(), PlantStatus.WAITING_FOR_INPUT); assertTrue(crs.getOwner().hasAny(DifferentiatedGoodType.CAPITAL)); // no change! assertTrue(crs.getOwner().hasHowMany(DifferentiatedGoodType.CAPITAL) == 1); // check that the counts are right Assert.assertEquals(crs.getOwner().getTodayConsumption(DifferentiatedGoodType.CAPITAL), 2); Assert.assertEquals(crs.getOwner().getTodayProduction(DifferentiatedGoodType.CAPITAL), 3); }