import org.junit.Assert;

import org.junit.Test;

/**
 * ChuckALuckTest.
 * @author YOUR NAME HERE
 * @version DATE HERE
 */

public class ChuckALuckTest {


    /**
     * testCalculatePayoutSingleNoMatch.
     */
     
    @Test
    public void testCalculatePayoutSingleNoMatch() {
        Dice dice = new Dice(1, 2, 3);

        double expected;
        double result;

        result = ChuckALuck.calculatePayout(dice, ChuckALuck.SINGLE, 4, 100.0);
        expected = -100.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice, ChuckALuck.SINGLE, 5, 200.0);
        expected = -200.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice, ChuckALuck.SINGLE, 6, 300.0);
        expected = -300.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice, ChuckALuck.SINGLE, 6, 0.0);
        expected = 0.0;
        Assert.assertEquals(expected, result, .0001);

    }

    /**
     * testCalculatePayoutSingleOneMatch.
     */
    @Test
    public void testCalculatePayoutSingleOneMatch() {
        Dice dice1 = new Dice(4, 5, 6); // We'll try each of 4,5,6 as a single
        Dice dice2 = new Dice(1, 1, 2); // Confirm duplicates don't cause errors

        double expected;
        double result;

        result = ChuckALuck.calculatePayout(dice1, ChuckALuck.SINGLE, 4, 100.0);
        expected = 100.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice1, ChuckALuck.SINGLE, 5, 200.0);
        expected = 200.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice1, ChuckALuck.SINGLE, 6, 300.0);
        expected = 300.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice1, ChuckALuck.SINGLE, 6, 0.0);
        expected = 0.0;
        Assert.assertEquals(expected, result, .0001);

        result = ChuckALuck.calculatePayout(dice2, ChuckALuck.SINGLE, 2, 300.0);
        expected = 300.0;
        Assert.assertEquals(expected, result, .0001);

    }

}
