1

コマンドを含む 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);
}
4

0 に答える 0