Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 30 additions & 4 deletions src/test/interpreter/VisitorUnitTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class VisitorUnitTest {

@Spy private final Visitor spyVisitor = visitor;
@Mock private MineScriptParser.AssignContext mockAssignContext;
@Mock private MineScriptParser.ExpressionContext mockExpressionContext;
@Mock private MineScriptParser.ExpressionContext mockExpressionContext1;
@Mock private MineScriptParser.ExpressionContext mockExpressionContext2;
@Mock private MineScriptParser.BoolContext mockBoolContext;
Expand All @@ -37,10 +38,8 @@ class VisitorUnitTest {
@Mock private MineScriptParser.IdContext mockIdContext;
@Mock private MineScriptParser.NegContext mockNegContext;
@Mock private MineScriptParser.NotExprContext mockNotExprContext;
@Mock private MineScriptParser.AndContext mockAndContext;
@Mock private MineScriptParser.AddSubContext mockAddSubContext;



@ParameterizedTest
@ValueSource(ints = {-1000, -10, 0, 10, 1000})
void visitAssignStoresCorrectNumber(int value) {
Expand Down Expand Up @@ -259,6 +258,34 @@ void visitNumberInvalidInputThrowsRuntimeException(){
Mockito.when(mockNumberContext.NUMBER()).thenReturn(new MockTerminalNode("abc"));
Assertions.assertThrows(RuntimeException.class, () -> spyVisitor.visitNumber(mockNumberContext));
}
@Test
void visitAndValidBoolsReturnsTrue(){
Mockito.when(mockAndContext.expression(0)).thenReturn(mockExpressionContext1);
Mockito.when(mockAndContext.expression(1)).thenReturn(mockExpressionContext2);
Mockito.when(spyVisitor.visit(mockExpressionContext1)).thenReturn(new MSBool(true));
Mockito.when(spyVisitor.visit(mockExpressionContext2)).thenReturn(new MSBool(true));

MSType result = spyVisitor.visitAnd(mockAndContext);
Assertions.assertTrue(((MSBool) result).getValue());
}
@Test
void visitAndBoolsTrueAndFalseReturnsFalse(){
Mockito.when(mockAndContext.expression(0)).thenReturn(mockExpressionContext1);
Mockito.when(mockAndContext.expression(1)).thenReturn(mockExpressionContext2);
Mockito.when(spyVisitor.visit(mockExpressionContext1)).thenReturn(new MSBool(true));
Mockito.when(spyVisitor.visit(mockExpressionContext2)).thenReturn(new MSBool(false));

MSType result = spyVisitor.visitAnd(mockAndContext);
Assertions.assertFalse(((MSBool) result).getValue());
}
@Test
void visitAndFalseWithShortCircuitReturnsFalse() {
Mockito.when(mockAndContext.expression(0)).thenReturn(mockExpressionContext1);
Mockito.when(spyVisitor.visit(mockExpressionContext1)).thenReturn(new MSBool(false));

MSType result = spyVisitor.visitAnd(mockAndContext);
Assertions.assertFalse(((MSBool) result).getValue());
}

@ParameterizedTest
@CsvSource ({"1, 2, +", "2, 1, -", "0, 0, +", "-1, -2, +", "-2, -1, -"})
Expand All @@ -276,5 +303,4 @@ void visitAddSubValidInputReturnsNumber(int value1, int value2, String operator)
Assertions.assertEquals(value1 - value2, ((MSNumber) result).getValue());
}
}

}