From a3d007d8c4a1c6b7748883bcaadf5cf671b8b381 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 15 Oct 2022 00:14:45 -0500 Subject: [PATCH] Add UGC tests --- test/source/scwx/awips/ugc.test.cpp | 136 ++++++++++++++++++++++++++++ test/test.cmake | 3 +- 2 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 test/source/scwx/awips/ugc.test.cpp diff --git a/test/source/scwx/awips/ugc.test.cpp b/test/source/scwx/awips/ugc.test.cpp new file mode 100644 index 00000000..e0fdbc8f --- /dev/null +++ b/test/source/scwx/awips/ugc.test.cpp @@ -0,0 +1,136 @@ +#include + +#include + +namespace scwx +{ +namespace awips +{ + +static const std::string logPrefix_ = "scwx::awips::ugc.test"; + +// Test cases are used from examples at the end of NWSI 10-1702 + +TEST(Ugc, EntireState1) +{ + Ugc ugc; + std::vector ugcString {"NDZ001>054-222115-"}; + + ugc.Parse(ugcString); + + auto states = ugc.states(); + auto fipsIds = ugc.fips_ids(); + auto expiration = ugc.product_expiration(); + + EXPECT_EQ(states, std::vector {"ND"}); + ASSERT_EQ(fipsIds.size(), 54u); + EXPECT_EQ(fipsIds[0], "NDZ001"); + EXPECT_EQ(fipsIds[1], "NDZ002"); + EXPECT_EQ(fipsIds[52], "NDZ053"); + EXPECT_EQ(fipsIds[53], "NDZ054"); + EXPECT_EQ(expiration, "222115"); +} + +TEST(Ugc, EntireState2) +{ + Ugc ugc; + std::vector ugcString {"COZALL-220000-"}; + + ugc.Parse(ugcString); + + auto states = ugc.states(); + auto fipsIds = ugc.fips_ids(); + auto expiration = ugc.product_expiration(); + + EXPECT_EQ(states, std::vector {"CO"}); + ASSERT_EQ(fipsIds.size(), 1u); + EXPECT_EQ(fipsIds[0], "COZ000"); + EXPECT_EQ(expiration, "220000"); +} + +TEST(Ugc, EntireState3) +{ + Ugc ugc; + std::vector ugcString {"AKZALL-191846-"}; + + ugc.Parse(ugcString); + + auto states = ugc.states(); + auto fipsIds = ugc.fips_ids(); + auto expiration = ugc.product_expiration(); + + EXPECT_EQ(states, std::vector {"AK"}); + ASSERT_EQ(fipsIds.size(), 1u); + EXPECT_EQ(fipsIds[0], "AKZ000"); + EXPECT_EQ(expiration, "191846"); +} + +TEST(Ugc, EntireState5) +{ + Ugc ugc; + std::vector ugcString {"IAC000-060015-"}; + + ugc.Parse(ugcString); + + auto states = ugc.states(); + auto fipsIds = ugc.fips_ids(); + auto expiration = ugc.product_expiration(); + + EXPECT_EQ(states, std::vector {"IA"}); + ASSERT_EQ(fipsIds.size(), 1u); + EXPECT_EQ(fipsIds[0], "IAC000"); + EXPECT_EQ(expiration, "060015"); +} + +TEST(Ugc, PartOfState1) +{ + Ugc ugc; + std::vector ugcString { + "DCZ001-MDZ003>007-009>011-013-014-016>018-501-502-VAZ021-025>031-", + "036>040-042-050>057-501-502-WVZ050>055-501>504-182200-"}; + + ugc.Parse(ugcString); + + auto states = ugc.states(); + auto fipsIds = ugc.fips_ids(); + auto expiration = ugc.product_expiration(); + + const std::vector expectedStates {"DC", "MD", "VA", "WV"}; + + EXPECT_EQ(states, expectedStates); + ASSERT_EQ(fipsIds.size(), 50u); + EXPECT_EQ(fipsIds[0], "DCZ001"); + EXPECT_EQ(fipsIds[1], "MDZ003"); + EXPECT_EQ(fipsIds[2], "MDZ004"); + EXPECT_EQ(fipsIds[5], "MDZ007"); + EXPECT_EQ(fipsIds[15], "MDZ502"); + EXPECT_EQ(fipsIds[16], "VAZ021"); + EXPECT_EQ(fipsIds[17], "VAZ025"); + EXPECT_EQ(fipsIds[23], "VAZ031"); + EXPECT_EQ(fipsIds[39], "VAZ502"); + EXPECT_EQ(fipsIds[40], "WVZ050"); + EXPECT_EQ(fipsIds[45], "WVZ055"); + EXPECT_EQ(fipsIds[49], "WVZ504"); + EXPECT_EQ(expiration, "182200"); +} + +TEST(Ugc, PartOfState3) +{ + Ugc ugc; + std::vector ugcString {"LHZ349-363-202300-"}; + + ugc.Parse(ugcString); + + auto states = ugc.states(); + auto fipsIds = ugc.fips_ids(); + auto expiration = ugc.product_expiration(); + + EXPECT_EQ(states, std::vector {"LH"}); + ASSERT_EQ(fipsIds.size(), 2u); + EXPECT_EQ(fipsIds[0], "LHZ349"); + EXPECT_EQ(fipsIds[1], "LHZ363"); + EXPECT_EQ(expiration, "202300"); +} + +} // namespace awips +} // namespace scwx diff --git a/test/test.cmake b/test/test.cmake index c7c4bd67..63cfef6a 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -11,7 +11,8 @@ set(SRC_MAIN source/scwx/wxtest.cpp) set(SRC_AWIPS_TESTS source/scwx/awips/coded_location.test.cpp source/scwx/awips/coded_time_motion_location.test.cpp source/scwx/awips/pvtec.test.cpp - source/scwx/awips/text_product_file.test.cpp) + source/scwx/awips/text_product_file.test.cpp + source/scwx/awips/ugc.test.cpp) set(SRC_COMMON_TESTS source/scwx/common/color_table.test.cpp source/scwx/common/products.test.cpp) set(SRC_PROVIDER_TESTS source/scwx/provider/aws_level2_data_provider.test.cpp