Skip to content
Merged
Show file tree
Hide file tree
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
48 changes: 48 additions & 0 deletions 249053812/test/whitebox/loop_testing/break_loop_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import unittest

from src.lexer import Lexer
from src.parser import Parser
from src.evaluator import evaluate


def evaluate_expr(program: str):
expressions = Parser(Lexer(program)).run()
return evaluate(expressions)


class TestBreakLoopTesting(unittest.TestCase):
# Case 1: Zero iterations
def test_break_zero_iterations(self):
program = """
for(let i = 0; i < 0; i = i + 1) {
break;
}
i;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 2: One iteration
def test_break_one_iteration(self):
program = """
for(let i = 0; i < 5; i = i + 1) {
break;
}
i;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 3: Multiple iterations
def test_break_multiple_iterations(self):
program = """
for(let i = 0; i < 10; i = i + 1) {
if (i == 3) {
break;
}
}
i;
"""
self.assertEqual(evaluate_expr(program), 3)


if __name__ == "__main__":
unittest.main()
54 changes: 54 additions & 0 deletions 249053812/test/whitebox/loop_testing/continue_loop_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import unittest

from src.lexer import Lexer
from src.parser import Parser
from src.evaluator import evaluate


def evaluate_expr(program: str):
expressions = Parser(Lexer(program)).run()
return evaluate(expressions)


class TestContinueLoopTesting(unittest.TestCase):
# Case 1: Zero iterations (continue not executed)
def test_continue_zero_iterations(self):
program = """
let sum = 0;
for(let i = 0; i < 0; i = i + 1) {
sum = sum + i;
continue;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 2: One iteration with continue
def test_continue_one_iteration(self):
program = """
let sum = 0;
for(let i = 0; i < 1; i = i + 1) {
sum = sum + i;
continue;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 3: Multiple iterations with continue
def test_continue_multiple_iterations(self):
program = """
let sum = 0;
for(let i = 0; i < 5; i = i + 1) {
if (i == 2) {
continue;
}
sum = sum + i;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0 + 1 + 3 + 4) # 8


if __name__ == "__main__":
unittest.main()
49 changes: 49 additions & 0 deletions 249053812/test/whitebox/loop_testing/for_loop_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import unittest

from src.lexer import Lexer
from src.parser import Parser
from src.evaluator import evaluate


def evaluate_expr(program: str):
expressions = Parser(Lexer(program)).run()
return evaluate(expressions)


class TestForLoopTesting(unittest.TestCase):
# Case 1: Zero iterations
def test_for_zero_iterations(self):
program = """
let sum = 0;
for(let i = 0; i < 0; i = i + 1) {
sum = sum + i;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 2: One iteration
def test_for_one_iteration(self):
program = """
let sum = 0;
for(let i = 0; i < 1; i = i + 1) {
sum = sum + i;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 3: Multiple iterations
def test_for_multiple_iterations(self):
program = """
let sum = 0;
for(let i = 0; i < 5; i = i + 1) {
sum = sum + i;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 10) # 0+1+2+3+4=10


if __name__ == "__main__":
unittest.main()
55 changes: 55 additions & 0 deletions 249053812/test/whitebox/loop_testing/while_loop_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import unittest

from src.lexer import Lexer
from src.parser import Parser
from src.evaluator import evaluate


def evaluate_expr(program: str):
expressions = Parser(Lexer(program)).run()
return evaluate(expressions)


class TestWhileLoopTesting(unittest.TestCase):
# Case 1: Zero iterations
def test_while_zero_iterations(self):
program = """
let sum = 0;
let i = 0;
while(i < 0) {
sum = sum + i;
i = i + 1;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 2: One iteration
def test_while_one_iteration(self):
program = """
let sum = 0;
let i = 0;
while(i < 1) {
sum = sum + i;
i = i + 1;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 0)

# Case 3: Multiple iterations
def test_while_multiple_iterations(self):
program = """
let sum = 0;
let i = 0;
while(i < 5) {
sum = sum + i;
i = i + 1;
}
sum;
"""
self.assertEqual(evaluate_expr(program), 10) # 0+1+2+3+4=10


if __name__ == "__main__":
unittest.main()
Loading