示例#1
0
  public void testCaseTwoTeachersWithDifferentExp() {
    boolean selection = FreeColTestUtils.setStudentSelection(false);
    Game game = ServerTestHelper.startServerGame(getTestMap(true));

    Colony colony = getSchoolColony(4, SchoolLevel.UNIVERSITY);
    Building university = colony.getBuilding(universityType);
    Iterator<Unit> units = colony.getUnitIterator();

    Unit colonist = units.next();
    colonist.setType(freeColonistType);
    colonist.setLocation(colony.getBuilding(townHallType));

    Unit teacher1 = units.next();
    teacher1.setType(expertOreMinerType);

    Unit teacher2 = units.next();
    teacher2.setType(masterCarpenterType);

    // First we let the teacher1 train for 3 turns
    teacher1.setLocation(university);
    ServerTestHelper.newTurn();
    ServerTestHelper.newTurn();
    ServerTestHelper.newTurn();
    assertEquals(3, teacher1.getTurnsOfTraining());

    // Then teacher2 for 1 turn
    teacher1.setLocation(colony.getWorkLocationFor(teacher1, grainType));
    teacher2.setLocation(university);
    ServerTestHelper.newTurn();
    assertEquals(0, teacher1.getTurnsOfTraining());
    assertEquals(1, teacher2.getTurnsOfTraining());

    // If we now also add teacher1 to the university, but
    // teacher2 should still be the teacher in charge
    teacher1.setLocation(university);
    assertNull(teacher1.getStudent());
    ServerTestHelper.newTurn();

    assertEquals(0, teacher1.getTurnsOfTraining());
    assertEquals(2, teacher2.getTurnsOfTraining());

    FreeColTestUtils.setStudentSelection(selection);
  }
示例#2
0
  /**
   * Trains partly one colonist then put another teacher.
   *
   * <p>Should not save progress but start all over.
   */
  public void testPartTraining() {
    boolean selection = FreeColTestUtils.setStudentSelection(false);
    Game game = ServerTestHelper.startServerGame(getTestMap(true));

    Colony colony = getSchoolColony(4, SchoolLevel.UNIVERSITY);
    Building university = colony.getBuilding(universityType);
    Iterator<Unit> units = colony.getUnitIterator();

    Unit colonist = units.next();
    colonist.setType(freeColonistType);
    colonist.setLocation(colony.getBuilding(townHallType));

    Unit lumberjack = units.next();
    lumberjack.setType(expertLumberJackType);

    Unit miner = units.next();
    miner.setType(expertOreMinerType);

    // Put Lumberjack in School
    lumberjack.setLocation(university);
    assertEquals(lumberjack.getStudent(), colonist);
    assertEquals(colonist.getTeacher(), lumberjack);

    ServerTestHelper.newTurn();
    ServerTestHelper.newTurn();

    // After 2 turns replace by miner. Progress starts from scratch.
    lumberjack.setLocation(colony.getWorkLocationFor(lumberjack, grainType));
    assertNull(lumberjack.getStudent());
    assertNull(colonist.getTeacher());

    miner.setLocation(university);
    assertEquals(miner.getStudent(), colonist);
    assertEquals(colonist.getTeacher(), miner);

    trainForTurns(colony, miner.getNeededTurnsOfTraining());
    assertEquals(0, getUnitList(colony, freeColonistType).size());
    assertEquals(2, getUnitList(colony, expertOreMinerType).size());

    FreeColTestUtils.setStudentSelection(selection);
  }
  public void testEqualFoodProductionConsumptionCase() {
    Game game = ServerTestHelper.startServerGame(getTestMap(desert));

    // Setting test colony
    Tile colonyTile = game.getMap().getTile(5, 8);
    Colony colony =
        FreeColTestUtils.getColonyBuilder().colonyTile(colonyTile).initialColonists(1).build();

    // Set the food production of the center tile of the colony to 2
    // This will be the only food production of the colony
    List<AbstractGoods> colonyTileProduction = colonyTile.getType().getPossibleProduction(true);
    for (int i = 0; i < colonyTileProduction.size(); i++) {
      AbstractGoods production = colonyTileProduction.get(i);
      if (production.getType() == foodGoodsType) {
        production.setAmount(2);
        break;
      }
    }
    Unit unit = colony.getUnitList().get(0);
    unit.setLocation(colony.getWorkLocationFor(unit, bellsType));

    // Verify that there is enough food stored
    colony.addGoods(foodGoodsType, colony.getFoodConsumption() * 2);

    assertEquals(
        "Production not equal to consumption",
        colony.getFoodConsumption(),
        colony.getFoodProduction());

    int colonists = colony.getUnitCount();
    assertEquals("Unexpected change of colonists in colony", colonists, colony.getUnitCount());

    assertEquals(
        "Unexpected change of production/consumption ratio",
        colony.getFoodProduction(),
        colony.getFoodConsumption());
  }
示例#4
0
  /**
   * Progress in teaching is bound to the teacher and not the learner.
   *
   * <p>Moving a teacher inside the colony should not reset its training.
   */
  public void testMoveTeacherInside() {
    boolean selection = FreeColTestUtils.setStudentSelection(false);
    Game game = ServerTestHelper.startServerGame(getTestMap(true));

    Colony colony = getSchoolColony(4, SchoolLevel.UNIVERSITY);
    // prevent starvation
    colony.addGoods(foodType, 100);

    Building university = colony.getBuilding(universityType);
    Iterator<Unit> units = colony.getUnitIterator();

    Unit colonist = units.next();
    colonist.setType(freeColonistType);
    colonist.setLocation(colony.getBuilding(townHallType));

    Unit criminal = units.next();
    criminal.setType(pettyCriminalType);
    criminal.setLocation(colony.getBuilding(townHallType));

    Unit teacher1 = units.next();
    teacher1.setType(expertOreMinerType);

    Unit teacher2 = units.next();
    teacher2.setType(masterCarpenterType);

    // The carpenter is set in the school before the miner.
    // In this case, the colonist will become a miner (and the criminal
    // will become a servant).
    teacher2.setLocation(university);
    teacher1.setLocation(university);
    assertEquals(4, teacher1.getNeededTurnsOfTraining());
    assertEquals(4, teacher2.getNeededTurnsOfTraining());

    // wait a little
    ServerTestHelper.newTurn();
    ServerTestHelper.newTurn();
    assertEquals(2, teacher1.getTurnsOfTraining());
    assertEquals(2, teacher2.getTurnsOfTraining());
    assertEquals(1, getUnitList(colony, freeColonistType).size());
    assertEquals(1, getUnitList(colony, pettyCriminalType).size());
    assertEquals(1, getUnitList(colony, expertOreMinerType).size());
    assertEquals(1, getUnitList(colony, masterCarpenterType).size());

    // Now we want the colonist to be a carpenter. We just want to
    // shuffle the teachers.  Move them out of the school.
    teacher2.setLocation(colony.getWorkLocationFor(teacher2, grainType));
    teacher1.setLocation(colony.getTile());
    assertNull(teacher1.getStudent());
    assertNull(teacher2.getStudent());

    // Moving outside school resets training
    ServerTestHelper.newTurn();
    assertEquals(0, teacher1.getTurnsOfTraining());
    assertEquals(0, teacher2.getTurnsOfTraining());
    assertEquals(1, getUnitList(colony, freeColonistType).size());
    assertEquals(1, getUnitList(colony, pettyCriminalType).size());

    // Move teachers back to school, miner first to pick up the criminal
    teacher1.setLocation(university);
    teacher2.setLocation(university);

    ServerTestHelper.newTurn();
    assertEquals(1, teacher1.getTurnsOfTraining());
    assertEquals(1, teacher2.getTurnsOfTraining());
    assertEquals(1, getUnitList(colony, freeColonistType).size());
    assertEquals(1, getUnitList(colony, pettyCriminalType).size());

    ServerTestHelper.newTurn();
    ServerTestHelper.newTurn();
    ServerTestHelper.newTurn();
    assertEquals(0, teacher1.getTurnsOfTraining());
    assertEquals(0, teacher2.getTurnsOfTraining());

    // Teacher1's student (criminal) should be a servant now
    // Teacher2's student (colonist) should be a carpenter now
    assertEquals(0, getUnitList(colony, freeColonistType).size());
    assertEquals(0, getUnitList(colony, pettyCriminalType).size());
    assertEquals(1, getUnitList(colony, indenturedServantType).size());
    assertEquals(1, getUnitList(colony, expertOreMinerType).size());
    assertEquals(2, getUnitList(colony, masterCarpenterType).size());

    FreeColTestUtils.setStudentSelection(selection);
  }
示例#5
0
  /**
   * [ 1616384 ] Teaching
   *
   * <p>One LumberJack and one BlackSmith in a college. 4 Free Colonists, one as LumberJack, one as
   * BlackSmith two as Farmers.
   *
   * <p>After some turns (2 or 3 I don't know) a new LumberJack is ready. Removing the teacher
   * LumberJack replaced by an Ore Miner.
   *
   * <p>Next turn, a new BlackSmith is ready. Removing the teacher BlackSmith replaced by a Veteran
   * Soldier. There is still 2 Free Colonists as Farmers in the Colony.
   *
   * <p>Waiting during more than 8 turns. NOTHING happens.
   *
   * <p>Changing the two Free Colonists by two other Free Colonists.
   *
   * <p>After 2 or 3 turns, a new Ore Miner and a new Veteran Soldier are ready.
   *
   * <p>http://sourceforge.net/tracker/index.php?func=detail&aid=1616384&group_id=43225&atid=435578
   *
   * <p>CO: I think this is a special case of the testSingleGuyTwoTeachers. But since already the
   * TwoTeachersSimple case fails, I think that needs to be sorted out first.
   */
  public void testTrackerBug1616384() {
    Game game = ServerTestHelper.startServerGame(getTestMap(true));

    // otherwise this test will crash and burn
    boolean selection = FreeColTestUtils.setStudentSelection(false);

    Colony colony = getSchoolColony(8, SchoolLevel.COLLEGE);
    // prevent starvation
    colony.addGoods(foodType, 100);

    Building college = colony.getBuilding(collegeType);
    Iterator<Unit> units = colony.getUnitIterator();

    Unit colonist1 = units.next();
    colonist1.setType(freeColonistType);
    colonist1.setLocation(colony.getBuilding(townHallType));

    Unit colonist2 = units.next();
    colonist2.setType(freeColonistType);
    colonist2.setLocation(colony.getBuilding(townHallType));

    Unit colonist3 = units.next();
    colonist3.setType(freeColonistType);
    colonist3.setLocation(colony.getBuilding(lumberMillType));

    Unit colonist4 = units.next();
    colonist4.setType(freeColonistType);
    colonist4.setLocation(colony.getBuilding(lumberMillType));

    Unit lumberjack = units.next();
    lumberjack.setType(expertLumberJackType);

    Unit blacksmith = units.next();
    blacksmith.setType(masterBlacksmithType);

    Unit veteran = units.next();
    veteran.setType(veteranSoldierType);

    Unit ore = units.next();
    ore.setType(expertOreMinerType);

    blacksmith.setLocation(college);
    lumberjack.setLocation(college);
    assertNotNull(blacksmith.getStudent());
    assertNotNull(lumberjack.getStudent());

    assertEquals(4, getUnitList(colony, freeColonistType).size());
    assertEquals(1, getUnitList(colony, masterBlacksmithType).size());
    assertEquals(1, getUnitList(colony, expertLumberJackType).size());

    while (4 == getUnitList(colony, freeColonistType).size()) {
      ServerTestHelper.newTurn();
    }

    assertEquals(3, getUnitList(colony, freeColonistType).size());
    assertEquals(1, getUnitList(colony, masterBlacksmithType).size());
    assertEquals(2, getUnitList(colony, expertLumberJackType).size());

    lumberjack.setLocation(colony.getWorkLocationFor(lumberjack, grainType));
    assertNull(lumberjack.getStudent());
    Unit smithToBe = blacksmith.getStudent();
    assertNotNull(smithToBe);
    ore.setLocation(college);
    assertNotNull(ore.getStudent());

    while (3 == getUnitList(colony, freeColonistType).size()) {
      ServerTestHelper.newTurn();
    }
    assertEquals(masterBlacksmithType, smithToBe.getType());
    assertEquals(2, getUnitList(colony, freeColonistType).size());
    assertEquals(1, getUnitList(colony, expertOreMinerType).size());
    assertEquals(2, getUnitList(colony, masterBlacksmithType).size());

    blacksmith.setLocation(colony.getWorkLocationFor(blacksmith, grainType));
    assertNull(blacksmith.getStudent());
    veteran.setLocation(college);
    assertNotNull(veteran.getStudent());

    while (2 == getUnitList(colony, freeColonistType).size()) {
      ServerTestHelper.newTurn();
    }
    assertEquals(1, getUnitList(colony, freeColonistType).size());
    assertEquals(2, getUnitList(colony, expertOreMinerType).size());

    ore.setLocation(colony.getWorkLocationFor(ore, grainType));
    assertNull(ore.getStudent());

    while (1 == getUnitList(colony, freeColonistType).size()) {
      ServerTestHelper.newTurn();
    }
    assertEquals(0, getUnitList(colony, freeColonistType).size());
    assertEquals(2, getUnitList(colony, veteranSoldierType).size());

    FreeColTestUtils.setStudentSelection(selection);
  }