EXPECT_EQ("foo", (*classes_list->begin())->getName());
EXPECT_EQ("foobar", (*(classes_list->begin() + 1))->getName());
EXPECT_EQ("bar", (*(classes_list->begin() + 2))->getName());
+
+ // Update the foobar class without specifying its position. It should not
+ // be moved.
+ ASSERT_NO_THROW(cbptr_->createUpdateClientClass4(ServerSelector::ONE("server1"), class3, ""));
+
+ client_classes = cbptr_->getAllClientClasses4(ServerSelector::ONE("server1"));
+ classes_list = client_classes.getClasses();
+ ASSERT_EQ(3, classes_list->size());
+ EXPECT_EQ("foo", (*classes_list->begin())->getName());
+ EXPECT_EQ("foobar", (*(classes_list->begin() + 1))->getName());
+ EXPECT_EQ("bar", (*(classes_list->begin() + 2))->getName());
}
// This test verifies that a single class can be retrieved from the database.
class3->setTest("member('bar')");
EXPECT_NO_THROW(cbptr_->createUpdateClientClass4(ServerSelector::ALL(), class3, ""));
+ // An attempt to move the first class to the end of the class hierarchy should
+ // fail because other classes depend on it.
+ EXPECT_THROW(cbptr_->createUpdateClientClass4(ServerSelector::ALL(), class1, "bar"),
+ DbOperationError);
+
// Try to change the dependency of the first class. There are other classes
// having indirect dependency on KNOWN class via this class. Therefore, the
// update should be unsuccessful.