import static org.junit.Assert.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;
import org.junit.Test;
import java.util.Random;

/**
 * 
 */

/**
 * @author harrisnl
 *
 */
public class SlotsTest 
{

	@Test
	public void SlotMachine1test() 
	{
		// slot machine methods
		SlotMachine machine = new SlotMachine(new Random(222333581));
		String actual = machine.toString();
		String expected = "Cherries\tOranges\tPlums";
		assertEquals("Initial slots should be Cherries\\tOranges\\tPlums",
				expected,actual);
		
		actual = machine.pullHandle();
		expected = "Oranges\tOranges\tOranges";
		assertEquals("Seed - 222333581 One pull should be " + expected + " was " + actual,
				expected, actual);
		int count;
		count = machine.matches();
		assertEquals("Error in matches-pull " + actual, 3, count);
		
		actual = machine.pullHandle();
		expected = "Bells\tBars\tPlums";
		assertEquals("Seed - 222333581 Two pull should be Bells\\tBars\\tPlums was " + actual,
				expected, actual);
		
		count = machine.matches();
		assertEquals("Error in matches-pull " + actual, 0, count);
		
		actual = machine.pullHandle();
		expected = "Plums\tMelons\tMelons";
		assertEquals("Seed - 222333581 Three pull should be Plums\\tMelons\\tMelons was " + actual,
				expected, actual);
		
		count = machine.matches();
		assertEquals("Error in matches-pull " + actual, 2, count);
	}

	@Test
	public void SlotMachine2test() 
	{
		// slot machine methods - various forms of two 
		long seed = 222333574;
		SlotMachine machine = new SlotMachine(new Random(seed));
				
		String actual = machine.pullHandle();
		int count = machine.matches();
		
		assertEquals(String.format("Seed: %s, %s, Count should be two was %d", ""  + seed, actual, count),
				2, count);
	
		actual = machine.pullHandle();
		count = machine.matches();
		
		assertEquals(String.format("Seed: %s, %s, Count should be two was %d", ""  + seed, actual, count),
				2, count);
		
		actual = machine.pullHandle();
		count = machine.matches();
		
		assertEquals(String.format("Seed: %s, %s, Count should be two was %d", ""  + seed, actual, count),
				2, count);
	}

}
