Skip to content

Commit e6da444

Browse files
committed
add:国土基本図郭のテスト追加
1 parent fb68c05 commit e6da444

File tree

2 files changed

+126
-1
lines changed

2 files changed

+126
-1
lines changed

test/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ add_executable(plateau_test
4848
"test_texture_image_base.cpp"
4949
"test_map_zoom_level_searcher.cpp"
5050
"test_height_map_aligner.cpp"
51-
"test_heightmap_mesh_generator.cpp")
51+
"test_heightmap_mesh_generator.cpp"
52+
"test_standard_map_grid.cpp")
5253

5354
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/test_granularity_convert")
5455

test/test_standard_map_grid.cpp

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
#include <gtest/gtest.h>
2+
3+
#include <citygml/citygml.h>
4+
5+
#include <plateau/geometry/geo_coordinate.h>
6+
#include <plateau/dataset/standard_map_grid.h>
7+
8+
using namespace citygml;
9+
using namespace plateau::dataset;
10+
using namespace plateau::geometry;
11+
12+
TEST(StandardMapGrid, Level5000_WithinBounds) {
13+
const auto extent = StandardMapGrid("08EE54").getExtent(); // Level5000
14+
const auto expected = GeoCoordinate(37.4689, 138.7113, 0);
15+
16+
std::stringstream ss;
17+
ss << "Extent bounds: (" << extent.min.latitude << ", " << extent.min.longitude << ") - ("
18+
<< extent.max.latitude << ", " << extent.max.longitude << ")\n"
19+
<< "Expected point: (" << expected.latitude << ", " << expected.longitude << ")";
20+
SCOPED_TRACE(ss.str());
21+
ASSERT_TRUE(
22+
extent.max.latitude >= expected.latitude &&
23+
extent.max.longitude >= expected.longitude &&
24+
extent.min.latitude <= expected.latitude &&
25+
extent.min.longitude <= expected.longitude
26+
);
27+
}
28+
29+
TEST(StandardMapGrid, Level5000_OutOfBounds) {
30+
const auto extent = StandardMapGrid("08EE54").getExtent(); // Level5000
31+
const auto nonexpected = GeoCoordinate(37.4659, 138.7283, 0);
32+
33+
std::stringstream ss;
34+
ss << "Extent bounds: (" << extent.min.latitude << ", " << extent.min.longitude << ") - ("
35+
<< extent.max.latitude << ", " << extent.max.longitude << ")\n"
36+
<< "Non-expected point: (" << nonexpected.latitude << ", " << nonexpected.longitude << ")";
37+
SCOPED_TRACE(ss.str());
38+
ASSERT_FALSE(
39+
extent.max.latitude >= nonexpected.latitude &&
40+
extent.max.longitude >= nonexpected.longitude &&
41+
extent.min.latitude <= nonexpected.latitude &&
42+
extent.min.longitude <= nonexpected.longitude
43+
);
44+
}
45+
46+
TEST(StandardMapGrid, Level2500_WithinBounds) {
47+
const auto extent = StandardMapGrid("08EE554").getExtent(); // Level2500
48+
const auto expected = GeoCoordinate(37.4661, 138.7678, 0);
49+
50+
std::stringstream ss;
51+
ss << "Extent bounds: (" << extent.min.latitude << ", " << extent.min.longitude << ") - ("
52+
<< extent.max.latitude << ", " << extent.max.longitude << ")\n"
53+
<< "Expected point: (" << expected.latitude << ", " << expected.longitude << ")";
54+
SCOPED_TRACE(ss.str());
55+
ASSERT_TRUE(
56+
extent.max.latitude >= expected.latitude &&
57+
extent.max.longitude >= expected.longitude &&
58+
extent.min.latitude <= expected.latitude &&
59+
extent.min.longitude <= expected.longitude
60+
);
61+
}
62+
63+
TEST(StandardMapGrid, Level2500_OutOfBounds) {
64+
const auto extent = StandardMapGrid("08EE554").getExtent(); // Level2500
65+
const auto nonexpected = GeoCoordinate(37.4631, 138.7848, 0);
66+
67+
std::stringstream ss;
68+
ss << "Extent bounds: (" << extent.min.latitude << ", " << extent.min.longitude << ") - ("
69+
<< extent.max.latitude << ", " << extent.max.longitude << ")\n"
70+
<< "Non-expected point: (" << nonexpected.latitude << ", " << nonexpected.longitude << ")";
71+
SCOPED_TRACE(ss.str());
72+
ASSERT_FALSE(
73+
extent.max.latitude >= nonexpected.latitude &&
74+
extent.max.longitude >= nonexpected.longitude &&
75+
extent.min.latitude <= nonexpected.latitude &&
76+
extent.min.longitude <= nonexpected.longitude
77+
);
78+
}
79+
80+
TEST(StandardMapGrid, isWithinTest) {
81+
// Level50000とLevel5000の包含関係
82+
const auto grid50000 = StandardMapGrid("09AE");
83+
const auto grid5000 = StandardMapGrid("09AE09");
84+
const auto grid2500 = StandardMapGrid("09AE091");
85+
const auto grid1000 = StandardMapGrid("09AE091A");
86+
const auto grid500 = StandardMapGrid("09AE0911");
87+
88+
// 同じコードは包含関係にある
89+
ASSERT_TRUE(grid50000.isWithin(grid50000));
90+
ASSERT_TRUE(grid5000.isWithin(grid5000));
91+
92+
// Level50000は下位レベルを包含する
93+
ASSERT_TRUE(grid50000.isWithin(grid5000));
94+
ASSERT_TRUE(grid50000.isWithin(grid2500));
95+
ASSERT_TRUE(grid50000.isWithin(grid1000));
96+
ASSERT_TRUE(grid50000.isWithin(grid500));
97+
98+
// Level5000は下位レベルを包含する
99+
ASSERT_TRUE(grid5000.isWithin(grid2500));
100+
ASSERT_TRUE(grid5000.isWithin(grid1000));
101+
ASSERT_TRUE(grid5000.isWithin(grid500));
102+
103+
// 下位レベルは上位レベルを包含しない
104+
ASSERT_FALSE(grid5000.isWithin(grid50000));
105+
ASSERT_FALSE(grid2500.isWithin(grid50000));
106+
ASSERT_FALSE(grid2500.isWithin(grid5000));
107+
}
108+
109+
TEST(StandardMapGrid, invalidGridCode) {
110+
// 無効な図郭コードのテスト
111+
ASSERT_FALSE(StandardMapGrid("invalid").isValid());
112+
ASSERT_FALSE(StandardMapGrid("09").isValid()); // 短すぎる
113+
ASSERT_FALSE(StandardMapGrid("09AE09-1-1").isValid()); // 長すぎる
114+
ASSERT_FALSE(StandardMapGrid("09ZZ09").isValid()); // 無効な文字
115+
}
116+
117+
TEST(StandardMapGrid, levelCheck) {
118+
// 各レベルの判定テスト
119+
ASSERT_EQ(StandardMapGrid("09AE").getLevel(), 0); // Level50000
120+
ASSERT_EQ(StandardMapGrid("09AE09").getLevel(), 1); // Level5000
121+
ASSERT_EQ(StandardMapGrid("09AE091").getLevel(), 2); // Level2500
122+
ASSERT_EQ(StandardMapGrid("09AE091A").getLevel(), 3); // Level1000
123+
ASSERT_EQ(StandardMapGrid("09AE0911").getLevel(), 4); // Level500
124+
}

0 commit comments

Comments
 (0)