Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion EBase/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@

add_executable(ebase_catch_tests ctest_main.cpp expression_tests.cpp value_tests.cpp charencoding_test.cpp)
add_executable(ebase_catch_tests
ctest_main.cpp
expression_tests.cpp
value_tests.cpp
charencoding_test.cpp
reportstream_tests.cpp
blockbase_tests.cpp
report_parse_tests.cpp
)
target_link_libraries(ebase_catch_tests ebase Catch2::Catch2WithMain)
target_compile_definitions(ebase_catch_tests PRIVATE
EBASE_TEST_CONFIG_FILE="${CMAKE_SOURCE_DIR}/config/eressea.cfg"
EBASE_TEST_FIXTURE_DIR="${CMAKE_CURRENT_SOURCE_DIR}/fixtures"
)

if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
target_compile_definitions(ebase_catch_tests PRIVATE _CRT_SECURE_NO_WARNINGS)
target_compile_options(ebase_catch_tests PRIVATE "$<$<C_COMPILER_ID:MSVC>:/utf-8>")
target_compile_options(ebase_catch_tests PRIVATE "$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
endif()

if(APPLE)
target_compile_options(ebase_catch_tests PRIVATE -mmacosx-version-min=10.15)
target_link_options(ebase_catch_tests PRIVATE -mmacosx-version-min=10.15)
endif()

include(Catch)
catch_discover_tests(ebase_catch_tests)
40 changes: 40 additions & 0 deletions EBase/test/blockbase_tests.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include <catch2/catch_all.hpp>
#include <EBase/Report.h>

#include <memory>
#include <string>

TEST_CASE("CBlockBase stores and enumerates named values", "[blockbase]")
{
CBlockBase block("TestBlock", "REGION");

block.SetValue("Name", Value("Cadiz"));
block.SetValue("Bauern", Value(int32_t(5600)));

CHECK(block.NumValues() == 2);
CHECK(block.GetValue("Name").asString() == "Cadiz");
CHECK(block.GetValue("Bauern").asLong() == 5600);
CHECK(block.GetValue("missing", Value("fallback")).asString() == "fallback");

std::string firstName;
Value firstValue = block.GetValue(0, firstName);
CHECK_FALSE(firstName.empty());
CHECK(firstValue.getType() != VT_EMPTY);
}

TEST_CASE("CBlockBase finds keyed subblocks through object access", "[blockbase]")
{
CBlockBase root("Root", "REPORT");
auto region = std::make_shared<CBlockBase>("Region", "REGION", Value(int32_t(-16)), Value(int32_t(47)));

region->SetValue("Name", Value("Cadiz"));
region->SetValue("Lohn", Value(int32_t(14)));
root.AddBlock(region);

CHECK(root.NumSubblocks() == 1);
CHECK(CBlockBase::GetValue(&root, "REGION[-16,47].Name").asString() == "Cadiz");
CHECK(CBlockBase::GetValue(&root, "REGION[-16,47].Lohn").asLong() == 14);
CHECK(CBlockBase::GetValue(&root, "REGION[-16,46].Name", Value("unknown")).asString() == "unknown");
CHECK(CBlockBase::GetValue(&root, "REGION.size").asLong() == 1);
}

2 changes: 1 addition & 1 deletion EBase/test/expression_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Value FStatusText(Expression*, ArgumentList&) { return Value(); }
Value FSystem(Expression*, ArgumentList&) { return Value(); }
bool DoUserFunction(const std::string&, ArgumentList&, Value*) { return false; }

std::string GetConfigFileName() { return ""; }
std::string GetConfigFileName() { return EBASE_TEST_CONFIG_FILE; }
void SetConfigFileName(const std::string&) {}
bool ExistUserFunction(const std::string&) { return false; }

Expand Down
249 changes: 249 additions & 0 deletions EBase/test/fixtures/test-v69.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
VERSION 69
"UTF-8";charset
"de";locale
1;noskillpoints
"Standard";Konfiguration
"Hex";Koordinaten
36;Basis
803;Runde
2;Zeitalter
PARTEI 49
"de";locale
263;age
2647;Optionen
162612;Punkte
255894;Punktedurchschnitt
"Zwerge";Typ
110;Rekrutierungskosten
3264;Anzahl Personen
"draig";Magiegebiet
29;heroes
36;max_heroes
4;nmr
"Volk der Gulrowinger";Parteiname
OPTIONEN
1;AUSWERTUNG
1;COMPUTER
1;ZUGVORLAGE
1;STATISTIK
0;DEBUG
1;ZIPPED
0;ZEITUNG
1;ADRESSEN
0;BZIP2
1;PUNKTE
0;SHOWSKCHANGE
0;XML
REGION 3 2
"Eadrax";Name
"Ebene";Terrain
"Das Land wo Milch und Honig keine Sau interessieren...";Beschr
3228;Bauern
186;Pferde
262211;Silber
13110;Unterh
80;Rekruten
14;Lohn
65;Baeume
2;Schoesslinge
46;Eisen
RESOURCE 1910480682
"Silber";type
262211;number
RESOURCE 350575486
"Bauern";type
3228;number
RESOURCE 1901115851
"Pferde";type
186;number
RESOURCE 1355696724
"Schößlinge";type
2;number
RESOURCE 1735155814
"Bäume";type
65;number
RESOURCE 1734599010
"Eisen";type
11;skill
46;number
PREISE
100;Balsam
125;Gewürz
175;Juwel
110;Myrrhe
-3;Öl
150;Seide
72;Weihrauch
GRENZE 1
"Straße";typ
1;richtung
100;prozent
GRENZE 2
"Straße";typ
2;richtung
100;prozent
GRENZE 3
"Straße";typ
5;richtung
100;prozent
BURG 1004152
"Burg";Typ
"Heiliger Tempel vom Buch";Name
401;Groesse
1594019;Besitzer
49;Partei
BURG 712593
"Sägewerk";Typ
"Sägewerk";Name
1;Groesse
BURG 876379
"Bergwerk";Typ
"Bergwerk";Name
1;Groesse
258005;Besitzer
49;Partei
EINHEIT 1594019
"Zwerg";Name
49;Partei
5;Anzahl
"Zwerge";Typ
1004152;Burg
4;Kampfstatus
3996148;weight
COMMANDS
"LERNEN Wahrnehmung"
TALENTE
20400 16;Wahrnehmung
GEGENSTAENDE
77;Balsam
21;Flachwurz
23;Steinbeißer
20;Spaltwachs
21;Grüner Spinnerich
33;Elfenlieb
21;Wasserfinder
118;Pferd
11;Eisen
1196848;Silber
5258;Öl
101;Stein
EINHEIT 1627763
"Junge Zwerge";Name
49;Partei
5;Anzahl
"Zwerge";Typ
1004152;Burg
0;Kampfstatus
5000;weight
COMMANDS
"LERNEN Steinbau"
TALENTE
9900 13;Steinbau
EINHEIT 258005
"Junge Zwerge";Name
49;Partei
1;Anzahl
"Zwerge";Typ
876379;Burg
0;Kampfstatus
48940;weight
COMMANDS
"LERNEN Bergbau"
TALENTE
2730 15;Bergbau
GEGENSTAENDE
47940;Silber
REGION 3 4
"Antares";Name
"Wüste";Terrain
157;Bauern
63;Pferde
7090;Silber
354;Unterh
3;Rekruten
12;Lohn
24;Baeume
6;Schoesslinge
RESOURCE 1910480682
"Silber";type
7090;number
RESOURCE 350575486
"Bauern";type
157;number
RESOURCE 1901115851
"Pferde";type
63;number
RESOURCE 1355696724
"Schößlinge";type
6;number
RESOURCE 1735155814
"Bäume";type
24;number
PREISE
100;Balsam
110;Gewürz
168;Juwel
100;Myrrhe
66;Öl
144;Seide
-4;Weihrauch
BURG 1664395
"Befestigung";Typ
"Elfenturm";Name
"Kolchis";Beschr
30;Groesse
EINHEIT 229801
"Junger Zwerg";Name
49;Partei
1;Anzahl
"Zwerge";Typ
4;Kampfstatus
849251;weight
COMMANDS
"// Zwerge für Kugir"
"LERNEN Bergbau"
TALENTE
1980 13;Bergbau
GEGENSTAENDE
3;Balsam
38;Wasserfinder
160;Pferd
30;Weihrauch
25;Holz
29051;Silber
1;Speer
EINHEIT 1431898
"Junger Zwerg";Name
49;Partei
1;Anzahl
"Zwerge";Typ
4;Kampfstatus
3560;weight
COMMANDS
"LERNEN Steinbau"
TALENTE
2340 14;Steinbau
GEGENSTAENDE
2560;Silber
EINHEIT 286532
"Junger Zwerg";Name
49;Partei
1;Anzahl
"Zwerge";Typ
4;Kampfstatus
1000;weight
COMMANDS
"LERNEN Wahrnehmung"
TALENTE
1980 11;Wahrnehmung
EINHEIT 1640624
"Junger Zwerg";Name
49;Partei
1;Anzahl
"Zwerge";Typ
4;Kampfstatus
1000;weight
COMMANDS
"LERNEN Tarnung"
TALENTE
1650 9;Tarnung
Loading
Loading