mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Stardew Valley: simplify in-place (#2393)
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
This commit is contained in:
@@ -1,56 +1,57 @@
|
||||
import unittest
|
||||
from .. import True_
|
||||
from ..logic import Received, Has, False_, And, Or
|
||||
|
||||
|
||||
def test_simplify_true_in_and():
|
||||
rules = {
|
||||
"Wood": True_(),
|
||||
"Rock": True_(),
|
||||
}
|
||||
summer = Received("Summer", 0, 1)
|
||||
assert (Has("Wood", rules) & summer & Has("Rock", rules)).simplify() == summer
|
||||
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_false_in_or():
|
||||
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)))
|
||||
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_and_in_and():
|
||||
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_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_duplicated_and():
|
||||
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_true_in_or(self):
|
||||
rule = Or(True_(), Received('Summer', 0, 1))
|
||||
self.assertEqual(rule.simplify(), True_())
|
||||
|
||||
|
||||
def test_simplify_or_in_or():
|
||||
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():
|
||||
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():
|
||||
rule = Or(True_(), Received('Summer', 0, 1))
|
||||
assert rule.simplify() == True_()
|
||||
|
||||
|
||||
def test_simplify_false_in_and():
|
||||
rule = And(False_(), Received('Summer', 0, 1))
|
||||
assert rule.simplify() == False_()
|
||||
def test_simplify_false_in_and(self):
|
||||
rule = And(False_(), Received('Summer', 0, 1))
|
||||
self.assertEqual(rule.simplify(), False_())
|
||||
|
||||
Reference in New Issue
Block a user