Newer
Older
from planning import *
from utils import expr
from logic import FolKB
def test_action():
precond = [[expr("P(x)"), expr("Q(y, z)")]
,[expr("Q(x)")]]
effect = [[expr("Q(x)")]
, [expr("P(x)")]]
a=Action(expr("A(x,y,z)"),precond, effect)
args = [expr("A"), expr("B"), expr("C")]
assert a.substitute(expr("P(x, z, y)"), args) == expr("P(A, C, B)")
test_kb = FolKB([expr("P(A)"), expr("Q(B, C)"), expr("R(D)")])
assert a.check_precond(test_kb, args)
a.act(test_kb, args)
assert test_kb.ask(expr("P(A)")) is False
assert test_kb.ask(expr("Q(A)")) is not False
assert test_kb.ask(expr("Q(B, C)")) is not False
assert not a.check_precond(test_kb, args)
def test_air_cargo():
p = air_cargo()
assert p.goal_test() is False
solution = [expr("Load(C1 , P1, SFO)"),
expr("Fly(P1, SFO, JFK)"),
expr("Unload(C1, P1, JFK)"),
expr("Load(C2, P2, JFK)"),
expr("Fly(P2, JFK, SFO)"),
expr("Unload (C2, P2, SFO)")]
for action in solution:
p.act(action)
assert p.goal_test()
def test_spare_tire():
p = spare_tire()
assert p.goal_test() is False
solution = [expr("Remove(Flat, Axle)"),
expr("Remove(Spare, Trunk)"),
expr("PutOn(Spare, Axle)")]
for action in solution:
p.act(action)
assert p.goal_test()
opensourceware
a validé
def test_three_block_tower():
p = three_block_tower()
assert p.goal_test() is False
solution = [expr("MoveToTable(C, A)"),
expr("Move(B, Table, C)"),
expr("Move(A, Table, B)")]
for action in solution:
p.act(action)
assert p.goal_test()
def test_have_cake_and_eat_cake_too():
p = have_cake_and_eat_cake_too()
assert p.goal_test() is False
solution = [expr("Eat(Cake)"),
expr("Bake(Cake)")]
for action in solution:
p.act(action)
assert p.goal_test()