blob: f2a15118bb5117be4938fe443fd91be4266d9f9c [file] [log] [blame]
/*
* 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"));
}
}