コマンドを含む boost::variant があります。コマンドに対して 1 つの方法で動作し、他のすべてのコマンドに対して 1PathValidator
つの方法で動作するビジターを作成しています。Create
これが私がテストしている方法です。テストを追加するにつれて、さらに HelperVisitors を作成する必要があります。これをより読みやすく、冗長にする方法についてのヒントはありますか? C++98 を使用しています。あるいは、これでいいと思うかもしれません。
struct TestOneNodeInTreeHelper
{
explicit TestOneNodeInTreeHelper(TestPathValidator& test): _test(test)
{
}
void operator()(Create&) const
{
SyntaxTree::Create create;
_test.addNodeToSyntaxTree(create.nodes,"1");
PathValidator pathValidator(_test._accessorMock);
pathValidator(create);
EXPECT_EQ((int)_test._accessorMock->path.size(), 0);
}
template<class T> void operator()(const T&) const
{
SyntaxTree::Create create;
_test.addNodeToSyntaxTree(create.nodes,"1");
PathValidator pathValidator(_test._accessorMock);
pathValidator(create);
EXPECT_EQ((int)_test._accessorMock->path.size(), 0);
EXPECT_EQ(_test._accessorMock->path[0], "path1");
}
TestPathValidator& _test;
};
TEST_F (TestPathValidator, oneNodeInTree)
{
TestOneNodeInTreeHelper helper(*this);
boost::mpl::for_each<Command::types>(helper);
}