Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added examples/sample-data/bag_163_vr.bag
Binary file not shown.
2 changes: 1 addition & 1 deletion tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ set(CMAKE_DEBUG_POSTFIX "d")

set(TEST_SOURCE_FILES
test_main.cpp
test_bag_georefmetadata_layer.cpp
test_bag_compounddatatype.cpp
test_bag_dataset.cpp
test_bag_descriptor.cpp
test_bag_georefmetadata_layer.cpp
test_bag_interleavedlegacylayer.cpp
test_bag_interleavedlegacylayerdescriptor.cpp
test_bag_metadata.cpp
Expand Down
80 changes: 63 additions & 17 deletions tests/test_bag_vrrefinements.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,14 @@ TEST_CASE("test vr refinements create open", "[vrrefinements][create][open]")
pVrRefinementsDescriptor->getMinMaxUncertainty();
CHECK(std::tuple<float, float>(kExpectedMinUncertainty, kExpectedMaxUncertainty) ==
minMaxUncertainty);

// Verify varres_refinements layer dimensions...
auto vrRef = pDataset->getVRRefinements();
REQUIRE(vrRef);
const auto vrRefDesc = vrRef->getDescriptor();
auto vrRefDescDims = vrRefDesc->getDims();
CHECK(std::get<0>(vrRefDescDims) == 0);
CHECK(std::get<1>(vrRefDescDims) == 0);
}
}

Expand Down Expand Up @@ -425,27 +433,65 @@ TEST_CASE("test vr refinements write read", "[vrrefinements][write][read]")
pVrRefinements->getDescriptor());
CHECK(pDescriptor);

UNSCOPED_INFO("Write one record.");
constexpr BAG::VRRefinementsItem kExpectedItem0{9.8f, 0.654f};
UNSCOPED_INFO("Write one VR refinement.");
{
constexpr BAG::VRRefinementsItem kExpectedItem0{9.8f, 0.654f};

const auto* buffer = reinterpret_cast<const uint8_t*>(&kExpectedItem0);

constexpr uint32_t kRowStart = 0; // unused
constexpr uint32_t kColumnStart = 0;
constexpr uint32_t kRowEnd = 0; // unused
constexpr uint32_t kColumnEnd = 0;

REQUIRE_NOTHROW(pVrRefinements->write(kRowStart, kColumnStart, kRowEnd,
kColumnEnd, buffer));

UNSCOPED_INFO("Read the record back.");
auto result = pVrRefinements->read(kRowStart, kColumnStart, kRowEnd, kColumnEnd);
CHECK(result);

const auto* buffer = reinterpret_cast<const uint8_t*>(&kExpectedItem0);
const auto* res = reinterpret_cast<const BAG::VRRefinementsItem*>(result.data());
UNSCOPED_INFO("Check the expected value of VRRefinementItem::depth.");
CHECK(res->depth == kExpectedItem0.depth);
UNSCOPED_INFO("Check the expected value of VRRefinementItem::depth_uncrt.");
CHECK(res->depth_uncrt == kExpectedItem0.depth_uncrt);
}

UNSCOPED_INFO("Write another VR refinement.");
{
constexpr BAG::VRRefinementsItem kExpectedItem0{10.8f, 1.654f};

const auto* buffer = reinterpret_cast<const uint8_t*>(&kExpectedItem0);

constexpr uint32_t kRowStart = 0; // unused
constexpr uint32_t kColumnStart = 0;
constexpr uint32_t kRowEnd = 0; // unused
constexpr uint32_t kColumnEnd = 0;
constexpr uint32_t kRowStart = 0; // unused
constexpr uint32_t kColumnStart = 1;
constexpr uint32_t kRowEnd = 0; // unused
constexpr uint32_t kColumnEnd = 1;

REQUIRE_NOTHROW(pVrRefinements->write(kRowStart, kColumnStart, kRowEnd,
kColumnEnd, buffer));
REQUIRE_NOTHROW(pVrRefinements->write(kRowStart, kColumnStart, kRowEnd,
kColumnEnd, buffer));

UNSCOPED_INFO("Read the record back.");
auto result = pVrRefinements->read(kRowStart, kColumnStart, kRowEnd, kColumnEnd);
CHECK(result);
UNSCOPED_INFO("Read the record back.");
auto result = pVrRefinements->read(kRowStart, kColumnStart, kRowEnd, kColumnEnd);
CHECK(result);

const auto* res = reinterpret_cast<const BAG::VRRefinementsItem*>(result.data());
UNSCOPED_INFO("Check the expected value of VRRefinementItem::depth.");
CHECK(res->depth == kExpectedItem0.depth);
UNSCOPED_INFO("Check the expected value of VRRefinementItem::depth_uncrt.");
CHECK(res->depth_uncrt == kExpectedItem0.depth_uncrt);
}

const auto* res = reinterpret_cast<const BAG::VRRefinementsItem*>(result.data());
UNSCOPED_INFO("Check the expected value of VRRefinementItem::depth.");
CHECK(res->depth == kExpectedItem0.depth);
UNSCOPED_INFO("Check the expected value of VRRefinementItem::depth_uncrt.");
CHECK(res->depth_uncrt == kExpectedItem0.depth_uncrt);
// Re-open BAG file readonly and verify varres_refinements layer dimensions...
pDataset->close();
const auto dataset = Dataset::open(tmpBagFile, BAG_OPEN_READONLY);
REQUIRE(dataset);
auto vrRef = dataset->getVRRefinements();
REQUIRE(vrRef);
const auto vrRefDesc = vrRef->getDescriptor();
auto vrRefDescDims = vrRefDesc->getDims();
CHECK(std::get<0>(vrRefDescDims) == 1);
CHECK(std::get<1>(vrRefDescDims) == 2);
}

39 changes: 39 additions & 0 deletions tests/test_vr_bag.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,42 @@ TEST_CASE("test VR BAG reading NBS", "[dataset][open][VR][NBS]")
CHECK(std::get<0>(vrRefDescDims) == 1);
CHECK(std::get<1>(vrRefDescDims) == 3750);
}

TEST_CASE("test VR BAG reading libbag 1.6.3", "[dataset][open][VR][1.6.3]")
{
const std::string bagFileName{std::string{std::getenv("BAG_SAMPLES_PATH")} +
"/bag_163_vr.bag"};

const size_t kNumExpectedLayers = 4; // Elevation, Uncertainty, varres_metadata, varres_refinements

SECTION("open read only")
{
const auto dataset = Dataset::open(bagFileName, BAG_OPEN_READONLY);
REQUIRE(dataset);

CHECK(dataset->getLayerTypes().size() == kNumExpectedLayers);

const uint32_t kExpectedRows = 529;
const uint32_t kExpectedCols = 579;
CHECK(dataset->getDescriptor().getVersion() == "1.6.3");
auto dims = dataset->getDescriptor().getDims();
CHECK(std::get<0>(dims) == kExpectedRows);
CHECK(std::get<1>(dims) == kExpectedCols);

auto vrMeta = dataset->getVRMetadata();
REQUIRE(vrMeta);
const auto vrMetaDesc = vrMeta->getDescriptor();
auto vrMetaDescDims = vrMetaDesc->getDims();
// VR metadata descriptor dims should be the same as BAG dataset dims...
CHECK(std::get<0>(vrMetaDescDims) == kExpectedRows);
CHECK(std::get<1>(vrMetaDescDims) == kExpectedCols);

// Verify varres_refinements layer dimensions...
auto vrRef = dataset->getVRRefinements();
REQUIRE(vrRef);
const auto vrRefDesc = vrRef->getDescriptor();
auto vrRefDescDims = vrRefDesc->getDims();
CHECK(std::get<0>(vrRefDescDims) == 1);
CHECK(std::get<1>(vrRefDescDims) == 2957372);
}
}