From 58db5e8722a3cec63aa079366d4a0f02194c8c29 Mon Sep 17 00:00:00 2001 From: Lenny Truong Date: Mon, 16 Dec 2019 10:40:41 -0800 Subject: [PATCH] Call coverage --- include/verilogAST.hpp | 2 ++ tests/basic.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/include/verilogAST.hpp b/include/verilogAST.hpp index 83e3577..17a566f 100644 --- a/include/verilogAST.hpp +++ b/include/verilogAST.hpp @@ -349,6 +349,7 @@ class CallExpr : public Expression, public Call { public: CallExpr(std::string func, std::vector> args) : Call(std::move(func), std::move(args)){}; + CallExpr(std::string func) : Call(std::move(func)){}; CallExpr(const CallExpr& rhs) : Call(std::move(rhs.func)) { for (const auto& arg : rhs.args) { args.push_back(arg->clone()); @@ -577,6 +578,7 @@ class CallStmt : public BehavioralStatement, public Call { public: CallStmt(std::string func, std::vector> args) : Call(std::move(func), std::move(args)){}; + CallStmt(std::string func) : Call(std::move(func)){}; std::string toString() { return Call::toString() + ";"; }; }; diff --git a/tests/basic.cpp b/tests/basic.cpp index 49fb31c..106ccc6 100644 --- a/tests/basic.cpp +++ b/tests/basic.cpp @@ -173,6 +173,7 @@ TEST(BasicTests, TestPosEdge) { EXPECT_EQ(pos_edge.toString(), "posedge clk"); } + TEST(BasicTests, TestCallExpr0) { std::vector> args; args.push_back(vAST::make_id("x")); @@ -188,6 +189,31 @@ TEST(BasicTests, TestCallExpr1) { EXPECT_EQ(clog2.toString(), "$clog2(7)"); } +TEST(BasicTests, TestCallExprNoArgs) { + vAST::CallExpr foo("$foo"); + EXPECT_EQ(foo.toString(), "$foo()"); +} + +TEST(BasicTests, TestCallStmt0) { + std::vector> args; + args.push_back(vAST::make_id("x")); + args.push_back(vAST::make_id("y")); + vAST::CallStmt my_func("my_func", std::move(args)); + EXPECT_EQ(my_func.toString(), "my_func(x, y);"); +} + +TEST(BasicTests, TestCallStmt1) { + std::vector> args; + args.push_back(vAST::make_num("7")); + vAST::CallStmt clog2("$clog2", std::move(args)); + EXPECT_EQ(clog2.toString(), "$clog2(7);"); +} + +TEST(BasicTests, TestCallStmtNoArgs) { + vAST::CallStmt foo("$foo"); + EXPECT_EQ(foo.toString(), "$foo();"); +} + TEST(BasicTests, TestPort) { vAST::Port i_port(vAST::make_id("i"), vAST::INPUT, vAST::WIRE);