| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| |
| package org.mockitousage.bugs.varargs; |
| |
| import org.junit.Test; |
| import org.mockito.Mock; |
| import org.mockitoutil.TestBase; |
| |
| import static junit.framework.TestCase.assertEquals; |
| import static junit.framework.TestCase.fail; |
| import static org.mockito.Mockito.*; |
| |
| //see issue 62 |
| public class VarargsNotPlayingWithAnyObjectTest extends TestBase { |
| |
| interface VarargMethod { |
| Object run(String... args); |
| } |
| |
| @Mock VarargMethod mock; |
| |
| @Test |
| public void shouldMatchAnyVararg() { |
| mock.run("a", "b"); |
| |
| verify(mock).run(anyString(), anyString()); |
| verify(mock).run((String) anyObject(), (String) anyObject()); |
| |
| verify(mock).run((String[]) anyVararg()); |
| |
| verify(mock, never()).run(); |
| verify(mock, never()).run(anyString(), eq("f")); |
| } |
| |
| //we cannot use anyObject() for entire varargs because it makes the verification pick up extra invocations |
| //see other tests in this package |
| @Test |
| public void shouldNotAllowUsingAnyObjectForVarArgs() { |
| mock.run("a", "b"); |
| |
| try { |
| verify(mock).run((String[]) anyObject()); |
| fail(); |
| } catch (AssertionError e) {} |
| } |
| |
| @Test |
| public void shouldStubUsingAnyVarargs() { |
| when(mock.run((String[]) anyVararg())).thenReturn("foo"); |
| |
| assertEquals("foo", mock.run("a", "b")); |
| } |
| } |