|
| 1 | +#include "gtest/gtest.h" |
| 2 | +#include <Base/Parameter.h> |
| 3 | + |
| 4 | +class ParameterTest: public ::testing::Test |
| 5 | +{ |
| 6 | +protected: |
| 7 | + static void SetUpTestSuite() |
| 8 | + { |
| 9 | + ParameterManager::Init(); |
| 10 | + } |
| 11 | + |
| 12 | + void SetUp() override |
| 13 | + { |
| 14 | + config = ParameterManager::Create(); |
| 15 | + } |
| 16 | + |
| 17 | + void TearDown() override |
| 18 | + {} |
| 19 | + |
| 20 | + Base::Reference<ParameterManager> getConfig() const |
| 21 | + { |
| 22 | + return config; |
| 23 | + } |
| 24 | + |
| 25 | + Base::Reference<ParameterManager> getCreateConfig() |
| 26 | + { |
| 27 | + config->CreateDocument(); |
| 28 | + return config; |
| 29 | + } |
| 30 | + |
| 31 | +private: |
| 32 | + Base::Reference<ParameterManager> config; |
| 33 | +}; |
| 34 | + |
| 35 | +// NOLINTBEGIN(cppcoreguidelines-*,readability-*) |
| 36 | +TEST_F(ParameterTest, TestValid) |
| 37 | +{ |
| 38 | + auto cfg = getConfig(); |
| 39 | + EXPECT_EQ(cfg.isValid(), true); |
| 40 | + EXPECT_EQ(cfg.isNull(), false); |
| 41 | +} |
| 42 | + |
| 43 | +TEST_F(ParameterTest, TestCreate) |
| 44 | +{ |
| 45 | + auto cfg = getCreateConfig(); |
| 46 | + cfg->CheckDocument(); |
| 47 | + EXPECT_TRUE(cfg->IsEmpty()); |
| 48 | +} |
| 49 | + |
| 50 | +TEST_F(ParameterTest, TestGroup) |
| 51 | +{ |
| 52 | + auto cfg = getCreateConfig(); |
| 53 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 54 | + EXPECT_EQ(grp->Parent(), static_cast<ParameterGrp*>(cfg)); |
| 55 | + EXPECT_EQ(grp->Manager(), static_cast<ParameterGrp*>(cfg)); |
| 56 | + |
| 57 | + EXPECT_FALSE(cfg->IsEmpty()); |
| 58 | + EXPECT_TRUE(grp->IsEmpty()); |
| 59 | + |
| 60 | + EXPECT_TRUE(cfg->HasGroup("TopLevelGroup")); |
| 61 | + EXPECT_FALSE(cfg->HasGroup("Group")); |
| 62 | + |
| 63 | + EXPECT_EQ(cfg->GetGroups().size(), 1); |
| 64 | +} |
| 65 | + |
| 66 | +TEST_F(ParameterTest, TestGroupName) |
| 67 | +{ |
| 68 | + auto cfg = getCreateConfig(); |
| 69 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 70 | + EXPECT_STREQ(grp->GetGroupName(), "TopLevelGroup"); |
| 71 | +} |
| 72 | + |
| 73 | +TEST_F(ParameterTest, TestPath) |
| 74 | +{ |
| 75 | + auto cfg = getCreateConfig(); |
| 76 | + auto grp1 = cfg->GetGroup("TopLevelGroup"); |
| 77 | + auto sub1 = grp1->GetGroup("Sub1"); |
| 78 | + auto sub2 = sub1->GetGroup("Sub2"); |
| 79 | + EXPECT_EQ(sub2->GetPath(), "TopLevelGroup/Sub1/Sub2"); |
| 80 | +} |
| 81 | + |
| 82 | +TEST_F(ParameterTest, TestBool) |
| 83 | +{ |
| 84 | + auto cfg = getCreateConfig(); |
| 85 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 86 | + grp->SetBool("Parameter1", false); |
| 87 | + grp->SetBool("Parameter2", true); |
| 88 | + EXPECT_EQ(grp->GetBool("Parameter1", true), false); |
| 89 | + EXPECT_EQ(grp->GetBool("Parameter3", true), true); |
| 90 | + EXPECT_EQ(grp->GetBool("Parameter3", false), false); |
| 91 | + |
| 92 | + EXPECT_TRUE(grp->GetBools("Test").empty()); |
| 93 | + EXPECT_EQ(grp->GetBools().size(), 2); |
| 94 | + EXPECT_EQ(grp->GetBools().at(0), false); |
| 95 | + EXPECT_EQ(grp->GetBools().at(1), true); |
| 96 | + EXPECT_EQ(grp->GetBoolMap().size(), 2); |
| 97 | + |
| 98 | + grp->RemoveBool("Parameter1"); |
| 99 | + EXPECT_EQ(grp->GetBools().size(), 1); |
| 100 | +} |
| 101 | + |
| 102 | +TEST_F(ParameterTest, TestInt) |
| 103 | +{ |
| 104 | + auto cfg = getCreateConfig(); |
| 105 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 106 | + grp->SetInt("Parameter1", -15); |
| 107 | + grp->SetInt("Parameter2", 25); |
| 108 | + EXPECT_EQ(grp->GetInt("Parameter1", 2), -15); |
| 109 | + EXPECT_EQ(grp->GetInt("Parameter3", 2), 2); |
| 110 | + EXPECT_EQ(grp->GetInt("Parameter3", 4), 4); |
| 111 | + |
| 112 | + EXPECT_TRUE(grp->GetInts("Test").empty()); |
| 113 | + EXPECT_EQ(grp->GetInts().size(), 2); |
| 114 | + EXPECT_EQ(grp->GetInts().at(0), -15); |
| 115 | + EXPECT_EQ(grp->GetInts().at(1), 25); |
| 116 | + EXPECT_EQ(grp->GetIntMap().size(), 2); |
| 117 | + |
| 118 | + grp->RemoveInt("Parameter1"); |
| 119 | + EXPECT_EQ(grp->GetInts().size(), 1); |
| 120 | +} |
| 121 | + |
| 122 | +TEST_F(ParameterTest, TestUnsigned) |
| 123 | +{ |
| 124 | + auto cfg = getCreateConfig(); |
| 125 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 126 | + grp->SetUnsigned("Parameter1", 15); |
| 127 | + grp->SetUnsigned("Parameter2", 25); |
| 128 | + EXPECT_EQ(grp->GetUnsigned("Parameter1", 2), 15); |
| 129 | + EXPECT_EQ(grp->GetUnsigned("Parameter3", 2), 2); |
| 130 | + EXPECT_EQ(grp->GetUnsigned("Parameter3", 4), 4); |
| 131 | + |
| 132 | + EXPECT_TRUE(grp->GetUnsigneds("Test").empty()); |
| 133 | + EXPECT_EQ(grp->GetUnsigneds().size(), 2); |
| 134 | + EXPECT_EQ(grp->GetUnsigneds().at(0), 15); |
| 135 | + EXPECT_EQ(grp->GetUnsigneds().at(1), 25); |
| 136 | + EXPECT_EQ(grp->GetUnsignedMap().size(), 2); |
| 137 | + |
| 138 | + grp->RemoveUnsigned("Parameter1"); |
| 139 | + EXPECT_EQ(grp->GetUnsigneds().size(), 1); |
| 140 | +} |
| 141 | + |
| 142 | +TEST_F(ParameterTest, TestFloat) |
| 143 | +{ |
| 144 | + auto cfg = getCreateConfig(); |
| 145 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 146 | + grp->SetFloat("Parameter1", 1.5); |
| 147 | + grp->SetFloat("Parameter2", 2.5); |
| 148 | + EXPECT_EQ(grp->GetFloat("Parameter1", 2.0), 1.5); |
| 149 | + EXPECT_EQ(grp->GetFloat("Parameter3", 2.0), 2.0); |
| 150 | + EXPECT_EQ(grp->GetFloat("Parameter3", 4.0), 4.0); |
| 151 | + |
| 152 | + EXPECT_TRUE(grp->GetFloats("Test").empty()); |
| 153 | + EXPECT_EQ(grp->GetFloats().size(), 2); |
| 154 | + EXPECT_EQ(grp->GetFloats().at(0), 1.5); |
| 155 | + EXPECT_EQ(grp->GetFloats().at(1), 2.5); |
| 156 | + EXPECT_EQ(grp->GetFloatMap().size(), 2); |
| 157 | + |
| 158 | + grp->RemoveFloat("Parameter1"); |
| 159 | + EXPECT_EQ(grp->GetFloats().size(), 1); |
| 160 | +} |
| 161 | + |
| 162 | +TEST_F(ParameterTest, TestString) |
| 163 | +{ |
| 164 | + auto cfg = getCreateConfig(); |
| 165 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 166 | + grp->SetASCII("Parameter1", "Value1"); |
| 167 | + grp->SetASCII("Parameter2", "Value2"); |
| 168 | + EXPECT_EQ(grp->GetASCII("Parameter1", "Value3"), "Value1"); |
| 169 | + EXPECT_EQ(grp->GetASCII("Parameter3", "Value3"), "Value3"); |
| 170 | + EXPECT_EQ(grp->GetASCII("Parameter3", "Value4"), "Value4"); |
| 171 | + |
| 172 | + EXPECT_TRUE(grp->GetASCIIs("Test").empty()); |
| 173 | + EXPECT_EQ(grp->GetASCIIs().size(), 2); |
| 174 | + EXPECT_EQ(grp->GetASCIIs().at(0), "Value1"); |
| 175 | + EXPECT_EQ(grp->GetASCIIs().at(1), "Value2"); |
| 176 | + EXPECT_EQ(grp->GetASCIIMap().size(), 2); |
| 177 | + |
| 178 | + grp->RemoveASCII("Parameter1"); |
| 179 | + EXPECT_EQ(grp->GetASCIIs().size(), 1); |
| 180 | +} |
| 181 | + |
| 182 | +TEST_F(ParameterTest, TestCopy) |
| 183 | +{ |
| 184 | + auto cfg = getCreateConfig(); |
| 185 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 186 | + auto sub2 = grp->GetGroup("Sub1/Sub2"); |
| 187 | + sub2->SetFloat("Parameter", 1.5); |
| 188 | + |
| 189 | + auto sub3 = grp->GetGroup("Sub3"); |
| 190 | + sub3->SetFloat("AnotherParameter", 2.5); |
| 191 | + sub2->copyTo(sub3); |
| 192 | + EXPECT_TRUE(sub3->GetFloats("Test").empty()); |
| 193 | + EXPECT_EQ(sub3->GetFloats().size(), 1); |
| 194 | + EXPECT_EQ(sub3->GetFloats().at(0), 1.5); |
| 195 | + |
| 196 | + // Test that old parameter has been removed |
| 197 | + EXPECT_TRUE(sub3->GetFloats("AnotherParameter").empty()); |
| 198 | +} |
| 199 | + |
| 200 | +TEST_F(ParameterTest, TestInsert) |
| 201 | +{ |
| 202 | + auto cfg = getCreateConfig(); |
| 203 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 204 | + auto sub2 = grp->GetGroup("Sub1/Sub2"); |
| 205 | + sub2->SetFloat("Parameter", 1.5); |
| 206 | + |
| 207 | + auto sub3 = grp->GetGroup("Sub3"); |
| 208 | + sub3->SetFloat("AnotherParameter", 2.5); |
| 209 | + sub2->insertTo(sub3); |
| 210 | + |
| 211 | + EXPECT_EQ(sub3->GetFloats().size(), 2); |
| 212 | + EXPECT_EQ(sub3->GetFloats("AnotherParameter").size(), 1); |
| 213 | +} |
| 214 | + |
| 215 | +TEST_F(ParameterTest, TestRevert) |
| 216 | +{ |
| 217 | + auto cfg = getCreateConfig(); |
| 218 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 219 | + auto sub1 = grp->GetGroup("Sub1/Sub/Sub"); |
| 220 | + sub1->SetFloat("Float", 1.5); |
| 221 | + |
| 222 | + auto sub2 = grp->GetGroup("Sub2/Sub/Sub"); |
| 223 | + sub2->SetFloat("Float", 1.5); |
| 224 | + |
| 225 | + grp->GetGroup("Sub1")->revert(grp->GetGroup("Sub2")); |
| 226 | + |
| 227 | + EXPECT_EQ(sub1->GetFloat("Float", 0.0), 0.0); |
| 228 | + EXPECT_EQ(sub1->GetFloat("Float", 2.0), 2.0); |
| 229 | + EXPECT_EQ(sub2->GetFloat("Float", 2.0), 1.5); |
| 230 | +} |
| 231 | + |
| 232 | +TEST_F(ParameterTest, TestRemoveGroup) |
| 233 | +{ |
| 234 | + auto cfg = getCreateConfig(); |
| 235 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 236 | + auto sub1 = grp->GetGroup("Sub1"); |
| 237 | + auto sub2 = sub1->GetGroup("Sub2/Sub/Sub"); |
| 238 | + sub2->SetFloat("Float", 1.5); |
| 239 | + sub1->RemoveGrp("Sub2"); |
| 240 | + sub2->SetInt("Int", 2); |
| 241 | + EXPECT_EQ(sub2->GetInt("Int", 0), 2); |
| 242 | + EXPECT_EQ(sub2->GetInt("Int", 1), 2); |
| 243 | + cfg->CheckDocument(); |
| 244 | +} |
| 245 | + |
| 246 | +TEST_F(ParameterTest, TestRenameGroup) |
| 247 | +{ |
| 248 | + auto cfg = getCreateConfig(); |
| 249 | + auto grp = cfg->GetGroup("TopLevelGroup"); |
| 250 | + auto sub1 = grp->GetGroup("Sub1"); |
| 251 | + auto sub2 = sub1->GetGroup("Sub2/Sub/Sub"); |
| 252 | + sub2->SetFloat("Float", 1.5); |
| 253 | + sub1->RenameGrp("Sub2", "Sub3"); |
| 254 | + sub2->SetInt("Int", 2); |
| 255 | + EXPECT_EQ(sub2->GetInt("Int", 0), 2); |
| 256 | + EXPECT_EQ(sub2->GetInt("Int", 1), 2); |
| 257 | + cfg->CheckDocument(); |
| 258 | +} |
| 259 | + |
| 260 | +// NOLINTEND(cppcoreguidelines-*,readability-*) |
0 commit comments