Skip to content

Commit c5e8545

Browse files
committed
fix:コードレビュー対応
1 parent 00dd41b commit c5e8545

File tree

3 files changed

+68
-87
lines changed

3 files changed

+68
-87
lines changed

include/plateau/dataset/standard_map_grid.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,25 @@
77
#include "plateau/dataset/grid_code.h"
88

99
namespace plateau::dataset {
10-
enum class StandardMapGridLevel;
10+
11+
enum class StandardMapGridLevel
12+
{
13+
Invalid = -1,
14+
Level50000 = 0,
15+
Level5000 = 1,
16+
Level2500 = 2,
17+
Level1000 = 3,
18+
Level500 = 4,
19+
};
20+
1121
/**
1222
* \brief 国土基本図図郭を表します。
1323
*
1424
* 国土基本図の図郭コードを扱い、緯度経度範囲の取得などの機能を提供します。
1525
*/
1626
class LIBPLATEAU_EXPORT StandardMapGrid : public GridCode {
1727
public:
18-
explicit StandardMapGrid(std::string code, bool is_valid);
28+
explicit StandardMapGrid(std::string code);
1929
StandardMapGrid() = default;
2030

2131
/**

src/dataset/standard_map_grid.cpp

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,6 @@
99

1010
namespace plateau::dataset {
1111

12-
enum class StandardMapGridLevel
13-
{
14-
Invalid = -1,
15-
Level50000 = 0,
16-
Level5000 = 1,
17-
Level2500 = 2,
18-
Level1000 = 3,
19-
Level500 = 4,
20-
};
21-
2212
namespace {
2313
constexpr int level5000_division_count = 10;
2414
constexpr int level2500_division_count = 2;
@@ -96,13 +86,14 @@ namespace plateau::dataset {
9686
}
9787
}
9888

99-
StandardMapGrid::StandardMapGrid(std::string code, bool is_valid = true) :
100-
code_(std::move(code)), is_valid_(is_valid) {
89+
StandardMapGrid::StandardMapGrid(std::string code) : code_(std::move(code)) {
10190
try {
91+
is_valid_ = true;
92+
10293
// 図郭コードの文字列が数字とアルファベットからなることをチェックします。
10394
if (!std::all_of(code_.begin(), code_.end(), [](char c)
10495
{
105-
return std::isalnum(c);
96+
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z');
10697
})) {
10798
is_valid_ = false;
10899
return;
@@ -282,31 +273,16 @@ namespace plateau::dataset {
282273
}
283274

284275
GridCode* StandardMapGrid::upperRaw() const {
285-
auto* new_grid = new StandardMapGrid(code_);
286-
287-
switch (level_) {
288-
case StandardMapGridLevel::Level500:
289-
case StandardMapGridLevel::Level1000:
290-
case StandardMapGridLevel::Level2500:
291-
// 6桁のLevel5000コードにする(末尾を削除)
292-
new_grid->code_ = code_.substr(0, 6);
293-
new_grid->level_ = StandardMapGridLevel::Level5000;
294-
break;
295-
296-
case StandardMapGridLevel::Level5000:
297-
// 4桁のLevel50000コードにする(末尾を削除)
298-
new_grid->code_ = code_.substr(0, 4);
299-
new_grid->level_ = StandardMapGridLevel::Level50000;
300-
break;
301-
302-
case StandardMapGridLevel::Level50000:
303-
default:
304-
// 不正なレベルの場合も無効にする
305-
new_grid->is_valid_ = false;
306-
break;
276+
if (level_ == StandardMapGridLevel::Level50000) {
277+
auto* new_grid = new StandardMapGrid(code_);
278+
new_grid->is_valid_ = false;
279+
return new_grid;
307280
}
308281

309-
return new_grid;
282+
const std::string upper_code = level_ > StandardMapGridLevel::Level5000
283+
? code_.substr(0, 6)
284+
: code_.substr(0, 4);
285+
return new StandardMapGrid(upper_code);
310286
}
311287

312288
int StandardMapGrid::getLevel() const {

test/test_standard_map_grid.cpp

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level50000) {
168168
const auto grid = StandardMapGrid("08JE");
169169
const auto [min, max] = grid.calculateGridExtent();
170170

171-
EXPECT_DOUBLE_EQ(min.x, 0);
172-
EXPECT_DOUBLE_EQ(min.z, 0);
173-
EXPECT_DOUBLE_EQ(max.x, 40000);
174-
EXPECT_DOUBLE_EQ(max.z, 30000);
171+
EXPECT_NEAR(min.x, 0, 0.1);
172+
EXPECT_NEAR(min.z, 0, 0.1);
173+
EXPECT_NEAR(max.x, 40000, 0.1);
174+
EXPECT_NEAR(max.z, 30000, 0.1);
175175

176176
std::cout << "Grid 08JE: "
177177
<< "(" << min.x << ", " << min.z << ") - ("
@@ -182,10 +182,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level50000) {
182182
const auto grid = StandardMapGrid("08NA"); // N(南), A(東西)
183183
const auto [min, max] = grid.calculateGridExtent();
184184

185-
EXPECT_DOUBLE_EQ(min.x, -160000);
186-
EXPECT_DOUBLE_EQ(min.z, -120000);
187-
EXPECT_DOUBLE_EQ(max.x, -120000);
188-
EXPECT_DOUBLE_EQ(max.z, -90000);
185+
EXPECT_NEAR(min.x, -160000, 0.1);
186+
EXPECT_NEAR(min.z, -120000, 0.1);
187+
EXPECT_NEAR(max.x, -120000, 0.1);
188+
EXPECT_NEAR(max.z, -90000, 0.1);
189189

190190
std::cout << "Grid 08NA: "
191191
<< "(" << min.x << ", " << min.z << ") - ("
@@ -196,10 +196,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level50000) {
196196
const auto grid = StandardMapGrid("08FA"); // F(北), A(東西)
197197
const auto [min, max] = grid.calculateGridExtent();
198198

199-
EXPECT_DOUBLE_EQ(min.x, -160000);
200-
EXPECT_DOUBLE_EQ(min.z, 120000);
201-
EXPECT_DOUBLE_EQ(max.x, -120000);
202-
EXPECT_DOUBLE_EQ(max.z, 150000);
199+
EXPECT_NEAR(min.x, -160000, 0.1);
200+
EXPECT_NEAR(min.z, 120000, 0.1);
201+
EXPECT_NEAR(max.x, -120000, 0.1);
202+
EXPECT_NEAR(max.z, 150000, 0.1);
203203

204204
std::cout << "Grid 08FA: "
205205
<< "(" << min.x << ", " << min.z << ") - ("
@@ -213,10 +213,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level5000) {
213213
const auto grid = StandardMapGrid("08JE54"); // Level5000
214214
const auto [min, max] = grid.calculateGridExtent();
215215

216-
EXPECT_DOUBLE_EQ(min.x, 16000.0);
217-
EXPECT_DOUBLE_EQ(min.z, 12000.0);
218-
EXPECT_DOUBLE_EQ(max.x, 20000.0);
219-
EXPECT_DOUBLE_EQ(max.z, 15000.0);
216+
EXPECT_NEAR(min.x, 16000.0, 0.1);
217+
EXPECT_NEAR(min.z, 12000.0, 0.1);
218+
EXPECT_NEAR(max.x, 20000.0, 0.1);
219+
EXPECT_NEAR(max.z, 15000.0, 0.1);
220220

221221
std::cout << "\n08JE54:" << std::endl
222222
<< "(" << min.x << ", " << min.z << ") - (" << max.x << ", " << max.z << ")" << std::endl;
@@ -227,11 +227,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level5000) {
227227
const auto grid = StandardMapGrid("08NA54"); // Level5000
228228
const auto [min, max] = grid.calculateGridExtent();
229229

230-
231-
EXPECT_DOUBLE_EQ(min.x, -144000.0);
232-
EXPECT_DOUBLE_EQ(min.z, -108000.0);
233-
EXPECT_DOUBLE_EQ(max.x, -140000.0);
234-
EXPECT_DOUBLE_EQ(max.z, -105000.0);
230+
EXPECT_NEAR(min.x, -144000.0, 0.1);
231+
EXPECT_NEAR(min.z, -108000.0, 0.1);
232+
EXPECT_NEAR(max.x, -140000.0, 0.1);
233+
EXPECT_NEAR(max.z, -105000.0, 0.1);
235234

236235
std::cout << "\n08NA54: "
237236
<< "(" << min.x << ", " << min.z << ") - ("
@@ -244,10 +243,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level2500) {
244243
const auto grid = StandardMapGrid("08JE541");
245244
const auto [min, max] = grid.calculateGridExtent();
246245

247-
EXPECT_DOUBLE_EQ(min.x, 16000.0);
248-
EXPECT_DOUBLE_EQ(min.z, 13500.0);
249-
EXPECT_DOUBLE_EQ(max.x, 18000.0);
250-
EXPECT_DOUBLE_EQ(max.z, 15000.0);
246+
EXPECT_NEAR(min.x, 16000.0, 0.1);
247+
EXPECT_NEAR(min.z, 13500.0, 0.1);
248+
EXPECT_NEAR(max.x, 18000.0, 0.1);
249+
EXPECT_NEAR(max.z, 15000.0, 0.1);
251250

252251
std::cout << "\n08JE54:" << std::endl
253252
<< "(" << min.x << ", " << min.z << ") - (" << max.x << ", " << max.z << ")" << std::endl;
@@ -257,11 +256,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level2500) {
257256
const auto grid = StandardMapGrid("08NA542");
258257
const auto [min, max] = grid.calculateGridExtent();
259258

260-
261-
EXPECT_DOUBLE_EQ(min.x, -142000.0);
262-
EXPECT_DOUBLE_EQ(min.z, -106500.0);
263-
EXPECT_DOUBLE_EQ(max.x, -140000.0);
264-
EXPECT_DOUBLE_EQ(max.z, -105000.0);
259+
EXPECT_NEAR(min.x, -142000.0, 0.1);
260+
EXPECT_NEAR(min.z, -106500.0, 0.1);
261+
EXPECT_NEAR(max.x, -140000.0, 0.1);
262+
EXPECT_NEAR(max.z, -105000.0, 0.1);
265263

266264
std::cout << "\n08NA54: "
267265
<< "(" << min.x << ", " << min.z << ") - ("
@@ -274,10 +272,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level1000) {
274272
const auto grid = StandardMapGrid("08JE640E");
275273
const auto [min, max] = grid.calculateGridExtent();
276274

277-
EXPECT_DOUBLE_EQ(min.x, 19200.0);
278-
EXPECT_DOUBLE_EQ(min.z, 11400.0);
279-
EXPECT_DOUBLE_EQ(max.x, 20000.0);
280-
EXPECT_DOUBLE_EQ(max.z, 12000.0);
275+
EXPECT_NEAR(min.x, 19200.0, 0.1);
276+
EXPECT_NEAR(min.z, 11400.0, 0.1);
277+
EXPECT_NEAR(max.x, 20000.0, 0.1);
278+
EXPECT_NEAR(max.z, 12000.0, 0.1);
281279

282280
std::cout << "\n08JE54:" << std::endl
283281
<< "(" << min.x << ", " << min.z << ") - (" << max.x << ", " << max.z << ")" << std::endl;
@@ -287,28 +285,26 @@ TEST(StandardMapGrid, calculateGridExtent_Level1000) {
287285
const auto grid = StandardMapGrid("08NA542B");
288286
const auto [min, max] = grid.calculateGridExtent();
289287

290-
291-
EXPECT_DOUBLE_EQ(min.x, -143200.0);
292-
EXPECT_DOUBLE_EQ(min.z, -106800.0);
293-
EXPECT_DOUBLE_EQ(max.x, -142400.0);
294-
EXPECT_DOUBLE_EQ(max.z, -106200.0);
288+
EXPECT_NEAR(min.x, -143200.0, 0.1);
289+
EXPECT_NEAR(min.z, -106800.0, 0.1);
290+
EXPECT_NEAR(max.x, -142400.0, 0.1);
291+
EXPECT_NEAR(max.z, -106200.0, 0.1);
295292

296293
std::cout << "\n08NA54: "
297294
<< "(" << min.x << ", " << min.z << ") - ("
298295
<< max.x << ", " << max.z << ")" << std::endl;
299296
}
300297
}
301298

302-
303299
TEST(StandardMapGrid, calculateGridExtent_Level500) {
304300
{
305301
const auto grid = StandardMapGrid("08JE6421");
306302
const auto [min, max] = grid.calculateGridExtent();
307303

308-
EXPECT_DOUBLE_EQ(min.x, 16400.0);
309-
EXPECT_DOUBLE_EQ(min.z, 11100.0);
310-
EXPECT_DOUBLE_EQ(max.x, 16800.0);
311-
EXPECT_DOUBLE_EQ(max.z, 11400.0);
304+
EXPECT_NEAR(min.x, 16400.0, 0.1);
305+
EXPECT_NEAR(min.z, 11100.0, 0.1);
306+
EXPECT_NEAR(max.x, 16800.0, 0.1);
307+
EXPECT_NEAR(max.z, 11400.0, 0.1);
312308

313309
std::cout << "\n08JE54:" << std::endl
314310
<< "(" << min.x << ", " << min.z << ") - (" << max.x << ", " << max.z << ")" << std::endl;
@@ -318,11 +314,10 @@ TEST(StandardMapGrid, calculateGridExtent_Level500) {
318314
const auto grid = StandardMapGrid("08NA5476");
319315
const auto [min, max] = grid.calculateGridExtent();
320316

321-
322-
EXPECT_DOUBLE_EQ(min.x, -141600.0);
323-
EXPECT_DOUBLE_EQ(min.z, -107400.0);
324-
EXPECT_DOUBLE_EQ(max.x, -141200.0);
325-
EXPECT_DOUBLE_EQ(max.z, -107100.0);
317+
EXPECT_NEAR(min.x, -141600.0, 0.1);
318+
EXPECT_NEAR(min.z, -107400.0, 0.1);
319+
EXPECT_NEAR(max.x, -141200.0, 0.1);
320+
EXPECT_NEAR(max.z, -107100.0, 0.1);
326321

327322
std::cout << "\n08NA54: "
328323
<< "(" << min.x << ", " << min.z << ") - ("

0 commit comments

Comments
 (0)