// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved. // Released under the terms of the CPL Common Public License version 1.0. package fitnesse.responders.run; import java.net.Socket; import java.util.Collection; import junit.framework.TestCase; import fitnesse.testutil.MockSocket; import fitnesse.testutil.SimpleSocketSeeker; public class SocketDealerTest extends TestCase { private SocketDealer dealer; private SimpleSocketSeeker seeker; private int ticket; private SimpleDoner doner; public void setUp() throws Exception { dealer = new SocketDealer(); } public void tearDown() throws Exception { } public static class SimpleDoner implements SocketDoner { public MockSocket socket = new MockSocket(""); boolean finished = false; public Socket donateSocket() { return socket; } public void finishedWithSocket() { finished = true; } } public void testAddSeeker() throws Exception { SocketSeeker seeker = new SimpleSocketSeeker(); dealer.seekingSocket(seeker); Collection<SocketSeeker> waiting = dealer.getWaitingList(); assertEquals(1, waiting.size()); assertTrue(waiting.contains(seeker)); } public void testUniqueTicketNumber() throws Exception { int ticketNumber1 = dealer.seekingSocket(new SimpleSocketSeeker()); int ticketNumber2 = dealer.seekingSocket(new SimpleSocketSeeker()); assertTrue(ticketNumber1 != ticketNumber2); } public void testDealSocketTo() throws Exception { doSimpleDealing(); assertSame(doner.socket, seeker.socket); } private void doSimpleDealing() throws Exception { seeker = new SimpleSocketSeeker(); ticket = dealer.seekingSocket(seeker); doner = new SimpleDoner(); dealer.dealSocketTo(ticket, doner); } public void testDealSocketToMultipleSeekers() throws Exception { SimpleSocketSeeker seeker1 = new SimpleSocketSeeker(); SimpleSocketSeeker seeker2 = new SimpleSocketSeeker(); int ticket1 = dealer.seekingSocket(seeker1); int ticket2 = dealer.seekingSocket(seeker2); SimpleDoner doner1 = new SimpleDoner(); SimpleDoner doner2 = new SimpleDoner(); dealer.dealSocketTo(ticket1, doner1); dealer.dealSocketTo(ticket2, doner2); assertSame(doner1.socket, seeker1.socket); assertSame(doner2.socket, seeker2.socket); } public void testSeekerRemovedAfterDeltTo() throws Exception { doSimpleDealing(); Collection<SocketSeeker> waiting = dealer.getWaitingList(); assertEquals(0, waiting.size()); } public void testSeekerIsWaiting() throws Exception { assertFalse(dealer.isWaiting(23)); int ticket = dealer.seekingSocket(new SimpleSocketSeeker()); assertTrue(dealer.isWaiting(ticket)); } }