Browse Source

Fixed tests. Added json_int to utils.

Steve Thielemann 3 years ago
parent
commit
c47a479f67
3 changed files with 18 additions and 7 deletions
  1. 9 7
      test-director.cpp
  2. 8 0
      utils.cpp
  3. 1 0
      utils.h

+ 9 - 7
test-director.cpp

@@ -7,6 +7,7 @@
 #include "director.h"
 #include "galaxy.h"
 #include "gtest/gtest.h"
+#include "utils.h"
 
 /*
 
@@ -169,20 +170,21 @@ TEST(director, director_parsing_density) {
   sector_data[711]["known"] = true;
 
   for (auto sector : sectors) {
+    std::string sector_text = std::to_string(sector);
     // GTEST_COUT << "Testing Sector " << sector << std::endl;
-    EXPECT_EQ((int)dir.galaxy.meta["density"][sector]["density"],
-              (int)sector_data[sector]["density"])
+    EXPECT_EQ(json_int(dir.galaxy.meta["density"][sector_text]["density"]),
+              sector_data[sector]["density"])
         << "Sector " << sector << " density";
-    EXPECT_EQ((int)dir.galaxy.meta["density"][sector]["warps"],
-              (int)sector_data[sector]["warps"])
+    EXPECT_EQ(json_int(dir.galaxy.meta["density"][sector_text]["warps"]),
+              sector_data[sector]["warps"])
         << "Sector " << sector << " warps";
-    EXPECT_EQ((int)dir.galaxy.meta["density"][sector]["navhaz"],
+    EXPECT_EQ(json_int(dir.galaxy.meta["density"][sector_text]["navhaz"]),
               (int)sector_data[sector]["navhaz"])
         << "Sector " << sector << " navhaz";
-    EXPECT_EQ((bool)dir.galaxy.meta["density"][sector]["anom"],
+    EXPECT_EQ(dir.galaxy.meta["density"][sector_text]["anom"],
               (bool)sector_data[sector]["anom"])
         << "Sector " << sector << " anom";
-    EXPECT_EQ((bool)dir.galaxy.meta["density"][sector]["known"],
+    EXPECT_EQ(dir.galaxy.meta["density"][sector_text]["known"],
               (bool)sector_data[sector]["known"])
         << "Sector " << sector << " known";
   }

+ 8 - 0
utils.cpp

@@ -265,3 +265,11 @@ std::string json_str(json j) {
   error += j.type_name();
   throw std::range_error(error);
 }
+
+int json_int(json j) {
+  if (j.is_number_integer()) return j.get<int>();
+  if (j.is_string()) return sstoi(j.get<std::string>());
+  std::string error = "json_int from ";
+  error += j.type_name();
+  throw std::range_error(error);
+}

+ 1 - 0
utils.h

@@ -47,5 +47,6 @@ using json = nlohmann::json;
 
 bool json_bool(json j);
 std::string json_str(json j);
+int json_int(json j);
 
 #endif