Skip to content

Commit

Permalink
Add test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
NipunaRanasinghe committed Nov 20, 2024
1 parent 7e00058 commit 1386283
Showing 1 changed file with 66 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import java.util.Map;

import static org.ballerinalang.debugger.test.utils.DebugTestRunner.VariableScope;

/**
* Test class for variable visibility.
*/
Expand Down Expand Up @@ -352,18 +353,18 @@ public void localVariableChildrenVisibilityTest() throws BallerinaTestException

// xml attributes child variable visibility test
Map<String, Variable> xmlAttributesChildVariables =
debugTestRunner.fetchChildVariables(xmlChildVariables.get("attributes"));
debugTestRunner.fetchChildVariables(xmlChildVariables.get("attributes"));
debugTestRunner.assertVariable(xmlAttributesChildVariables, "gender", "\"male\"", "string");

// xml children variable visibility test
Map<String, Variable> xmlChildrenVariables =
debugTestRunner.fetchChildVariables(xmlChildVariables.get("children"));
debugTestRunner.fetchChildVariables(xmlChildVariables.get("children"));
debugTestRunner.assertVariable(xmlChildrenVariables, "[0]", "XMLElement", "xml");
debugTestRunner.assertVariable(xmlChildrenVariables, "[1]", "XMLElement", "xml");

// xml grand children variable visibility test
Map<String, Variable> xmlGrandChildrenVariables =
debugTestRunner.fetchChildVariables(xmlChildrenVariables.get("[0]"));
debugTestRunner.fetchChildVariables(xmlChildrenVariables.get("[0]"));
debugTestRunner.assertVariable(xmlGrandChildrenVariables, "children", "XMLSequence (size = 1)", "xml");

// array child variable visibility test
Expand Down Expand Up @@ -391,23 +392,23 @@ public void localVariableChildrenVisibilityTest() throws BallerinaTestException

// record child variable visibility test (Student record)
Map<String, Variable> studentRecordChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("recordVar"));
debugTestRunner.fetchChildVariables(localVariables.get("recordVar"));
debugTestRunner.assertVariable(studentRecordChildVariables, "1st_name", "\"John Doe\"", "string");
debugTestRunner.assertVariable(studentRecordChildVariables, "grades", "Grades", "record");
debugTestRunner.assertVariable(studentRecordChildVariables, "Ȧɢέ_ /:@[`{~π", "20", "int");
debugTestRunner.assertVariable(studentRecordChildVariables, "course", "\"ballerina\"", "string");

// record child variable visibility test (Grades record)
Map<String, Variable> gradesChildVariables =
debugTestRunner.fetchChildVariables(studentRecordChildVariables.get("grades"));
debugTestRunner.fetchChildVariables(studentRecordChildVariables.get("grades"));
debugTestRunner.assertVariable(gradesChildVariables, "chemistry", "65", "int");
debugTestRunner.assertVariable(gradesChildVariables, "maths", "80", "int");
debugTestRunner.assertVariable(gradesChildVariables, "physics", "75", "int");
debugTestRunner.assertVariable(gradesChildVariables, "english", "80", "int");

// anonymous record child variable visibility test
Map<String, Variable> recordChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("anonRecord"));
debugTestRunner.fetchChildVariables(localVariables.get("anonRecord"));
debugTestRunner.assertVariable(recordChildVariables, "city", "\"London\"", "string");
debugTestRunner.assertVariable(recordChildVariables, "country", "\"UK\"", "string");

Expand All @@ -418,18 +419,18 @@ public void localVariableChildrenVisibilityTest() throws BallerinaTestException

// error details child variable visibility test
Map<String, Variable> errorDetailsChildVariables =
debugTestRunner.fetchChildVariables(errorChildVariables.get("details"));
debugTestRunner.fetchChildVariables(errorChildVariables.get("details"));
debugTestRunner.assertVariable(errorDetailsChildVariables, "message", "\"Simple error occurred\"", "string");

// future child variable visibility test
Map<String, Variable> futureChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("futureVar"));
debugTestRunner.fetchChildVariables(localVariables.get("futureVar"));
debugTestRunner.assertVariable(futureChildVariables, "isDone", "true", "boolean");
debugTestRunner.assertVariable(futureChildVariables, "result", "90", "int");

// object child variable visibility test (Person object)
Map<String, Variable> personObjectChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("objectVar"));
debugTestRunner.fetchChildVariables(localVariables.get("objectVar"));
debugTestRunner.assertVariable(personObjectChildVariables, "1st_name", "\"John\"", "string");
debugTestRunner.assertVariable(personObjectChildVariables, "address", "\"No 20, Palm grove\"", "string");
debugTestRunner.assertVariable(personObjectChildVariables, "parent", "()", "nil");
Expand All @@ -438,7 +439,7 @@ public void localVariableChildrenVisibilityTest() throws BallerinaTestException

// anonymous object child variable visibility test (AnonPerson object)
Map<String, Variable> anonObjectChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("anonObjectVar"));
debugTestRunner.fetchChildVariables(localVariables.get("anonObjectVar"));
debugTestRunner.assertVariable(anonObjectChildVariables, "1st_name", "\"John\"", "string");
debugTestRunner.assertVariable(anonObjectChildVariables, "address", "\"No 20, Palm grove\"", "string");
debugTestRunner.assertVariable(anonObjectChildVariables, "parent", "()", "nil");
Expand All @@ -459,21 +460,21 @@ public void localVariableChildrenVisibilityTest() throws BallerinaTestException

// table with key child variable visibility test
Map<String, Variable> tableWithKeyChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("tableWithKeyVar"));
debugTestRunner.fetchChildVariables(localVariables.get("tableWithKeyVar"));
debugTestRunner.assertVariable(tableWithKeyChildVariables, "[0]", "Employee", "record");
debugTestRunner.assertVariable(tableWithKeyChildVariables, "[1]", "Employee", "record");
debugTestRunner.assertVariable(tableWithKeyChildVariables, "[2]", "Employee", "record");

// table without key child variable visibility test
Map<String, Variable> tableWithoutKeyChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("tableWithoutKeyVar"));
debugTestRunner.fetchChildVariables(localVariables.get("tableWithoutKeyVar"));
debugTestRunner.assertVariable(tableWithoutKeyChildVariables, "[0]", "Employee", "record");
debugTestRunner.assertVariable(tableWithoutKeyChildVariables, "[1]", "Employee", "record");
debugTestRunner.assertVariable(tableWithoutKeyChildVariables, "[2]", "Employee", "record");

// service child variable visibility test
Map<String, Variable> serviceChildVariables =
debugTestRunner.fetchChildVariables(localVariables.get("serviceVar"));
debugTestRunner.fetchChildVariables(localVariables.get("serviceVar"));
debugTestRunner.assertVariable(serviceChildVariables, "i", "5", "int");
}

Expand Down Expand Up @@ -550,6 +551,58 @@ public void workerVariableVisibilityTest() throws BallerinaTestException {
}
}

@Test(description = "Binding pattern variables related visibility test", enabled = false)
public void bindingPatternVariableVisibilityTest() throws BallerinaTestException {

String testProjectName = "binding-pattern-tests";
String testModuleFileName = "main.bal";
debugTestRunner = new DebugTestRunner(testProjectName, testModuleFileName, true);

debugTestRunner.addBreakPoint(new BallerinaTestDebugPoint(debugTestRunner.testEntryFilePath, 36));
debugTestRunner.addBreakPoint(new BallerinaTestDebugPoint(debugTestRunner.testEntryFilePath, 41));
debugTestRunner.addBreakPoint(new BallerinaTestDebugPoint(debugTestRunner.testEntryFilePath, 44));
debugTestRunner.addBreakPoint(new BallerinaTestDebugPoint(debugTestRunner.testEntryFilePath, 74));

debugTestRunner.initDebugSession(DebugUtils.DebuggeeExecutionKind.RUN);
Pair<BallerinaTestDebugPoint, StoppedEventArguments> debugHitInfo = debugTestRunner.waitForDebugHit(25000);

// simple binding pattern variables
localVariables = debugTestRunner.fetchVariables(debugHitInfo.getRight(), DebugTestRunner.VariableScope.LOCAL);
debugTestRunner.assertVariable(localVariables, "profession", "\"Software Engineer\"", "string");

// TODO: enable after fixing runtime issue https://github.com/ballerina-platform/ballerina-lang/issues/43623

// // list binding pattern variables
// debugTestRunner.resumeProgram(debugHitInfo.getRight(), DebugTestRunner.DebugResumeKind.NEXT_BREAKPOINT);
// debugHitInfo = debugTestRunner.waitForDebugHit(10000);
// localVariables = debugTestRunner.fetchVariables(debugHitInfo.getRight(), DebugTestRunner.VariableScope.LOCAL);
// debugTestRunner.assertVariable(localVariables, "id", "1234", "int");
// debugTestRunner.assertVariable(localVariables, "firstName", "\"John Doe\"", "string");
//
// // mapping binding pattern variables
// debugTestRunner.resumeProgram(debugHitInfo.getRight(), DebugTestRunner.DebugResumeKind.NEXT_BREAKPOINT);
// debugHitInfo = debugTestRunner.waitForDebugHit(10000);
// localVariables = debugTestRunner.fetchVariables(debugHitInfo.getRight(), DebugTestRunner.VariableScope.LOCAL);
// debugTestRunner.assertVariable(localVariables, "givenName", "\"Anne\"", "string");
// debugTestRunner.assertVariable(localVariables, "surName", "\"Frank\"", "string");
//
// // error binding pattern variables
// debugTestRunner.resumeProgram(debugHitInfo.getRight(), DebugTestRunner.DebugResumeKind.NEXT_BREAKPOINT);
// debugHitInfo = debugTestRunner.waitForDebugHit(10000);
// localVariables = debugTestRunner.fetchVariables(debugHitInfo.getRight(), DebugTestRunner.VariableScope.LOCAL);
// debugTestRunner.assertVariable(localVariables, "cause", "\"Database Error\"", "error");
// debugTestRunner.assertVariable(localVariables, "code", "20", "int");
// debugTestRunner.assertVariable(localVariables, "reason", "\"deadlock condition\"", "string");
//
// // list binding patterns inside match statement
// debugTestRunner.resumeProgram(debugHitInfo.getRight(), DebugTestRunner.DebugResumeKind.NEXT_BREAKPOINT);
// debugHitInfo = debugTestRunner.waitForDebugHit(10000);
// localVariables = debugTestRunner.fetchVariables(debugHitInfo.getRight(), DebugTestRunner.VariableScope.LOCAL);
// debugTestRunner.assertVariable(localVariables, "remove", "Remove", "string");
// debugTestRunner.assertVariable(localVariables, "all", "*", "string");
// debugTestRunner.assertVariable(localVariables, "isDir", "true", "boolean");
}

@Override
@AfterMethod(alwaysRun = true)
public void cleanUp() {
Expand Down

0 comments on commit 1386283

Please sign in to comment.