| 562 | } |
| 563 | |
| 564 | bool compareElements(const std::vector<S5::TileElement>& tileElements1, const std::vector<S5::TileElement>& tileElements2, bool displayAllDivergences) |
| 565 | { |
| 566 | long divergentBytesTotal = 0; |
| 567 | std::vector<S5::TileElement> smaller = tileElements1; |
| 568 | std::vector<S5::TileElement> larger = tileElements2; |
| 569 | if (tileElements1.size() > tileElements2.size()) |
| 570 | { |
| 571 | smaller = tileElements2; |
| 572 | larger = tileElements1; |
| 573 | } |
| 574 | |
| 575 | if (tileElements1.size() != tileElements2.size()) |
| 576 | { |
| 577 | Logging::info("The TileElements sizes are different."); |
| 578 | Logging::info("Size of TileElements1 = {}", tileElements1.size()); |
| 579 | Logging::info("Size of TileElements2 = {}", tileElements2.size()); |
| 580 | } |
| 581 | |
| 582 | int elementCount = 0; |
| 583 | auto iterator1 = tileElements1.begin(); |
| 584 | auto iterator2 = tileElements2.begin(); |
| 585 | for (auto y = 0; y < 384; ++y) |
| 586 | { |
| 587 | for (auto x = 0; x < 384; ++x) |
| 588 | { |
| 589 | auto allElementsOnTile = [](auto& iter) { |
| 590 | std::vector<S5::TileElement> ts; |
| 591 | do |
| 592 | { |
| 593 | ts.push_back(*iter); |
| 594 | } while (!iter++->isLast()); |
| 595 | return ts; |
| 596 | }; |
| 597 | const auto t1s = allElementsOnTile(iterator1); |
| 598 | const auto t2s = allElementsOnTile(iterator2); |
| 599 | auto i = 0U; |
| 600 | auto limit = std::min(t1s.size(), t2s.size()); |
| 601 | for (; i < limit; ++i) |
| 602 | { |
| 603 | if (!bitWiseEqual(t1s[i], t2s[i])) |
| 604 | { |
| 605 | if (divergentBytesTotal == 0) |
| 606 | { |
| 607 | Logging::info("DIVERGENCE"); |
| 608 | } |
| 609 | if (divergentBytesTotal == 0 || displayAllDivergences) |
| 610 | { |
| 611 | Logging::info("TILE ELEMENT[{}] TYPE[{}] x:{}, y:{}", elementCount, (t1s[i].type & 0x3C) >> 2, x, y); |
| 612 | } |
| 613 | divergentBytesTotal = bitWiseLogDivergence("Elements[" + std::to_string(elementCount) + "] x:" + std::to_string(x) + ", y:" + std::to_string(y), t1s[i], t2s[i], displayAllDivergences, divergentBytesTotal); |
| 614 | } |
| 615 | elementCount++; |
| 616 | } |
| 617 | |
| 618 | for (; i < t1s.size(); ++i) |
| 619 | { |
| 620 | if (divergentBytesTotal == 0) |
| 621 | { |
no test coverage detected