Skip to content
Open
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,5 @@ c/.idea/c.iml
/dataSources/
/dataSources.local.xml
/httpRequests/
*.pyc
__pycache__/
47 changes: 47 additions & 0 deletions python/tests/test_truth_table_generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import unittest
import sys
import os

# Add the root directory to the python path so we can import the module correctly
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from python.truth_table_generator import generate

class TestTruthTableGenerator(unittest.TestCase):

def test_generate_1_variable(self):
"""Test generating truth table values for 1 variable."""
result = generate(['p'])
self.assertEqual(len(result), 2) # 2^1 rows
self.assertTrue(all(len(row) == 1 for row in result)) # 1 column
self.assertEqual(result, [[0], [1]])

def test_generate_2_variables(self):
"""Test generating truth table values for 2 variables."""
result = generate(['p', 'q'])
self.assertEqual(len(result), 4) # 2^2 rows
self.assertTrue(all(len(row) == 2 for row in result)) # 2 columns
self.assertEqual(result, [[0, 0], [0, 1], [1, 0], [1, 1]])

def test_generate_3_variables(self):
"""Test generating truth table values for 3 variables."""
result = generate(['p', 'q', 'r'])
self.assertEqual(len(result), 8) # 2^3 rows
self.assertTrue(all(len(row) == 3 for row in result)) # 3 columns
self.assertEqual(result, [
[0, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 1],
[1, 0, 0],
[1, 0, 1],
[1, 1, 0],
[1, 1, 1]
])

def test_generate_empty_variables(self):
"""Test generating truth table values with an empty variable list."""
result = generate([])
self.assertEqual(result, [[]])

if __name__ == '__main__':
unittest.main()
3 changes: 3 additions & 0 deletions python/truth_table_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ def generate(vars):
Returns:
list: A list of lists, where each inner list represents a row of truth values (0 or 1).
"""
if not vars:
return [[]]

values = [0, 1]
command = ""
count = 0
Expand Down