Added basic testcase framework

This commit is contained in:
Bartek Kryza
2021-02-19 23:43:14 +01:00
parent 6e907deecd
commit 4278d809e6
5 changed files with 17759 additions and 0 deletions

17618
tests/catch.h Normal file

File diff suppressed because it is too large Load Diff

16
tests/t00001/.clanguml Normal file
View 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
View 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
View 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;
}