Blob Blame History Raw
diff -r d382aea89c3d easymock/src/main/java/org/easymock/EasyMock.java
--- a/easymock/src/main/java/org/easymock/EasyMock.java	Thu Feb 23 10:32:43 2012 +0100
+++ b/easymock/src/main/java/org/easymock/EasyMock.java	Thu Feb 23 11:25:46 2012 +0100
@@ -1452,81 +1452,200 @@
     
     /**
      * Expect any object but captures it for later use.
-     *  
-     * @param <T> Type of the captured object
-     * @param captured Where the parameter is captured
+     *
+     * @param <T>
+     *            Type of the captured object
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>null</code>
      */
-    public static <T> T capture(Capture<T> captured) {
+    public static <T> T capture(final Capture<T> captured) {
         reportMatcher(new Captures<T>(captured));
         return null;
     }
-    
+
+    /**
+     * Expect any boolean but captures it for later use.
+     *
+     * @param captured
+     *            Where the parameter is captured
+     * @return <code>false</code>
+     */
+    public static boolean captureBoolean(final Capture<Boolean> captured) {
+        reportMatcher(new Captures<Boolean>(captured));
+        return false;
+    }
+
+//    /**
+//     * Expect any boolean but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static boolean capture(final Capture<Boolean> captured) {
+//        return captureBoolean(captured);
+//    }
+
     /**
      * Expect any int but captures it for later use.
-     *  
-     * @param captured Where the parameter is captured
+     *
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>0</code>
      */
-    public static int capture(Capture<Integer> captured) {
+    public static int captureInt(final Capture<Integer> captured) {
         reportMatcher(new Captures<Integer>(captured));
         return 0;
     }
-    
+//    /**
+//     * Expect any int but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static int capture(final Capture<Integer> captured) {
+//        return captureInt(captured);
+//    }
+
     /**
      * Expect any long but captures it for later use.
-     *  
-     * @param captured Where the parameter is captured
+     *
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>0</code>
      */
-    public static long capture(Capture<Long> captured) {
+    public static long captureLong(final Capture<Long> captured) {
         reportMatcher(new Captures<Long>(captured));
         return 0;
     }
-    
+//    /**
+//     * Expect any long but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static long capture(final Capture<Long> captured) {
+//        return captureLong(captured);
+//    }
+
     /**
      * Expect any float but captures it for later use.
-     *  
-     * @param captured Where the parameter is captured
+     *
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>0</code>
      */
-    public static float capture(Capture<Float> captured) {
+    public static float captureFloat(final Capture<Float> captured) {
         reportMatcher(new Captures<Float>(captured));
         return 0;
     }
-    
+//    /**
+//     * Expect any float but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static float capture(final Capture<Float> captured) {
+//        return captureFloat(captured);
+//    }
+
     /**
      * Expect any double but captures it for later use.
-     *  
-     * @param captured Where the parameter is captured
+     *
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>0</code>
      */
-    public static double capture(Capture<Double> captured) {
+    public static double captureDouble(final Capture<Double> captured) {
         reportMatcher(new Captures<Double>(captured));
         return 0;
     }
+//    /**
+//     * Expect any double but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static double capture(final Capture<Double> captured) {
+//        return captureDouble(captured);
+//    }
 
     /**
      * Expect any byte but captures it for later use.
-     *  
-     * @param captured Where the parameter is captured
+     *
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>0</code>
      */
-    public static byte capture(Capture<Byte> captured) {
+    public static byte captureByte(final Capture<Byte> captured) {
         reportMatcher(new Captures<Byte>(captured));
         return 0;
     }
-    
+//    /**
+//     * Expect any byte but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static byte capture(final Capture<Byte> captured) {
+//        return captureByte(captured);
+//    }
+
     /**
      * Expect any char but captures it for later use.
-     *  
-     * @param captured Where the parameter is captured
+     *
+     * @param captured
+     *            Where the parameter is captured
      * @return <code>0</code>
      */
-    public static char capture(Capture<Character> captured) {
+    public static char captureChar(final Capture<Character> captured) {
         reportMatcher(new Captures<Character>(captured));
         return 0;
     }
+//    /**
+//     * Expect any char but captures it for later use.
+//     *
+//     * @param captured
+//     *            Where the parameter is captured
+//     * @return <code>0</code>
+//     *
+//     * @deprecated Because of harder erasure enforcement, doesn't compile in
+//     *             Java 7
+//     */
+//    @Deprecated
+//    public static char capture(final Capture<Character> captured) {
+//        return captureChar(captured);
+//    }
     
     /**
      * Switches the given mock objects (more exactly: the controls of the mock
diff -r d382aea89c3d easymock/src/test/java/org/easymock/tests2/CaptureTest.java
--- a/easymock/src/test/java/org/easymock/tests2/CaptureTest.java	Thu Feb 23 10:32:43 2012 +0100
+++ b/easymock/src/test/java/org/easymock/tests2/CaptureTest.java	Thu Feb 23 11:25:46 2012 +0100
@@ -1,12 +1,12 @@
-/*
- * Copyright 2003-2009 OFFIS, Henri Tremblay
- * 
+/**
+ * Copyright 2001-2011 the original author or authors.
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *     http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -27,10 +27,13 @@
 import org.junit.Before;
 import org.junit.Test;
 
+/**
+ * @author Henri Tremblay
+ */
 public class CaptureTest {
 
     public static class A {
-        public String foo(IMethods methods) {
+        public String foo(final IMethods methods) {
             return methods.oneArg(2);
         }
     }
@@ -42,16 +45,16 @@
     @After
     public void tearDown() throws Exception {
     }
-    
-    private Capture<Integer> testCaptureType(CaptureType type) {
-        IMethods mock = createMock(IMethods.class);
-        Capture<Integer> captured = new Capture<Integer>(type);
-                
-        expect(mock.oneArg(capture(captured))).andReturn("1");
+
+    private Capture<Integer> testCaptureType(final CaptureType type) {
+        final IMethods mock = createMock(IMethods.class);
+        final Capture<Integer> captured = new Capture<Integer>(type);
+
+        expect(mock.oneArg(captureInt(captured))).andReturn("1");
         expect(mock.oneArg(anyInt())).andReturn("1");
-        expect(mock.oneArg(capture(captured))).andReturn("2").times(2);
-        mock.twoArgumentMethod(capture(captured), eq(5));
-        mock.twoArgumentMethod(capture(captured), capture(captured));
+        expect(mock.oneArg(captureInt(captured))).andReturn("2").times(2);
+        mock.twoArgumentMethod(captureInt(captured), eq(5));
+        mock.twoArgumentMethod(captureInt(captured), captureInt(captured));
 
         replay(mock);
 
@@ -66,28 +69,28 @@
 
         return captured;
     }
-    
+
     @Test
     public void testCaptureFirst() {
-        Capture<Integer> captured = testCaptureType(CaptureType.FIRST);
+        final Capture<Integer> captured = testCaptureType(CaptureType.FIRST);
         assertEquals(0, (int) captured.getValue());
     }
 
     @Test
     public void testCaptureLast() {
-        Capture<Integer> captured = testCaptureType(CaptureType.LAST);
+        final Capture<Integer> captured = testCaptureType(CaptureType.LAST);
         assertEquals(7, (int) captured.getValue());
     }
 
     @Test
     public void testCaptureAll() {
-        Capture<Integer> captured = testCaptureType(CaptureType.ALL);
+        final Capture<Integer> captured = testCaptureType(CaptureType.ALL);
         assertEquals(Arrays.asList(0, 2, 3, 4, 6, 7), captured.getValues());
     }
 
     @Test
     public void testCaptureNone() {
-        Capture<Integer> captured = testCaptureType(CaptureType.NONE);
+        final Capture<Integer> captured = testCaptureType(CaptureType.NONE);
         assertFalse(captured.hasCaptured());
     }
 
@@ -96,11 +99,10 @@
 
     @Test
     public void testCaptureRightOne() {
-        Capture<String> captured = new Capture<String>();
-        IMethods mock = createMock(IMethods.class);
+        final Capture<String> captured = new Capture<String>();
+        final IMethods mock = createMock(IMethods.class);
 
-        expect(mock.oneArg(and(eq("test"), capture(captured)))).andReturn(
-                "answer1");
+        expect(mock.oneArg(and(eq("test"), capture(captured)))).andReturn("answer1");
         expect(mock.oneArg("a")).andReturn("answer2");
 
         replay(mock);
@@ -114,10 +116,11 @@
         verify(mock);
     }
 
+    @SuppressWarnings("deprecation")
     @Test
     public void testPrimitiveVsObject() {
-        Capture<Integer> capture = new Capture<Integer>();
-        IMethods mock = createMock(IMethods.class);
+        final Capture<Integer> capture = new Capture<Integer>();
+        final IMethods mock = createMock(IMethods.class);
 
         expect(mock.oneArg(capture(capture))).andReturn("answer");
         expect(mock.oneArg((Integer) capture(capture))).andReturn("answer");
@@ -135,11 +138,10 @@
 
     @Test
     public void testAnd() {
-        Capture<String> captured = new Capture<String>();
-        IMethods mock = createMock(IMethods.class);
+        final Capture<String> captured = new Capture<String>();
+        final IMethods mock = createMock(IMethods.class);
 
-        expect(mock.oneArg(and(capture(captured), eq("test")))).andReturn(
-                "answer");
+        expect(mock.oneArg(and(capture(captured), eq("test")))).andReturn("answer");
 
         replay(mock);
 
@@ -148,17 +150,19 @@
 
         verify(mock);
     }
-    
+
+    @SuppressWarnings("deprecation")
     @Test
-    public void testPrimitive() {
-        Capture<Integer> captureI = new Capture<Integer>();
-        Capture<Long> captureL = new Capture<Long>();
-        Capture<Float> captureF = new Capture<Float>();
-        Capture<Double> captureD = new Capture<Double>();
-        Capture<Byte> captureB = new Capture<Byte>();
-        Capture<Character> captureC = new Capture<Character>();
+    public void testPrimitiveDeprecated() {
+        final Capture<Integer> captureI = new Capture<Integer>();
+        final Capture<Long> captureL = new Capture<Long>();
+        final Capture<Float> captureF = new Capture<Float>();
+        final Capture<Double> captureD = new Capture<Double>();
+        final Capture<Byte> captureB = new Capture<Byte>();
+        final Capture<Character> captureC = new Capture<Character>();
+        final Capture<Boolean> captureBool = new Capture<Boolean>();
 
-        IMethods mock = createMock(IMethods.class);
+        final IMethods mock = createMock(IMethods.class);
 
         expect(mock.oneArg(capture(captureI))).andReturn("answerI");
         expect(mock.oneArg(capture(captureL))).andReturn("answerL");
@@ -166,6 +170,7 @@
         expect(mock.oneArg(capture(captureD))).andReturn("answerD");
         expect(mock.oneArg(capture(captureB))).andReturn("answerB");
         expect(mock.oneArg(capture(captureC))).andReturn("answerC");
+        expect(mock.oneArg(capture(captureBool))).andReturn("answerZ");
 
         replay(mock);
 
@@ -175,6 +180,7 @@
         assertEquals("answerD", mock.oneArg(4.0));
         assertEquals("answerB", mock.oneArg((byte) 5));
         assertEquals("answerC", mock.oneArg((char) 6));
+        assertEquals("answerZ", mock.oneArg(true));
 
         assertEquals(1, captureI.getValue().intValue());
         assertEquals(2l, captureL.getValue().longValue());
@@ -182,19 +188,60 @@
         assertEquals(4.0, captureD.getValue().doubleValue(), 0.0);
         assertEquals((byte) 5, captureB.getValue().byteValue());
         assertEquals((char) 6, captureC.getValue().charValue());
-        
+        assertEquals(true, captureBool.getValue().booleanValue());
+
         verify(mock);
     }
-    
+
+    @Test
+    public void testPrimitive() {
+        final Capture<Integer> captureI = new Capture<Integer>();
+        final Capture<Long> captureL = new Capture<Long>();
+        final Capture<Float> captureF = new Capture<Float>();
+        final Capture<Double> captureD = new Capture<Double>();
+        final Capture<Byte> captureB = new Capture<Byte>();
+        final Capture<Character> captureC = new Capture<Character>();
+        final Capture<Boolean> captureBool = new Capture<Boolean>();
+
+        final IMethods mock = createMock(IMethods.class);
+
+        expect(mock.oneArg(captureInt(captureI))).andReturn("answerI");
+        expect(mock.oneArg(captureLong(captureL))).andReturn("answerL");
+        expect(mock.oneArg(captureFloat(captureF))).andReturn("answerF");
+        expect(mock.oneArg(captureDouble(captureD))).andReturn("answerD");
+        expect(mock.oneArg(captureByte(captureB))).andReturn("answerB");
+        expect(mock.oneArg(captureChar(captureC))).andReturn("answerC");
+        expect(mock.oneArg(captureBoolean(captureBool))).andReturn("answerZ");
+
+        replay(mock);
+
+        assertEquals("answerI", mock.oneArg(1));
+        assertEquals("answerL", mock.oneArg(2l));
+        assertEquals("answerF", mock.oneArg(3.0f));
+        assertEquals("answerD", mock.oneArg(4.0));
+        assertEquals("answerB", mock.oneArg((byte) 5));
+        assertEquals("answerC", mock.oneArg((char) 6));
+        assertEquals("answerZ", mock.oneArg(true));
+
+        assertEquals(1, captureI.getValue().intValue());
+        assertEquals(2l, captureL.getValue().longValue());
+        assertEquals(3.0f, captureF.getValue().floatValue(), 0.0);
+        assertEquals(4.0, captureD.getValue().doubleValue(), 0.0);
+        assertEquals((byte) 5, captureB.getValue().byteValue());
+        assertEquals((char) 6, captureC.getValue().charValue());
+        assertEquals(true, captureBool.getValue().booleanValue());
+
+        verify(mock);
+    }
+
     @Test
     public void testCapture() {
-        Capture<String> capture = new Capture<String>();
+        final Capture<String> capture = new Capture<String>();
         assertFalse(capture.hasCaptured());
         try {
             capture.getValue();
             fail("Should not be allowed");
-        }
-        catch(AssertionError e) {
+        } catch (final AssertionError e) {
             assertEquals("Nothing captured yet", e.getMessage());
         }
         assertEquals("Nothing captured yet", capture.toString());
@@ -207,29 +254,26 @@
         try {
             capture.getValue();
             fail();
-        }
-        catch(AssertionError e) {
+        } catch (final AssertionError e) {
             assertEquals("Nothing captured yet", e.getMessage());
         }
-        
+
         capture.setValue(null);
         assertTrue(capture.hasCaptured());
         assertNull(capture.getValue());
         assertEquals("null", capture.toString());
     }
-    
+
     @Test
     public void testCaptureMultiple() {
-        Capture<String> capture = new Capture<String>(CaptureType.ALL);
+        final Capture<String> capture = new Capture<String>(CaptureType.ALL);
         capture.setValue("a");
         capture.setValue("b");
         try {
             capture.getValue();
             fail();
-        } catch (AssertionError e) {
-            assertEquals(
-                    "More than one value captured: " + capture.getValues(), e
-                            .getMessage());
+        } catch (final AssertionError e) {
+            assertEquals("More than one value captured: " + capture.getValues(), e.getMessage());
         }
         assertEquals(Arrays.asList("a", "b"), capture.getValues());
     }
@@ -237,30 +281,26 @@
     @Test
     public void testCapture_2617107() {
 
-        IMethods mock = createMock(IMethods.class);
+        final IMethods mock = createMock(IMethods.class);
 
-        Capture<String> cap1 = new Capture<String>();
-        Capture<String> cap2 = new Capture<String>();
-        Capture<String> cap3 = new Capture<String>();
-        Capture<String> cap4 = new Capture<String>();
+        final Capture<String> cap1 = new Capture<String>();
+        final Capture<String> cap2 = new Capture<String>();
+        final Capture<String> cap3 = new Capture<String>();
+        final Capture<String> cap4 = new Capture<String>();
 
-        mock.simpleMethodWithArgument(and(isA(String.class),
-                capture(cap1)));
-        mock.simpleMethodWithArgument(and(isA(String.class),
-                capture(cap2)));
-        mock.simpleMethodWithArgument(and(isA(String.class),
-                capture(cap3)));
-        mock.simpleMethodWithArgument(and(isA(String.class),
-                capture(cap4)));
+        mock.simpleMethodWithArgument(and(isA(String.class), capture(cap1)));
+        mock.simpleMethodWithArgument(and(isA(String.class), capture(cap2)));
+        mock.simpleMethodWithArgument(and(isA(String.class), capture(cap3)));
+        mock.simpleMethodWithArgument(and(isA(String.class), capture(cap4)));
 
         replay(mock);
 
         final String[] s = { "one", "two", "three", "four" };
 
-        for (int i = 0; i < s.length; i++) {
-            mock.simpleMethodWithArgument(s[i]);
+        for (final String element : s) {
+            mock.simpleMethodWithArgument(element);
         }
-        
+
         assertEquals("one", cap1.getValue());
         assertEquals("two", cap2.getValue());
         assertEquals("three", cap3.getValue());
@@ -268,7 +308,7 @@
 
         verify(mock);
     }
-    
+
     @Test
     public void testCaptureNonStrictControl_2133741() {
         testCaptureHelper(createMock(IMethods.class));
@@ -279,9 +319,9 @@
         testCaptureHelper(createStrictMock(IMethods.class));
     }
 
-    protected void testCaptureHelper(IMethods mock) {
-        Capture<String> capture1 = new Capture<String>();
-        Capture<String> capture2 = new Capture<String>();
+    protected void testCaptureHelper(final IMethods mock) {
+        final Capture<String> capture1 = new Capture<String>();
+        final Capture<String> capture2 = new Capture<String>();
 
         mock.simpleMethodWithArgument(capture(capture1));
         mock.simpleMethodWithArgument(capture(capture2));
@@ -294,25 +334,25 @@
         assertTrue(capture1.hasCaptured());
         assertTrue(capture2.hasCaptured());
         assertFalse(capture1.getValue() == capture2.getValue());
-    } 
-    
+    }
+
     @Test
     public void testCapture1_2446744() {
-        Capture<String> capture1 = new Capture<String>();
-        Capture<String> capture2 = new Capture<String>();
-        Capture<String> capture3 = new Capture<String>();
-        IMethods mock = createMock(IMethods.class);
+        final Capture<String> capture1 = new Capture<String>();
+        final Capture<String> capture2 = new Capture<String>();
+        final Capture<String> capture3 = new Capture<String>();
+        final IMethods mock = createMock(IMethods.class);
         expect(mock.oneArg(capture(capture1))).andReturn("1").once();
         expect(mock.oneArg(capture(capture2))).andReturn("2").once();
         expect(mock.oneArg(capture(capture3))).andReturn("3").once();
-        
+
         replay(mock);
-        
+
         for (int i = 0; i < 3; i++) {
-            String string = "Run" + (i + 1);
+            final String string = "Run" + (i + 1);
             mock.oneArg(string);
         }
-        
+
         assertEquals("Run3", capture3.getValue());
         assertEquals("Run2", capture2.getValue());
         assertEquals("Run1", capture1.getValue());
@@ -320,16 +360,16 @@
 
     @Test
     public void testCapture2_2446744() {
-        Capture<String> capture = new Capture<String>(CaptureType.ALL);
-        IMethods mock = createMock(IMethods.class);
+        final Capture<String> capture = new Capture<String>(CaptureType.ALL);
+        final IMethods mock = createMock(IMethods.class);
         expect(mock.oneArg(capture(capture))).andReturn("1").once();
         expect(mock.oneArg(capture(capture))).andReturn("2").once();
         expect(mock.oneArg(capture(capture))).andReturn("3").once();
-        
+
         replay(mock);
-        
+
         for (int i = 0; i < 3; i++) {
-            String string = "Run" + (i + 1);
+            final String string = "Run" + (i + 1);
             mock.oneArg(string);
         }
 
@@ -338,8 +378,8 @@
 
     @Test
     public void testCaptureFromStub() {
-        Capture<String> capture = new Capture<String>(CaptureType.ALL);
-        IMethods mock = createMock(IMethods.class);
+        final Capture<String> capture = new Capture<String>(CaptureType.ALL);
+        final IMethods mock = createMock(IMethods.class);
         expect(mock.oneArg(capture(capture))).andStubReturn("1");
 
         replay(mock);