package net.sf.mockcreator;
import net.sf.mockcreator.exceptions.MockException;
import net.sf.mockcreator.expectable.MockExpectables;
import net.sf.mockcreator.expectable.StructNoEquals;
public class BlockTest extends TestCase {
MockExpectables mock;
MockExpectables mock2;
public BlockTest(String name) {
super(name);
}
public void setUp() throws Exception {
super.setUp();
mock = new MockExpectables();
mock2 = new MockExpectables();
}
public void testExpectInBlock() {
MockCore.startBlock();
mock.expectMap(new Struct(5, 6, 7, "hello")).returns(new Struct(1, 1, 1, "1"));
mock.expectMap(new Struct(1, 2, 3, "bar")).returns(new Struct(2, 2, 2, "2"));
MockCore.endBlock();
Struct s1 = mock.map(new Struct(1, 2, 3, "bar"));
Struct s2 = mock.map(new Struct(5, 6, 7, "hello"));
assertEquals(2, s1.id);
assertEquals(1, s2.id);
}
public void testAcceptInBlock() {
StructNoEquals s1 = new StructNoEquals();
StructNoEquals s2 = new StructNoEquals();
MockCore.startBlock();
mock.acceptGet(new Integer(1)).returns(s1);
mock.acceptGet(new Integer(2)).returns(s2);
MockCore.endBlock();
assertEquals(s2,mock.get(2));
assertEquals(s1,mock.get(1));
MockCore.verify();
}
public void testExpectInBlockTwice() {
MockCore.startBlock();
mock.expectMap(new Struct(5, 6, 7, "hello")).returns(new Struct(1, 1, 1, "1"));
mock.expectMap(new Struct(1, 2, 3, "bar")).returns(new Struct(2, 2, 2, "2"));
mock.expectMap(new Struct(5, 6, 7, "hello")).returns(new Struct(1, 1, 1, "1"));
MockCore.endBlock();
Struct s1 = mock.map(new Struct(1, 2, 3, "bar"));
Struct s2 = mock.map(new Struct(5, 6, 7, "hello"));
Struct s3 = mock.map(new Struct(5, 6, 7, "hello"));
assertEquals(2, s1.id);
assertEquals(1, s2.id);
assertEquals(1, s3.id);
}
public void testAcceptInBlockTwice() {
MockCore.startBlock();
mock.acceptMap(new Struct(5, 6, 7, "hello")).returns(new Struct(1, 1, 1, "1"));
mock.acceptMap(new Struct(1, 2, 3, "bar")).returns(new Struct(2, 2, 2, "2"));
mock.acceptMap(new Struct(5, 6, 7, "hello")).returns(new Struct(1, 1, 1, "1"));
MockCore.endBlock();
Struct s1 = mock.map(new Struct(1, 2, 3, "bar"));
Struct s2 = mock.map(new Struct(5, 6, 7, "hello"));
Struct s3 = mock.map(new Struct(5, 6, 7, "hello"));
assertEquals(2, s1.id);
assertEquals(1, s2.id);
assertEquals(1, s3.id);
}
public void testExpectTwoBlocks() {
MockCore.startBlock();
mock.expectMap(new Struct(1, 1, 1, "1")).returns(new Struct(1, 1, 1, "11"));
mock.expectMap(new Struct(2, 2, 2, "1")).returns(new Struct(2, 2, 2, "22"));
MockCore.endBlock();
mock.expectMap(new Struct(3, 3, 3, "3")).returns(new Struct(3, 3, 3, "33"));
MockCore.startBlock();
mock.expectMap(new Struct(4, 4, 4, "4")).returns(new Struct(4, 4, 4, "44"));
mock.expectMap(new Struct(5, 5, 5, "5")).returns(new Struct(5, 5, 5, "55"));
MockCore.endBlock();
assertEquals(1, mock.map(new Struct(1, 1, 1, "1")).id);
assertEquals(2, mock.map(new Struct(2, 2, 2, "2")).id);
assertEquals(3, mock.map(new Struct(3, 3, 3, "3")).id);
assertEquals(5, mock.map(new Struct(5, 5, 5, "5")).id);
assertEquals(4, mock.map(new Struct(4, 4, 4, "4")).id);
}
public void testExpectTwoBlocksTwoMocks() {
MockCore.startBlock();
mock.expectMap(new Struct(1, 1, 1, "1")).returns(new Struct(1, 1, 1, "11"));
mock.expectMap(new Struct(2, 2, 2, "1")).returns(new Struct(2, 2, 2, "22"));
mock2.expectMap(new Struct(22, 2, 2, "2.1")).returns(new Struct(222, 2, 2, "2.22"));
MockCore.endBlock();
mock.expectMap(new Struct(3, 3, 3, "3")).returns(new Struct(3, 3, 3, "33"));
mock2.expectMap(new Struct(23, 3, 3, "2.3")).returns(new Struct(223, 3, 3, "2.33"));
MockCore.startBlock();
mock2.expectMap(new Struct(24, 4, 4, "2.4")).returns(new Struct(224, 4, 4, "2.44"));
mock.expectMap(new Struct(4, 4, 4, "4")).returns(new Struct(4, 4, 4, "44"));
mock.expectMap(new Struct(5, 5, 5, "5")).returns(new Struct(5, 5, 5, "55"));
MockCore.endBlock();
assertEquals(1, mock.map(new Struct(1, 1, 1, "1")).id);
assertEquals(2, mock.map(new Struct(2, 2, 2, "2")).id);
assertEquals(222, mock2.map(new Struct(22, 2, 2, "2.1")).id);
assertEquals(3, mock.map(new Struct(3, 3, 3, "3")).id);
assertEquals(223, mock2.map(new Struct(23, 3, 3, "2.3")).id);
assertEquals(5, mock.map(new Struct(5, 5, 5, "5")).id);
assertEquals(224, mock2.map(new Struct(24, 4, 4, "2.44")).id);
assertEquals(4, mock.map(new Struct(4, 4, 4, "4")).id);
}
public void testTwoMocksOfSameType() {
mock.expectMap(new Struct(1, 1, 1, "1")).returns(new Struct(1, 1, 1, "11"));
mock2.expectMap(new Struct(2, 2, 2, "2")).returns(new Struct(2, 2, 2, "21"));
try {
mock2.map(new Struct(1, 1, 1, "1"));
fail("was able to call expectation on wrong object");
} catch (MockException ex) {
}
}
public void testNewMockAfterSetDummy() {
mock.expectZeroOrMoreMap_Struct_returning_Struct().returns(new Struct(1, 1, 1, "11"));
assertEquals(1, mock.map((Struct) null).id);
mock2 = new MockExpectables();
assertEquals(1, mock.map(null).id);
}
public void testNewMockAfterExpect() {
mock.expectMap(null).returns(new Struct(1, 1, 1, "11"));
mock.expectMap(null).returns(new Struct(1, 1, 1, "11"));
assertEquals(1, mock.map((Struct) null).id);
mock2 = new MockExpectables();
assertEquals(1, mock.map(null).id);
}
public void testDoubleStartBlock() {
MockCore.startBlock();
try {
MockCore.startBlock();
fail();
} catch (MockException ex) {
}
}
public void testEmptyBlock() {
MockCore.startBlock();
try {
MockCore.endBlock();
fail();
} catch (MockException ex) {
}
}
public void testEndBlock() {
try {
MockCore.endBlock();
fail();
} catch (MockException ex) {
}
}
}
|