| 287 | } |
| 288 | |
| 289 | void checkXYZ(const std::string& file1, const std::string& file2) |
| 290 | { |
| 291 | StageFactory f; |
| 292 | |
| 293 | const std::string driver1 = f.inferReaderDriver(file1); |
| 294 | EXPECT_NE(driver1, "") << "Can't find driver"; |
| 295 | |
| 296 | const std::string driver2 = f.inferReaderDriver(file2); |
| 297 | EXPECT_NE(driver2, "") << "Can't find driver"; |
| 298 | |
| 299 | Stage *reader1 = f.createStage(driver1); |
| 300 | EXPECT_NE(reader1, (Stage *)NULL) << "Couldn't create stage"; |
| 301 | |
| 302 | Stage *reader2 = f.createStage(driver2); |
| 303 | EXPECT_NE(reader1, (Stage *)NULL) << "Couldn't create stage"; |
| 304 | |
| 305 | Options o1; |
| 306 | o1.add("filename", file1); |
| 307 | reader1->setOptions(o1); |
| 308 | PointTable t1; |
| 309 | reader1->prepare(t1); |
| 310 | PointViewSet s1 = reader1->execute(t1); |
| 311 | EXPECT_EQ(s1.size(), 1u); |
| 312 | PointViewPtr v1 = *s1.begin(); |
| 313 | |
| 314 | Options o2; |
| 315 | o2.add("filename", file2); |
| 316 | reader2->setOptions(o2); |
| 317 | PointTable t2; |
| 318 | reader2->prepare(t2); |
| 319 | PointViewSet s2 = reader2->execute(t2); |
| 320 | EXPECT_EQ(s2.size(), 1u); |
| 321 | PointViewPtr v2 = *s2.begin(); |
| 322 | |
| 323 | EXPECT_EQ(v1->size(), v2->size()) << "Files " << file1 << " and " << |
| 324 | file2 << " have different point counts."; |
| 325 | for (PointId idx = 0; idx < v1->size(); ++idx) |
| 326 | { |
| 327 | using namespace Dimension; |
| 328 | ASSERT_DOUBLE_EQ(v1->getFieldAs<double>(Id::X, idx), |
| 329 | v2->getFieldAs<double>(Id::X, idx)) << "Index = " << idx; |
| 330 | ASSERT_DOUBLE_EQ(v1->getFieldAs<double>(Id::Y, idx), |
| 331 | v2->getFieldAs<double>(Id::Y, idx)) << "Index = " << idx; |
| 332 | ASSERT_DOUBLE_EQ(v1->getFieldAs<double>(Id::Z, idx), |
| 333 | v2->getFieldAs<double>(Id::Z, idx)) << "Index = " << idx; |
| 334 | } |
| 335 | } |
| 336 | |
| 337 | |
| 338 | void check_pN(const PointView& data, PointId index, double xref, double yref, double zref) |