Skip to content

Commit

Permalink
Merge pull request #217 from LLNL/split_to_si
Browse files Browse the repository at this point in the history
split the defined_unit_string into a customary and si blocks
  • Loading branch information
phlptp authored Apr 4, 2022
2 parents 4dfc837 + ee30e3b commit d1941d3
Show file tree
Hide file tree
Showing 5 changed files with 874 additions and 780 deletions.
1 change: 1 addition & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ set(UNITS_TESTS
test_measurement_strings
test_commodities
test_siunits
test_defined_units
)

set(TEST_FILE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/files)
Expand Down
81 changes: 81 additions & 0 deletions test/test_defined_units.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
Copyright (c) 2019-2022,
Lawrence Livermore National Security, LLC;
See the top-level NOTICE for additional details. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause
*/

#include "test.hpp"
#include "units/units_conversion_maps.hpp"
#include <map>

TEST(unit_string_definitions, si_vector_length)
{
for (std::size_t ii = 0; ii < units::defined_unit_strings_si.size(); ++ii) {
EXPECT_TRUE(units::defined_unit_strings_si[ii].first != nullptr) << ii;
if (units::defined_unit_strings_si[ii].first == nullptr) {
break;
}
}
}

TEST(unit_string_definitions, customary_vector)
{
for (std::size_t ii = 0; ii < units::defined_unit_strings_customary.size();
++ii) {
EXPECT_TRUE(units::defined_unit_strings_customary[ii].first != nullptr)
<< ii;
if (units::defined_unit_strings_customary[ii].first == nullptr) {
break;
}
}
}

TEST(unit_string_definitions, si_duplicates)
{
std::map<std::string, units::precise_unit> testMap;
for (const auto& ustring : units::defined_unit_strings_si) {
if (ustring.first == nullptr) {
continue;
}
auto res = testMap.emplace(ustring.first, ustring.second);
EXPECT_TRUE(res.second) << "duplicate si unit string " << ustring.first;
}
}

TEST(unit_string_definitions, customary_duplicates)
{
std::map<std::string, units::precise_unit> testMap;
for (const auto& ustring : units::defined_unit_strings_customary) {
if (ustring.first == nullptr) {
continue;
}
auto res = testMap.emplace(ustring.first, ustring.second);
EXPECT_TRUE(res.second) << "duplicate unit string " << ustring.first;
}
}

TEST(unit_string_definitions, combined_duplicates)
{
std::map<std::string, units::precise_unit> testMap;
for (const auto& ustring : units::defined_unit_strings_si) {
if (ustring.first == nullptr) {
continue;
}
auto res = testMap.emplace(ustring.first, ustring.second);
EXPECT_TRUE(res.second) << "duplicate si unit string " << ustring.first;
}

for (std::size_t ii = 0; ii < units::defined_unit_strings_customary.size();
++ii) {
if (units::defined_unit_strings_customary[ii].first == nullptr) {
continue;
}
auto res = testMap.emplace(
units::defined_unit_strings_customary[ii].first,
units::defined_unit_strings_customary[ii].second);
EXPECT_TRUE(res.second)
<< "duplicate unit string " << ii << " "
<< units::defined_unit_strings_customary[ii].first;
}
}
1 change: 1 addition & 0 deletions units/unit_definitions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1922,4 +1922,5 @@ namespace detail {
return constants::invalid_conversion;
}
} // namespace detail

} // namespace UNITS_NAMESPACE
7 changes: 6 additions & 1 deletion units/units.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2574,7 +2574,12 @@ static std::pair<double, size_t>
static smap loadDefinedUnits()
{
smap knownUnits;
for (auto& pr : defined_unit_strings) {
for (auto& pr : defined_unit_strings_si) {
if (pr.first != nullptr) {
knownUnits.emplace(pr.first, pr.second);
}
}
for (auto& pr : defined_unit_strings_customary) {
if (pr.first != nullptr) {
knownUnits.emplace(pr.first, pr.second);
}
Expand Down
Loading

0 comments on commit d1941d3

Please sign in to comment.