/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.puzzlers;
import org.junit.Test;
import org.mockito.exceptions.verification.WantedButNotInvoked;
import org.mockitoutil.TestBase;
import static junit.framework.TestCase.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class OverloadingPuzzleTest extends TestBase {
private Super mock;
private void setMockWithDowncast(Super mock) {
this.mock = mock;
}
private interface Super {
void say(Object message);
}
private interface Sub extends Super {
void say(String message);
}
private void say(Object message) {
mock.say(message);
}
@Test
public void shouldUseArgumentTypeWhenOverloadingPuzzleDetected() throws Exception {
Sub sub = mock(Sub.class);
setMockWithDowncast(sub);
say("Hello");
try {
verify(sub).say("Hello");
fail();
} catch (WantedButNotInvoked e) {}
}
}