示例#1
0
        : logger(new error::Logger), ft(new ast::FunctionTable),
        variableFactory(new ast::test::VariableFactoryMock), builder(logger, ft, variableFactory) { }
};

TEST_F(rask_ast_Builder_buildFunctionDecl, 1)
{
    cst::Function cf;
    cf.name = cst::Identifier::create(Position("xxx", 1, 2), "asia");
    cf.type = cst::Identifier::create(Position(), "void");

    boost::optional<ast::FunctionDecl> fd = builder.buildFunctionDecl(cf);

    ASSERT_TRUE(fd);
    ASSERT_EQ(0u, logger->errors().size());

    ast::SharedFunction f = fd->function();
    ASSERT_TRUE(ft->getFunction(f->name().value) == f);
    ASSERT_EQ(cf.name.position, f->name().position);
    ASSERT_EQ(cf.name.value, f->name().value);
}

TEST_F(rask_ast_Builder_buildFunctionDecl, 2)
{
    cst::Function cf1;
    cf1.name = cst::Identifier::create(Position("xxx", 1, 2), "asia");
    cf1.type = cst::Identifier::create(Position(), "void");
    cst::Function cf2;
    cf2.name = cst::Identifier::create(Position("xxx", 10, 2), "asia");
    cf2.type = cst::Identifier::create(Position(), "void");

    builder.buildFunctionDecl(cf1);