summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/core/model/DomainTest.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/test/core/model/DomainTest.cpp b/test/core/model/DomainTest.cpp
index 8ece2c9..2b63aeb 100644
--- a/test/core/model/DomainTest.cpp
+++ b/test/core/model/DomainTest.cpp
@@ -293,77 +293,91 @@ TEST(Domain, validate)
// start with an easy example: Our book domain should be valid.
{
Rooted<Domain> domain = constructBookDomain(mgr, sys, logger);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
}
{
// Even easier: An empty domain should be valid.
Rooted<Domain> domain{new Domain(mgr, sys, "domain")};
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// if we add a StructureClass it should be valid still.
Rooted<StructuredClass> base{
new StructuredClass(mgr, "myClass", domain)};
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
- // if we tamper with the parent reference, however, it shouldn't be
- // valid anymore.
- base->setParent(nullptr);
- ASSERT_FALSE(base->validate(logger));
- base->setParent(domain);
- ASSERT_TRUE(domain->validate(logger));
- // the same goes for the name.
+ // if we tamper with the name, however, it shouldn't be valid anymore.
base->setName("");
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_FALSE(domain->validate(logger));
base->setName("my class");
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_FALSE(domain->validate(logger));
base->setName("myClass");
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// Let's add a primitive field (without a primitive type at first)
Rooted<FieldDescriptor> base_field{
new FieldDescriptor(mgr, base, nullptr)};
// this should not be valid.
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_FALSE(domain->validate(logger));
// but it should be if we set the type.
base_field->setPrimitiveType(sys->getStringType());
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// not anymore, however, if we tamper with the FieldType.
base_field->setFieldType(FieldDescriptor::FieldType::TREE);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_FALSE(domain->validate(logger));
base_field->setFieldType(FieldDescriptor::FieldType::PRIMITIVE);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// add a subclass for our base class.
Rooted<StructuredClass> sub{
new StructuredClass(mgr, "sub", domain)};
// this should be valid in itself.
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// and still if we add a superclass.
sub->setSuperclass(base);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// and still we we remove the subclass from the base class.
base->removeSubclass(sub);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
ASSERT_EQ(nullptr, sub->getSuperclass());
// and still if we re-add it.
base->addSubclass(sub);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
ASSERT_EQ(base, sub->getSuperclass());
// add a non-primitive field to the child class.
Rooted<FieldDescriptor> sub_field{
new FieldDescriptor(mgr, sub)};
// this should be valid
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// .. until we set a primitive type.
sub_field->setPrimitiveType(sys->getStringType());
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_FALSE(domain->validate(logger));
// and valid again if we unset it.
sub_field->setPrimitiveType(nullptr);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// we should also be able to add a child and have it still be valid.
sub_field->addChild(base);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
// it should be invalid if we add it twice.
sub_field->addChild(base);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_FALSE(domain->validate(logger));
// and valid again if we remove it once.
sub_field->removeChild(base);
+ ASSERT_EQ(ValidationState::UNKNOWN, domain->getValidationState());
ASSERT_TRUE(domain->validate(logger));
}
}