1 5 package org.easymock.tests; 6 7 import java.io.IOException ; 8 9 import junit.framework.TestCase; 10 11 import org.easymock.MockControl; 12 13 public class UsageThrowableTest extends TestCase { 14 15 private MockControl<IMethods> control; 16 17 private IMethods mock; 18 19 protected void setUp() { 20 control = MockControl.createControl(IMethods.class); 21 mock = control.getMock(); 22 } 23 24 public void testNoUpperLimit() { 25 mock.simpleMethodWithArgument("1"); 26 control.setVoidCallable(MockControl.ONE_OR_MORE); 27 mock.simpleMethodWithArgument("2"); 28 control.replay(); 29 mock.simpleMethodWithArgument("1"); 30 mock.simpleMethodWithArgument("1"); 31 mock.simpleMethodWithArgument("2"); 32 mock.simpleMethodWithArgument("1"); 33 mock.simpleMethodWithArgument("1"); 34 control.verify(); 35 } 36 37 public void testThrowRuntimeException() { 38 testThrowUncheckedException(new RuntimeException ()); 39 } 40 41 public void testThrowSubclassOfRuntimeException() { 42 testThrowUncheckedException(new RuntimeException () { 43 }); 44 } 45 46 public void testThrowError() { 47 testThrowUncheckedException(new Error ()); 48 } 49 50 public void testThrowSubclassOfError() { 51 testThrowUncheckedException(new Error () { 52 }); 53 } 54 55 private void testThrowUncheckedException(Throwable throwable) { 56 mock.throwsNothing(true); 57 control.setReturnValue("true"); 58 mock.throwsNothing(false); 59 control.setThrowable(throwable); 60 61 control.replay(); 62 63 try { 64 mock.throwsNothing(false); 65 fail("Trowable expected"); 66 } catch (Throwable expected) { 67 assertSame(throwable, expected); 68 } 69 70 assertEquals("true", mock.throwsNothing(true)); 71 } 72 73 public void testThrowCheckedException() throws IOException { 74 testThrowCheckedException(new IOException ()); 75 } 76 77 public void testThrowSubclassOfCheckedException() throws IOException { 78 testThrowCheckedException(new IOException () { 79 }); 80 } 81 82 private void testThrowCheckedException(IOException expected) 83 throws IOException { 84 try { 85 mock.throwsIOException(0); 86 control.setReturnValue("Value 0"); 87 mock.throwsIOException(1); 88 control.setThrowable(expected); 89 mock.throwsIOException(2); 90 control.setReturnValue("Value 2"); 91 } catch (IOException e) { 92 fail("Unexpected Exception"); 93 } 94 95 control.replay(); 96 97 assertEquals("Value 0", mock.throwsIOException(0)); 98 assertEquals("Value 2", mock.throwsIOException(2)); 99 100 try { 101 mock.throwsIOException(1); 102 fail("IOException expected"); 103 } catch (IOException expectedException) { 104 assertSame(expectedException, expected); 105 } 106 } 107 108 public void testThrowAfterReturnValue() { 109 mock.throwsNothing(false); 110 control.setReturnValue(""); 111 RuntimeException expectedException = new RuntimeException (); 112 control.setThrowable(expectedException); 113 114 control.replay(); 115 116 assertEquals("", mock.throwsNothing(false)); 117 118 try { 119 mock.throwsNothing(false); 120 fail("RuntimeException expected"); 121 } catch (RuntimeException actualException) { 122 assertSame(expectedException, actualException); 123 } 124 125 control.verify(); 126 } 127 128 } | Popular Tags |