Added basic testcase framework
This commit is contained in:
17618
tests/catch.h
Normal file
17618
tests/catch.h
Normal file
File diff suppressed because it is too large
Load Diff
16
tests/t00001/.clanguml
Normal file
16
tests/t00001/.clanguml
Normal file
@@ -0,0 +1,16 @@
|
||||
compilation_database_dir: ..
|
||||
output_directory: puml
|
||||
diagrams:
|
||||
t00001_sequence:
|
||||
type: sequence
|
||||
glob:
|
||||
- ../../tests/t00001/t00001.cc
|
||||
using_namespace:
|
||||
- clanguml::t00001
|
||||
start_from:
|
||||
- usr: "c:@N@clanguml@N@t00001@F@tmain#"
|
||||
classes:
|
||||
- A
|
||||
- B
|
||||
puml:
|
||||
- 'note top of diagram: Aggregate template'
|
||||
59
tests/t00001/t00001.cc
Normal file
59
tests/t00001/t00001.cc
Normal file
@@ -0,0 +1,59 @@
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <numeric>
|
||||
|
||||
namespace clanguml {
|
||||
namespace t00001 {
|
||||
|
||||
class A {
|
||||
public:
|
||||
int add(int x, int y) { return x + y; }
|
||||
|
||||
int add3(int x, int y, int z)
|
||||
{
|
||||
std::vector<int> v;
|
||||
v.push_back(x);
|
||||
v.push_back(y);
|
||||
v.push_back(z);
|
||||
auto res = add(v[0], v[1]) + v[2];
|
||||
log_result(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
void log_result(int r) {}
|
||||
};
|
||||
|
||||
class B {
|
||||
public:
|
||||
B(A &a)
|
||||
: m_a{a}
|
||||
{
|
||||
}
|
||||
|
||||
int wrap_add(int x, int y)
|
||||
{
|
||||
auto res = m_a.add(x, y);
|
||||
m_a.log_result(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
int wrap_add3(int x, int y, int z)
|
||||
{
|
||||
auto res = m_a.add3(x, y, z);
|
||||
m_a.log_result(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
private:
|
||||
A &m_a;
|
||||
};
|
||||
|
||||
int tmain()
|
||||
{
|
||||
A a;
|
||||
B b(a);
|
||||
|
||||
return b.wrap_add3(1, 2, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
39
tests/test_cases.cc
Normal file
39
tests/test_cases.cc
Normal file
@@ -0,0 +1,39 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
|
||||
#include "config/config.h"
|
||||
#include "cx/compilation_database.h"
|
||||
#include "puml/class_diagram_generator.h"
|
||||
#include "puml/sequence_diagram_generator.h"
|
||||
#include "uml/class_diagram_model.h"
|
||||
#include "uml/class_diagram_visitor.h"
|
||||
#include "uml/sequence_diagram_visitor.h"
|
||||
|
||||
#include "catch.h"
|
||||
#include <complex>
|
||||
#include <filesystem>
|
||||
#include <string>
|
||||
|
||||
TEST_CASE("Test t00001", "[unit-test]")
|
||||
{
|
||||
spdlog::set_level(spdlog::level::debug);
|
||||
|
||||
// REQUIRE(2 + 5 == 7);
|
||||
std::cout << "RUNNING TEST IN " << std::filesystem::current_path()
|
||||
<< std::endl;
|
||||
|
||||
auto config = clanguml::config::load("t00001/.clanguml");
|
||||
|
||||
auto db = clanguml::cx::compilation_database::from_directory(
|
||||
config.compilation_database_dir);
|
||||
|
||||
auto diagram = config.diagrams["t00001_sequence"];
|
||||
auto diagram_model =
|
||||
clanguml::generators::sequence_diagram::generate(db, "t00001_sequence",
|
||||
dynamic_cast<clanguml::config::sequence_diagram &>(*diagram));
|
||||
|
||||
REQUIRE(diagram_model.name == "t00001_sequence");
|
||||
|
||||
auto generator = clanguml::generators::sequence_diagram::puml::generator(
|
||||
dynamic_cast<clanguml::config::sequence_diagram &>(*diagram), diagram_model);
|
||||
std::cout << generator;
|
||||
}
|
||||
Reference in New Issue
Block a user