diff --git a/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp b/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp index a9f74c4..5b45835 100644 --- a/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp +++ b/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp @@ -41,6 +41,10 @@ std::string timeConversion(const std::string &s) { int hour; hour_str >> hour; + if (hour < 0 || hour > 23) { + throw std::invalid_argument("Invalid hour value"); + } + if (hour >= 12) { hour = 0; } diff --git a/src/tests/unit/lib/hackerrank/warmup/test_conversion.test.cpp b/src/tests/unit/lib/hackerrank/warmup/test_conversion.test.cpp index d29460f..1c74b3a 100644 --- a/src/tests/unit/lib/hackerrank/warmup/test_conversion.test.cpp +++ b/src/tests/unit/lib/hackerrank/warmup/test_conversion.test.cpp @@ -36,3 +36,8 @@ TEST_CASE("time_conversion helper functions edge cases", CHECK(hackerrank::warmup::firstN("", 0) == ""); CHECK(hackerrank::warmup::lastN("", 0) == ""); } + +TEST_CASE("time_conversion invalid input", "[hackerrank] [invalid] [warmup]") { + CHECK_THROWS_AS(hackerrank::warmup::timeConversion("25:01:00AM"), + std::invalid_argument); +}