From 4fb2c331f3400a2348dde37ff09e0f5e4dfdbda3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Fri, 2 Sep 2016 18:32:13 +0200 Subject: [PATCH] Added dummy expression to check that with removed double negations, expressions are still correctly normalized. --- include/plasp/pddl/Expression.h | 3 +- include/plasp/pddl/expressions/Dummy.h | 38 ++++++++++++++++++++++++++ src/plasp/pddl/expressions/Dummy.cpp | 36 ++++++++++++++++++++++++ tests/TestPDDLNormalization.cpp | 11 ++++---- 4 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 include/plasp/pddl/expressions/Dummy.h create mode 100644 src/plasp/pddl/expressions/Dummy.cpp diff --git a/include/plasp/pddl/Expression.h b/include/plasp/pddl/Expression.h index 31b726c..cf5fb35 100644 --- a/include/plasp/pddl/Expression.h +++ b/include/plasp/pddl/Expression.h @@ -81,6 +81,7 @@ class Expression At, Binary, Constant, + Dummy, Either, Imply, Not, @@ -89,7 +90,7 @@ class Expression Predicate, PrimitiveType, Unsupported, - Variable + Variable, }; public: diff --git a/include/plasp/pddl/expressions/Dummy.h b/include/plasp/pddl/expressions/Dummy.h new file mode 100644 index 0000000..2985c88 --- /dev/null +++ b/include/plasp/pddl/expressions/Dummy.h @@ -0,0 +1,38 @@ +#ifndef __PLASP__PDDL__EXPRESSIONS__DUMMY_H +#define __PLASP__PDDL__EXPRESSIONS__DUMMY_H + +#include + +namespace plasp +{ +namespace pddl +{ +namespace expressions +{ + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Dummy +// +//////////////////////////////////////////////////////////////////////////////////////////////////// + +class Dummy: public ExpressionCRTP +{ + public: + static const Expression::Type ExpressionType = Expression::Type::Dummy; + + bool isNormalized() const; + + ExpressionPointer normalize() override; + + private: + bool m_isNormalized = false; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +} +} +} + +#endif diff --git a/src/plasp/pddl/expressions/Dummy.cpp b/src/plasp/pddl/expressions/Dummy.cpp new file mode 100644 index 0000000..662b396 --- /dev/null +++ b/src/plasp/pddl/expressions/Dummy.cpp @@ -0,0 +1,36 @@ +#include + +#include + +namespace plasp +{ +namespace pddl +{ +namespace expressions +{ + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Dummy +// +//////////////////////////////////////////////////////////////////////////////////////////////////// + +bool Dummy::isNormalized() const +{ + return m_isNormalized; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +ExpressionPointer Dummy::normalize() +{ + m_isNormalized = true; + + return nullptr; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +} +} +} diff --git a/tests/TestPDDLNormalization.cpp b/tests/TestPDDLNormalization.cpp index 3b679ea..36579ba 100644 --- a/tests/TestPDDLNormalization.cpp +++ b/tests/TestPDDLNormalization.cpp @@ -1,7 +1,7 @@ #include +#include #include -#include using namespace plasp::pddl; @@ -11,13 +11,14 @@ TEST(PDDLNormalizationTests, DoubleNegation) { auto n1 = std::make_unique(); auto n2 = std::make_unique(); - auto u = std::make_unique(); - const auto up = u.get(); + auto d = std::make_unique(); + const auto dp = d.get(); - n2->setArgument(std::move(u)); + n2->setArgument(std::move(d)); n1->setArgument(std::move(n2)); auto normalized = n1->normalize(); - ASSERT_EQ(normalized.get(), up); + ASSERT_EQ(normalized.get(), dp); + ASSERT_TRUE(dp->isNormalized()); }