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