/* * 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) {} } }