KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > atest > jmock > DynamicMockExample


1 /* Copyright (c) 2000-2004 jMock.org
2  */

3 package atest.jmock;
4
5 import org.jmock.Mock;
6 import org.jmock.MockObjectTestCase;
7
8
9 public class DynamicMockExample extends MockObjectTestCase
10 {
11     public interface Market {
12         String JavaDoc[] listStocks();
13
14         int getPrice( String JavaDoc ticker );
15
16         void buyStock( String JavaDoc ticker, int quantity );
17     }
18
19     public class Agent
20     {
21         Market market;
22
23         public Agent( Market market ) {
24             this.market = market;
25         }
26
27         public void buyLowestPriceStock( int cost ) {
28             String JavaDoc[] stocks = market.listStocks();
29             int cheapestPrice = Integer.MAX_VALUE;
30             String JavaDoc cheapestStock = null;
31
32             for (int i = 0; i < stocks.length; ++i) {
33                 int price = market.getPrice(stocks[i]);
34                 if (price < cheapestPrice) {
35                     cheapestPrice = price;
36                     cheapestStock = stocks[i];
37                 }
38             }
39             market.buyStock(cheapestStock, cost / cheapestPrice);
40         }
41     }
42
43     public void testBuilderExample() {
44         Mock market = mock(Market.class);
45         Agent agent = new Agent((Market)market.proxy());
46
47         market.stubs().method("listStocks").withNoArguments()
48                 .will(returnValue(new String JavaDoc[]{"IBM", "ORCL"}));
49         market.expects(atLeastOnce()).method("getPrice").with(eq("IBM"))
50                 .will(returnValue(10));
51         market.expects(atLeastOnce()).method("getPrice").with(eq("ORCL"))
52                 .will(returnValue(25));
53         market.expects(once()).method("buyStock").with(eq("IBM"), eq(2));
54
55         agent.buyLowestPriceStock(20);
56     }
57
58     public void xtestDynaMockExample() {
59         Mock mockMarket = mock(Market.class);
60         Agent agent = new Agent((Market)mockMarket.proxy());
61 //
62
//
63
// mockMarket.invokedMethod("buyStock", "MSFT", new Integer(10)).void();
64
//
65
// mockMarket.invokedMethod("buyStock", "MSFT", new Integer(10)).returns(true)
66
// .expectOnce();
67
// //.expectNever();
68
// //.addMatcher(new MyExpectation());
69
//
70
// mockMarket.invokedMethod("listStocks").alwaysReturns(new Vector("MSFT", "ORCL"));
71
// mockMarket.invokedMethod("getPrice", "MSFT").alwaysReturns(10);
72
// mockMarket.invokedMethod("getPrice", "ORCL").alwaysReturns(50);
73
//
74
// mockMarket.invokedMethod(C.equal("buyStock"), C.eq(1)).
75
//
76
// mockMarket.methodName("listStocks").noParams()
77
// .alwaysReturns("MSFT");
78
//
79
// InvocationHandler listInvocation = mockMarket.methodName("listStocks").noParams()
80
// .returns("MSFT")
81
// .returns("ORCL")
82
// .throwsException(new ....);
83
//
84
// mockMarket.methodName("buyStock").params("MSFT", 10).returns(900)
85
// .calledOnce()
86
// .before(listInvocation);
87
// mockMarket.methodName("buyStock").params("ORCL", 2).returns(100)
88
// .calledOnce()
89
// .before(listInvocation);
90
//
91
// mockMarket.newInvocationHandler().addMatcher( new NameMatcher(new IsEqual("buyStock"))
92
// .addMatcher( new ActualParameterMatcher( new Constraint[] { new IsEqual("MSFT"), new IsEqual(new Integer(10)})))
93
// .addStub( new ReturnStub( new Integer(900) )));
94
//
95
//
96
agent.buyLowestPriceStock(1000);
97     }
98 }
99
Popular Tags