 d9b076a687
			
		
	
	d9b076a687
	
	
	
		
			
			this allows skipping multiple simplifications of the same object, e.g. item_rules also update the logic simplification tests to be a proper unittest.TestCase
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| from .. import True_
 | |
| from ..logic import Received, Has, False_, And, Or
 | |
| 
 | |
| 
 | |
| class TestSimplification(unittest.TestCase):
 | |
|     def test_simplify_true_in_and(self):
 | |
|         rules = {
 | |
|             "Wood": True_(),
 | |
|             "Rock": True_(),
 | |
|         }
 | |
|         summer = Received("Summer", 0, 1)
 | |
|         self.assertEqual((Has("Wood", rules) & summer & Has("Rock", rules)).simplify(),
 | |
|                          summer)
 | |
| 
 | |
|     def test_simplify_false_in_or(self):
 | |
|         rules = {
 | |
|             "Wood": False_(),
 | |
|             "Rock": False_(),
 | |
|         }
 | |
|         summer = Received("Summer", 0, 1)
 | |
|         self.assertEqual((Has("Wood", rules) | summer | Has("Rock", rules)).simplify(),
 | |
|                          summer)
 | |
| 
 | |
|     def test_simplify_and_in_and(self):
 | |
|         rule = And(And(Received('Summer', 0, 1), Received('Fall', 0, 1)),
 | |
|                    And(Received('Winter', 0, 1), Received('Spring', 0, 1)))
 | |
|         self.assertEqual(rule.simplify(),
 | |
|                          And(Received('Summer', 0, 1), Received('Fall', 0, 1),
 | |
|                              Received('Winter', 0, 1), Received('Spring', 0, 1)))
 | |
| 
 | |
|     def test_simplify_duplicated_and(self):
 | |
|         rule = And(And(Received('Summer', 0, 1), Received('Fall', 0, 1)),
 | |
|                    And(Received('Summer', 0, 1), Received('Fall', 0, 1)))
 | |
|         self.assertEqual(rule.simplify(),
 | |
|                          And(Received('Summer', 0, 1), Received('Fall', 0, 1)))
 | |
| 
 | |
|     def test_simplify_or_in_or(self):
 | |
|         rule = Or(Or(Received('Summer', 0, 1), Received('Fall', 0, 1)),
 | |
|                   Or(Received('Winter', 0, 1), Received('Spring', 0, 1)))
 | |
|         self.assertEqual(rule.simplify(),
 | |
|                          Or(Received('Summer', 0, 1), Received('Fall', 0, 1), Received('Winter', 0, 1),
 | |
|                             Received('Spring', 0, 1)))
 | |
| 
 | |
|     def test_simplify_duplicated_or(self):
 | |
|         rule = And(Or(Received('Summer', 0, 1), Received('Fall', 0, 1)),
 | |
|                    Or(Received('Summer', 0, 1), Received('Fall', 0, 1)))
 | |
|         self.assertEqual(rule.simplify(),
 | |
|                          Or(Received('Summer', 0, 1), Received('Fall', 0, 1)))
 | |
| 
 | |
|     def test_simplify_true_in_or(self):
 | |
|         rule = Or(True_(), Received('Summer', 0, 1))
 | |
|         self.assertEqual(rule.simplify(), True_())
 | |
| 
 | |
|     def test_simplify_false_in_and(self):
 | |
|         rule = And(False_(), Received('Summer', 0, 1))
 | |
|         self.assertEqual(rule.simplify(), False_())
 |