diff --git a/tests/TestPDDLParser.cpp b/tests/TestPDDLParser.cpp index af849d4..248b212 100644 --- a/tests/TestPDDLParser.cpp +++ b/tests/TestPDDLParser.cpp @@ -285,6 +285,47 @@ TEST(PDDLParserTests, ParseWithWhiteSpace) TEST(PDDLParserTests, ParseWrongDomain) { - ASSERT_THROW(Description::fromFile("data/blocksworld-problem.pddl"), plasp::pddl::ConsistencyException); + ASSERT_THROW(Description::fromFile("data/blocksworld-problem.pddl"), ConsistencyException); ASSERT_THROW(Description::fromFiles({"data/blocksworld-problem.pddl", "data/storage-domain.pddl"}), plasp::utils::ParserException); } + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +TEST(PDDLParserTests, ParseSyntaxErrors) +{ + ASSERT_NO_THROW(Description::fromFile("data/pddl-syntax/domain-valid.pddl")); + + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-expressions-1.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-expressions-2.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-expressions-3.pddl")); + + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-expression-name-1.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-expression-name-2.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-expression-name-3.pddl")); + + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-1.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-2.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-3.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-4.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-5.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-6.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-7.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-parentheses-8.pddl")); + + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-1.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-2.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-3.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-4.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-5.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-6.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-section-name-7.pddl")); + + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-types-1.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-types-2.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-types-3.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-types-4.pddl")); + + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-variables-1.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-variables-2.pddl")); + ASSERT_ANY_THROW(Description::fromFile("data/pddl-syntax/domain-variables-3.pddl")); +} diff --git a/tests/data/pddl-syntax/domain-expression-name-1.pddl b/tests/data/pddl-syntax/domain-expression-name-1.pddl new file mode 100644 index 0000000..4892057 --- /dev/null +++ b/tests/data/pddl-syntax/domain-expression-name-1.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (andX (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-expression-name-2.pddl b/tests/data/pddl-syntax/domain-expression-name-2.pddl new file mode 100644 index 0000000..8eb88cf --- /dev/null +++ b/tests/data/pddl-syntax/domain-expression-name-2.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontableX ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-expression-name-3.pddl b/tests/data/pddl-syntax/domain-expression-name-3.pddl new file mode 100644 index 0000000..60fd752 --- /dev/null +++ b/tests/data/pddl-syntax/domain-expression-name-3.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (notX (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-expressions-1.pddl b/tests/data/pddl-syntax/domain-expressions-1.pddl new file mode 100644 index 0000000..55cd46e --- /dev/null +++ b/tests/data/pddl-syntax/domain-expressions-1.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not ontable ?x) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-expressions-2.pddl b/tests/data/pddl-syntax/domain-expressions-2.pddl new file mode 100644 index 0000000..c012249 --- /dev/null +++ b/tests/data/pddl-syntax/domain-expressions-2.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clearX ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-expressions-3.pddl b/tests/data/pddl-syntax/domain-expressions-3.pddl new file mode 100644 index 0000000..18f9976 --- /dev/null +++ b/tests/data/pddl-syntax/domain-expressions-3.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?XX)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-1.pddl b/tests/data/pddl-syntax/domain-parentheses-1.pddl new file mode 100644 index 0000000..4946c24 --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-1.pddl @@ -0,0 +1,45 @@ +(define domain BLOCKS + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-2.pddl b/tests/data/pddl-syntax/domain-parentheses-2.pddl new file mode 100644 index 0000000..122388c --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-2.pddl @@ -0,0 +1,45 @@ +define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-3.pddl b/tests/data/pddl-syntax/domain-parentheses-3.pddl new file mode 100644 index 0000000..675a1aa --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-3.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + :action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x)) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-4.pddl b/tests/data/pddl-syntax/domain-parentheses-4.pddl new file mode 100644 index 0000000..cbbeb73 --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-4.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y)))) diff --git a/tests/data/pddl-syntax/domain-parentheses-5.pddl b/tests/data/pddl-syntax/domain-parentheses-5.pddl new file mode 100644 index 0000000..0c5b844 --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-5.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x)) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-6.pddl b/tests/data/pddl-syntax/domain-parentheses-6.pddl new file mode 100644 index 0000000..8c2f6bb --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-6.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not clear ?x) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-7.pddl b/tests/data/pddl-syntax/domain-parentheses-7.pddl new file mode 100644 index 0000000..b8a9046 --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-7.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition holding ?x + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-parentheses-8.pddl b/tests/data/pddl-syntax/domain-parentheses-8.pddl new file mode 100644 index 0000000..6485f92 --- /dev/null +++ b/tests/data/pddl-syntax/domain-parentheses-8.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + handempty + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-1.pddl b/tests/data/pddl-syntax/domain-section-name-1.pddl new file mode 100644 index 0000000..6c59b5d --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-1.pddl @@ -0,0 +1,45 @@ +(defineX (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-2.pddl b/tests/data/pddl-syntax/domain-section-name-2.pddl new file mode 100644 index 0000000..6cf9847 --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-2.pddl @@ -0,0 +1,45 @@ +(define (domainX BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-3.pddl b/tests/data/pddl-syntax/domain-section-name-3.pddl new file mode 100644 index 0000000..c8d8cef --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-3.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirementsX :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-4.pddl b/tests/data/pddl-syntax/domain-section-name-4.pddl new file mode 100644 index 0000000..c066eb3 --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-4.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:typesX block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-5.pddl b/tests/data/pddl-syntax/domain-section-name-5.pddl new file mode 100644 index 0000000..7a171bc --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-5.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parametersX (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-6.pddl b/tests/data/pddl-syntax/domain-section-name-6.pddl new file mode 100644 index 0000000..4f04abc --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-6.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :preconditionX (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-section-name-7.pddl b/tests/data/pddl-syntax/domain-section-name-7.pddl new file mode 100644 index 0000000..0158a24 --- /dev/null +++ b/tests/data/pddl-syntax/domain-section-name-7.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effectX + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-types-1.pddl b/tests/data/pddl-syntax/domain-types-1.pddl new file mode 100644 index 0000000..f4af008 --- /dev/null +++ b/tests/data/pddl-syntax/domain-types-1.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-types-2.pddl b/tests/data/pddl-syntax/domain-types-2.pddl new file mode 100644 index 0000000..38685dd --- /dev/null +++ b/tests/data/pddl-syntax/domain-types-2.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-types-3.pddl b/tests/data/pddl-syntax/domain-types-3.pddl new file mode 100644 index 0000000..7a03cac --- /dev/null +++ b/tests/data/pddl-syntax/domain-types-3.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-types-4.pddl b/tests/data/pddl-syntax/domain-types-4.pddl new file mode 100644 index 0000000..4586289 --- /dev/null +++ b/tests/data/pddl-syntax/domain-types-4.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types blockX) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-valid.pddl b/tests/data/pddl-syntax/domain-valid.pddl new file mode 100644 index 0000000..8b51e13 --- /dev/null +++ b/tests/data/pddl-syntax/domain-valid.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-variables-1.pddl b/tests/data/pddl-syntax/domain-variables-1.pddl new file mode 100644 index 0000000..a185b8e --- /dev/null +++ b/tests/data/pddl-syntax/domain-variables-1.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-variables-2.pddl b/tests/data/pddl-syntax/domain-variables-2.pddl new file mode 100644 index 0000000..6698a0e --- /dev/null +++ b/tests/data/pddl-syntax/domain-variables-2.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear ?x)) + (not (handempty)) + (not (on ?x ?y))))) diff --git a/tests/data/pddl-syntax/domain-variables-3.pddl b/tests/data/pddl-syntax/domain-variables-3.pddl new file mode 100644 index 0000000..2210c4c --- /dev/null +++ b/tests/data/pddl-syntax/domain-variables-3.pddl @@ -0,0 +1,45 @@ +(define (domain BLOCKS) + (:requirements :strips :typing) + (:types block) + (:predicates (on ?x - block ?y - block) + (ontable ?x - block) + (clear ?x - block) + (handempty) + (holding ?x - block) + ) + + (:action pick-up + :parameters (?x - block) + :precondition (and (clear ?x) (ontable ?x) (handempty)) + :effect + (and (not (ontable ?x)) + (not (clear ?x)) + (not (handempty)) + (holding ?x))) + + (:action put-down + :parameters (?x - block) + :precondition (holding ?x) + :effect + (and (not (holding ?x)) + (clear ?x) + (handempty) + (ontable ?x))) + (:action stack + :parameters (?x - block ?y - block) + :precondition (and (holding ?x) (clear ?y)) + :effect + (and (not (holding ?x)) + (not (clear ?y)) + (clear ?x) + (handempty) + (on ?x ?y))) + (:action unstack + :parameters (?x - block ?y - block) + :precondition (and (on ?x ?y) (clear ?x) (handempty)) + :effect + (and (holding ?x) + (clear ?y) + (not (clear x)) + (not (handempty)) + (not (on ?x ?y)))))