@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);
  }