blob: 653a982ecd515578ac9b2c38d5f53596dcbf1caa [file] [log] [blame]
James Feist481c5d52019-08-13 14:40:40 -07001#include "Utils.hpp"
2
3#include <boost/container/flat_map.hpp>
4#include <nlohmann/json.hpp>
5#include <variant>
6
7#include "gtest/gtest.h"
8
9TEST(TemplateCharReplace, replaceOneInt)
10{
11 nlohmann::json j = {{"foo", "$bus"}};
12 auto it = j.begin();
13 boost::container::flat_map<std::string, BasicVariantType> data;
14 data["BUS"] = 23;
15
16 templateCharReplace(it, data, 0);
17
18 nlohmann::json expected = 23;
19 EXPECT_EQ(expected, j["foo"]);
20}
21
22TEST(TemplateCharReplace, replaceOneStr)
23{
24 nlohmann::json j = {{"foo", "$TEST"}};
25 auto it = j.begin();
26 boost::container::flat_map<std::string, BasicVariantType> data;
27 data["TEST"] = std::string("Test");
28
29 templateCharReplace(it, data, 0);
30
31 nlohmann::json expected = "Test";
32 EXPECT_EQ(expected, j["foo"]);
33}
34
35TEST(TemplateCharReplace, replaceSecondStr)
36{
37 nlohmann::json j = {{"foo", "the $TEST"}};
38 auto it = j.begin();
39 boost::container::flat_map<std::string, BasicVariantType> data;
40 data["TEST"] = std::string("Test");
41
42 templateCharReplace(it, data, 0);
43
44 nlohmann::json expected = "the Test";
45 EXPECT_EQ(expected, j["foo"]);
46}
47
48/*
49TODO This should work
50
51TEST(TemplateCharReplace, replaceMiddleStr)
52{
53 nlohmann::json j = {{"foo", "the $TEST worked"}};
54 auto it = j.begin();
55 boost::container::flat_map<std::string, BasicVariantType> data;
56 data["TEST"] = std::string("Test");
57
58 templateCharReplace(it, data, 0);
59
60 nlohmann::json expected = "the Test worked";
61 EXPECT_EQ(expected, j["foo"]);
62}
63*/
64
65TEST(TemplateCharReplace, replaceLastStr)
66{
67 nlohmann::json j = {{"foo", "the Test $TEST"}};
68 auto it = j.begin();
69 boost::container::flat_map<std::string, BasicVariantType> data;
70 data["TEST"] = 23;
71
72 templateCharReplace(it, data, 0);
73
74 nlohmann::json expected = "the Test 23";
75 EXPECT_EQ(expected, j["foo"]);
76}
77
78TEST(TemplateCharReplace, increment)
79{
80 nlohmann::json j = {{"foo", "3 plus 1 equals $TEST + 1"}};
81 auto it = j.begin();
82 boost::container::flat_map<std::string, BasicVariantType> data;
83 data["TEST"] = 3;
84
85 templateCharReplace(it, data, 0);
86
87 nlohmann::json expected = "3 plus 1 equals 4";
88 EXPECT_EQ(expected, j["foo"]);
89}
90
91TEST(TemplateCharReplace, decrement)
92{
93 nlohmann::json j = {{"foo", "3 minus 1 equals $TEST - 1 !"}};
94 auto it = j.begin();
95 boost::container::flat_map<std::string, BasicVariantType> data;
96 data["TEST"] = 3;
97
98 templateCharReplace(it, data, 0);
99
100 nlohmann::json expected = "3 minus 1 equals 2 !";
101 EXPECT_EQ(expected, j["foo"]);
102}
103
104TEST(TemplateCharReplace, modulus)
105{
106 nlohmann::json j = {{"foo", "3 mod 2 equals $TEST % 2"}};
107 auto it = j.begin();
108 boost::container::flat_map<std::string, BasicVariantType> data;
109 data["TEST"] = 3;
110
111 templateCharReplace(it, data, 0);
112
113 nlohmann::json expected = "3 mod 2 equals 1";
114 EXPECT_EQ(expected, j["foo"]);
115}
116
117TEST(TemplateCharReplace, multiply)
118{
119 nlohmann::json j = {{"foo", "3 * 2 equals $TEST * 2"}};
120 auto it = j.begin();
121 boost::container::flat_map<std::string, BasicVariantType> data;
122 data["TEST"] = 3;
123
124 templateCharReplace(it, data, 0);
125
126 nlohmann::json expected = "3 * 2 equals 6";
127 EXPECT_EQ(expected, j["foo"]);
128}
129
130TEST(TemplateCharReplace, divide)
131{
132 nlohmann::json j = {{"foo", "4 / 2 equals $TEST / 2"}};
133 auto it = j.begin();
134 boost::container::flat_map<std::string, BasicVariantType> data;
135 data["TEST"] = 4;
136
137 templateCharReplace(it, data, 0);
138
139 nlohmann::json expected = "4 / 2 equals 2";
140 EXPECT_EQ(expected, j["foo"]);
141}