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