53 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
import unittest
 | 
						|
 | 
						|
from .. import _True
 | 
						|
from ..logic import _Received, _Has, _False, _And, _Or
 | 
						|
 | 
						|
 | 
						|
class TestLogicSimplification(unittest.TestCase):
 | 
						|
    def test_simplify_true_in_and(self):
 | 
						|
        rules = {
 | 
						|
            "Wood": _True(),
 | 
						|
            "Rock": _True(),
 | 
						|
        }
 | 
						|
        summer = _Received("Summer", 0, 1)
 | 
						|
        assert (_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)
 | 
						|
        assert (_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)))
 | 
						|
        assert 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)))
 | 
						|
        assert 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)))
 | 
						|
        assert 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)))
 | 
						|
        assert 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))
 | 
						|
        assert rule.simplify() == _True()
 | 
						|
 | 
						|
    def test_simplify_false_in_and(self):
 | 
						|
        rule = _And(_False(), _Received("Summer", 0, 1))
 | 
						|
        assert rule.simplify() == _False()
 |