1   package net.sf.msplice.model;
2   
3   import net.sf.msplice.model.condition.AbstractCondition;
4   import net.sf.msplice.visitor.IVisitor;
5   
6   import org.jmock.Mock;
7   import org.jmock.MockObjectTestCase;
8   
9   public class DefaultConditionHolderTest extends MockObjectTestCase {
10  
11  	private DefaultConditionHolder conditionHolder = null;
12  
13  	private AbstractCondition fallbackCondition = null;
14  
15  	private AbstractCondition testCondition = null;
16  	
17  	private AbstractCondition nullCondition = null;
18  
19  	@Override
20  	protected void setUp() throws Exception {
21  		super.setUp();
22  
23  		conditionHolder = new DefaultConditionHolder();
24  
25  		fallbackCondition = DefaultConditionHolder.FALLBACK_CONDITION;
26  		testCondition = new TestCondition();
27  		nullCondition = null;
28  	}
29  
30  	public void testInitialCondition() throws Exception {
31  
32  		assertEquals("Check the initial condition",
33  				fallbackCondition, conditionHolder.getDefaultCondition());
34  		
35  	}
36  	
37  	public void testSetDefaultCondition() {
38  		
39  		conditionHolder.setDefaultCondition(testCondition);
40  		AbstractCondition resultCondition = conditionHolder.getDefaultCondition();
41  		
42  		assertEquals("Chect the condition", testCondition, resultCondition);
43  	}
44  
45  	public void testSetNullCondition() throws Exception {
46  		
47  		conditionHolder.setDefaultCondition(nullCondition);
48  		AbstractCondition resultCondition = conditionHolder.getDefaultCondition();
49  		
50  		assertEquals("Chect the condition", fallbackCondition, resultCondition);
51  	}
52  	
53  
54  	public void testVisitor() throws Exception {
55  
56  		// set up
57  		Mock mockVisitor = mock(IVisitor.class);
58  
59  		// expectations
60  		mockVisitor.expects(once()).method("visit").with(eq(conditionHolder));
61  
62  		conditionHolder.accept((IVisitor) mockVisitor.proxy());
63  	}
64  	
65  	// --------------------------------------------------------------------------------
66  	// test support classes
67  	// --------------------------------------------------------------------------------
68  
69  	
70  	public class TestCondition extends AbstractCondition {
71  	}
72  
73  }