From 7788b3a0e615183e16b1e6d01ca9a5d37c61fdd5 Mon Sep 17 00:00:00 2001 From: Martin Mladenov <30376060+martinmladenov@users.noreply.github.com> Date: Mon, 22 Jul 2024 19:57:58 +0300 Subject: [PATCH] Fix Mockito do-syntax (#274) * Fix do-syntax in tests * Fix do-syntax handling in MockitoWhen --- .../andy/codechecker/checks/MockitoWhen.java | 19 +++++----------- .../fixtures/MockitoWhenCalls.java | 22 +++++++++++++++---- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/andy/src/main/java/nl/tudelft/cse1110/andy/codechecker/checks/MockitoWhen.java b/andy/src/main/java/nl/tudelft/cse1110/andy/codechecker/checks/MockitoWhen.java index 239ab796..29d984b7 100644 --- a/andy/src/main/java/nl/tudelft/cse1110/andy/codechecker/checks/MockitoWhen.java +++ b/andy/src/main/java/nl/tudelft/cse1110/andy/codechecker/checks/MockitoWhen.java @@ -47,16 +47,12 @@ public boolean visit(MethodInvocation mi) { * If the method call just after when() matches the one we are expecting, bingo! */ if(inWhenMode) { - if(methodToSetUp.equals(methodName) || methodToSetUp.equals(previousMethodName)) { + if(methodToSetUp.equals(methodName) || + methodToSetUp.equals(previousMethodName) && allowedDoInvocations.contains(methodName)) { numberOfCallsToWhen++; - inWhenMode = false; - previousMethodName = ""; - } else if(notInDoWhenOrNoMatch(methodName)){ - inWhenMode = false; - previousMethodName = ""; - } else { - previousMethodName = methodName; } + inWhenMode = false; + previousMethodName = ""; } else { /** * We wait for a call to when(). @@ -70,12 +66,7 @@ public boolean visit(MethodInvocation mi) { } return super.visit(mi); } - private boolean notInDoWhenOrNoMatch(String methodName){ - return !methodName.equals("when") - && - (allowedDoInvocations.contains(previousMethodName) - || !allowedDoInvocations.contains(methodName)); - } + @Override public boolean result() { return comparison.compare(numberOfCallsToWhen, expectedNumberOfOccurrences); diff --git a/andy/src/test/resources/codechecker/fixtures/MockitoWhenCalls.java b/andy/src/test/resources/codechecker/fixtures/MockitoWhenCalls.java index e348087e..8efd1853 100644 --- a/andy/src/test/resources/codechecker/fixtures/MockitoWhenCalls.java +++ b/andy/src/test/resources/codechecker/fixtures/MockitoWhenCalls.java @@ -36,7 +36,7 @@ void t2() { void t3(){ List mockedList = mock(List.class); Mockito.doThrow(IllegalArgumentException.class).when(mockedList).toString(); - doNothing().when(mockedList.size()); + doNothing().when(mockedList).size(); doReturn("2").when(mockedList).get(any(Integer.class)); verify(mockedList, times(2)).toString(); @@ -46,9 +46,9 @@ void t3(){ @Test void t4(){ List mockedList = mock(List.class); - Mockito.doNothing().when(mockedList.size()); - doReturn("2").when(mockedList.get(any(Integer.class))); - doReturn("3").when(mockedList.remove(any(Integer.class))); + Mockito.doNothing().when(mockedList).size(); + doReturn("2").when(mockedList).get(any(Integer.class)); + doReturn("3").when(mockedList).remove(any(Integer.class)); verify(mockedList, times(1)).remove(1); verify(mockedList, times(1)).remove(2); @@ -57,4 +57,18 @@ void t4(){ verify(mockedList, times(1)).get(5); } + @Test + void t5(){ + List mockedList = mock(List.class); + Mockito.doReturn(3).when(mockedList).size(); + mockedList.get(3); + } + + @Test + void t6(){ + List mockedList = mock(List.class); + Mockito.doReturn(3).when(mockedList.get(3)); + mockedList.get(3); + } + }