Package net.alteiar.test.beans.dice

Source Code of net.alteiar.test.beans.dice.TestDice

package net.alteiar.test.beans.dice;

import static org.junit.Assert.assertEquals;

import java.util.HashMap;
import java.util.Map.Entry;

import net.alteiar.beans.dice.Dice;
import net.alteiar.beans.dice.DiceBag;
import net.alteiar.beans.dice.DiceListener;
import net.alteiar.beans.dice.DiceRoller;
import net.alteiar.beans.dice.DiceSingle;
import net.alteiar.beans.dice.visitor.DiceCountVisitor;
import net.alteiar.campaign.CampaignClient;
import net.alteiar.test.NewCampaignTest;

import org.junit.Test;

public class TestDice extends NewCampaignTest {

  private class TestListener extends DiceListener {
    private int callCount;

    private final HashMap<Integer, Integer> diceCount;

    public TestListener(Integer dice, Integer count) {
      this(new HashMap<Integer, Integer>());
      this.diceCount.put(dice, count);
    }

    public TestListener(HashMap<Integer, Integer> diceCount) {
      callCount = 0;
      this.diceCount = diceCount;
    }

    public int getCallCount() {
      return callCount;
    }

    @Override
    public void diceRolled(Dice dice) {
      DiceCountVisitor visitor = new DiceCountVisitor();
      dice.visit(visitor);

      for (Entry<Integer, Integer> entry : diceCount.entrySet()) {
        assertEquals("it should contain " + entry.getValue() + "d"
            + entry.getKey(), entry.getValue(),
            visitor.getDiceCount(entry.getKey()));
      }

      callCount++;
    }
  }

  @Test(timeout = 1000)
  public void testSingleDice() {
    DiceRoller roller = CampaignClient.getInstance().getDiceRoller();

    TestListener listener = new TestListener(6, 1);
    roller.addPropertyChangeListener(listener);
    roller.roll(new DiceSingle(6));

    while (listener.getCallCount() < 1) {
      sleep(5);
    }
    roller.removePropertyChangeListener(listener);
    assertEquals("Must have 1 call to listener", 1, listener.getCallCount());
  }

  @Test(timeout = 1000)
  public void testDiceBag() {
    DiceRoller roller = CampaignClient.getInstance().getDiceRoller();

    HashMap<Integer, Integer> dices = new HashMap<Integer, Integer>();
    dices.put(6, 3);
    dices.put(8, 2);

    TestListener listener = new TestListener(dices);
    roller.addPropertyChangeListener(listener);

    DiceBag bag = new DiceBag();
    for (Entry<Integer, Integer> entry : dices.entrySet()) {
      for (int i = 0; i < entry.getValue(); ++i) {
        bag.addDice(new DiceSingle(entry.getKey()));
      }
    }
    roller.roll(bag);

    while (listener.getCallCount() < 1) {
      sleep(5);
    }
    roller.removePropertyChangeListener(listener);
    assertEquals("Must have 1 call to listener", 1, listener.getCallCount());
  }

  @Test(timeout = 1000)
  public void testMultipleRoll() {
    DiceRoller roller = CampaignClient.getInstance().getDiceRoller();

    TestListener listener = new TestListener(6, 1);
    roller.addPropertyChangeListener(listener);
    roller.roll(new DiceSingle(6));
    roller.roll(new DiceSingle(6));
    roller.roll(new DiceSingle(6));

    while (listener.getCallCount() < 3) {
      sleep(5);
    }
    roller.removePropertyChangeListener(listener);
    assertEquals("Must have 3 call to listener", 3, listener.getCallCount());
  }

}
TOP

Related Classes of net.alteiar.test.beans.dice.TestDice

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.