Skip to content

types_test derived_predicates_get_normalized fails #391

@fmrico

Description

@fmrico

Hi,

The test TEST(types_test, derived_predicates_get_normalized) in plansys2_core now fails, even though it passed when the PR was accepted. I deactivated them to pass the CI, but we should reactivate them. @Rezenders did this part. May you take a look at the marked commented lines, please:

TEST(types_test, derived_predicates_get_normalized)
{
  plansys2::Derived inferredA;
  inferredA.predicate = parser::pddl::fromStringPredicate("(inferredA ?a)");
  inferredA.preconditions = parser::pddl::fromString("(and (predicateA ?a))");
  auto norm_inferredA = inferredA.getNormalizedDerived();

  // ASSERT_NE(inferredA, norm_inferredA);  // ToDo: Fix this test @Rezenders

  plansys2::Derived inferredAconstant;
  inferredAconstant.predicate = parser::pddl::fromStringPredicate("(inferredA ?a)");
  inferredAconstant.preconditions = parser::pddl::fromString("(and (predicateA a))");
  auto norm_inferredAconstant = inferredAconstant.getNormalizedDerived();

  ASSERT_EQ(norm_inferredA.predicate.parameters[0].name, "?0");
  ASSERT_EQ(norm_inferredA.preconditions.nodes[1].parameters[0].name, "?0");

  // ASSERT_NE(inferredAconstant, norm_inferredAconstant);  // ToDo: Fix this test @Rezenders

  ASSERT_EQ(norm_inferredAconstant.predicate.parameters[0].name, "?0");
  ASSERT_EQ(norm_inferredAconstant.preconditions.nodes[1].parameters[0].name, "a");

  plansys2::Derived fd_better;
  fd_better.predicate = parser::pddl::fromStringPredicate("(inferred-FunctionDesign ?x)");
  fd_better.preconditions =
    parser::pddl::fromString("(exists (?y) (and (inferred-FdBetterUtility ?x ?y)))");
  auto fd_better_norm = fd_better.getNormalizedDerived();

  plansys2::Derived fd_better_inverse;
  fd_better_inverse.predicate = parser::pddl::fromStringPredicate("(inferred-FunctionDesign ?y)");
  fd_better_inverse.preconditions =
    parser::pddl::fromString("(exists (?x) (and (inferred-FdBetterUtility ?x ?y)))");
  auto fd_better_inverse_norm = fd_better_inverse.getNormalizedDerived();

  ASSERT_NE(fd_better, fd_better_inverse);
  ASSERT_NE(fd_better_norm, fd_better_inverse_norm);

  // ASSERT_NE(fd_better, fd_better_norm);  // ToDo: Fix this test @Rezenders

  ASSERT_EQ(fd_better_norm.predicate.parameters[0].name, "?0");
  ASSERT_EQ(fd_better_norm.preconditions.nodes[0].parameters[0].name, "?1");
  ASSERT_EQ(fd_better_norm.preconditions.nodes[2].parameters[0].name, "?0");
  ASSERT_EQ(fd_better_norm.preconditions.nodes[2].parameters[1].name, "?1");

  // ASSERT_NE(fd_better_inverse, fd_better_inverse_norm);  // ToDo: Fix this test @Rezenders

  ASSERT_EQ(fd_better_inverse_norm.predicate.parameters[0].name, "?0");
  ASSERT_EQ(fd_better_inverse_norm.preconditions.nodes[0].parameters[0].name, "?1");
  ASSERT_EQ(fd_better_inverse_norm.preconditions.nodes[2].parameters[0].name, "?1");
  ASSERT_EQ(fd_better_inverse_norm.preconditions.nodes[2].parameters[1].name, "?0");

  plansys2::Derived fd_better_2;
  fd_better_2.predicate = parser::pddl::fromStringPredicate("(inferred-FunctionDesign ?z)");
  fd_better_2.preconditions =
    parser::pddl::fromString("(exists (?w) (and (inferred-FdBetterUtility ?z ?w)))");
  auto fd_better_2_norm = fd_better_2.getNormalizedDerived();

  // ASSERT_NE(fd_better, fd_better_2);  // ToDo: Fix this test @Rezenders

  ASSERT_EQ(fd_better_norm, fd_better_2_norm);
}

Thanks!!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions