@Test public void addWorkers() { Person worker1 = new Person(crs.getModel()); Person worker2 = new Person(crs.getModel()); assertEquals(crs.getWorkers().size(), 2); // it starts with two PlantListener fakeListener = mock(PlantListener.class); // addSalesDepartmentListener a fake listener crs.addListener(fakeListener); crs.addWorkers(worker1, worker2); worker1.hired(crs.getOwner(), 9999999); worker2.hired(crs.getOwner(), 9999999); assertEquals(crs.getWorkers().size(), 4); assertTrue(crs.getWorkers().contains(worker1)); assertTrue(crs.getWorkers().contains(worker2)); Mockito.verify(fakeListener, times(1)) .changeInWorkforceEvent( any(Plant.class), any(Integer.class), any( Integer .class)); // make sure it was called just once!!! That's the all point of this // method }
@Before public void setUp() throws Exception { Blueprint b = new Blueprint.Builder() .output(DifferentiatedGoodType.CAPITAL, 2) .build(); // create a simple output macro = new MacroII(1); macro.schedule = mock(Schedule.class); // put in a fake schedule so we avoid steppables firing at random Firm f = new Firm(macro); crs = new Plant(b, new Firm(macro)); crs.setPlantMachinery( new CRSExponentialMachinery(DifferentiatedGoodType.CAPITAL, f, 0, crs, 1f, 1f)); irs = new Plant(b, new Firm(macro)); irs.setPlantMachinery( new IRSExponentialMachinery(DifferentiatedGoodType.CAPITAL, f, 0, irs, 1f, 1f)); drs = new Plant(b, new Firm(macro)); drs.setPlantMachinery( new DRSExponentialMachinery(DifferentiatedGoodType.CAPITAL, f, 0, drs, 1f, 1f)); Person w1 = new Person(macro); Person w2 = new Person(macro); crs.addWorker(w1); crs.addWorker(w2); w1.hired(crs.getOwner(), 9999999); w2.hired(crs.getOwner(), 9999999); w1 = new Person(macro); w2 = new Person(macro); irs.addWorker(w1); irs.addWorker(w2); w1.hired(crs.getOwner(), 9999999); w2.hired(crs.getOwner(), 9999999); w1 = new Person(macro); w2 = new Person(macro); drs.addWorker(w1); drs.addWorker(w2); w1.hired(crs.getOwner(), 9999999); w2.hired(crs.getOwner(), 9999999); SalesDepartmentAllAtOnce stub = mock(SalesDepartmentAllAtOnce.class); crs.getOwner() .registerSaleDepartment( stub, DifferentiatedGoodType .CAPITAL); // fake sales department so that you don't sell the stuff you // completeProductionRunNow irs.getOwner() .registerSaleDepartment( stub, DifferentiatedGoodType .CAPITAL); // fake sales department so that you don't sell the stuff you // completeProductionRunNow drs.getOwner() .registerSaleDepartment( stub, DifferentiatedGoodType .CAPITAL); // fake sales department so that you don't sell the stuff you // completeProductionRunNow when(stub.isSelling(any(Good.class))).thenReturn(Boolean.TRUE); crs.setCostStrategy(new EmptyCostStrategy()); irs.setCostStrategy(new EmptyCostStrategy()); drs.setCostStrategy(new EmptyCostStrategy()); }