• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockitousage.bugs.varargs;
6 
7 import static org.junit.Assert.assertEquals;
8 import static org.mockito.Mockito.any;
9 import static org.mockito.Mockito.anyString;
10 import static org.mockito.Mockito.eq;
11 import static org.mockito.Mockito.never;
12 import static org.mockito.Mockito.verify;
13 import static org.mockito.Mockito.when;
14 
15 import org.junit.Test;
16 import org.mockito.Mock;
17 import org.mockitoutil.TestBase;
18 
19 // see issue 62
20 public class VarargsNotPlayingWithAnyTest extends TestBase {
21 
22     interface VarargMethod {
run(String... args)23         Object run(String... args);
24     }
25 
26     @Mock VarargMethod mock;
27 
28     @Test
shouldMatchAny()29     public void shouldMatchAny() {
30         mock.run("a", "b");
31 
32         verify(mock).run(anyString(), anyString());
33         verify(mock).run((String) any(), (String) any());
34 
35         verify(mock).run((String[]) any());
36 
37         verify(mock, never()).run();
38         verify(mock, never()).run(anyString(), eq("f"));
39     }
40 
41     @Test
shouldAllowUsinganyForVarArgs()42     public void shouldAllowUsinganyForVarArgs() {
43         mock.run("a", "b");
44         verify(mock).run((String[]) any());
45     }
46 
47     @Test
shouldStubUsingAny()48     public void shouldStubUsingAny() {
49         when(mock.run((String[]) any())).thenReturn("foo");
50 
51         assertEquals("foo", mock.run("a", "b"));
52     }
53 }
54