1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
/*******************************************************************\
Module: format_number_range unit tests
Author: Michael Tautschnig
\*******************************************************************/
#include <util/exception_utils.h> // IWYU pragma: keep
#include <util/format_number_range.h>
#include <testing-utils/use_catch.h>
TEST_CASE(
"Format a range of unsigned numbers",
"[core][util][format_number_range]")
{
const std::vector<mp_integer> singleton = {1};
REQUIRE(format_number_range(singleton) == "1");
const std::vector<mp_integer> r1 = {0, 42};
REQUIRE(format_number_range(r1) == "0,42");
const std::vector<mp_integer> r2 = {0, 1};
REQUIRE(format_number_range(r2) == "0,1");
const std::vector<mp_integer> r3 = {1, 2, 3};
REQUIRE(format_number_range(r3) == "1-3");
const std::vector<mp_integer> r4 = {1, 3, 4, 5};
REQUIRE(format_number_range(r4) == "1,3-5");
const std::vector<mp_integer> r5 = {1, 10, 11, 12, 42};
REQUIRE(format_number_range(r5) == "1,10-12,42");
const std::vector<mp_integer> r6 = {1, 10, 11, 12, 42, 43, 44};
REQUIRE(format_number_range(r6) == "1,10-12,42-44");
}
TEST_CASE(
"Parse a range of unsigned numbers",
"[core][util][format_number_range]")
{
const std::vector<mp_integer> singleton = {1};
REQUIRE(parse_number_range("1") == singleton);
const std::vector<mp_integer> r1 = {0, 42};
REQUIRE(parse_number_range("0,42") == r1);
const std::vector<mp_integer> r2 = {0, 1};
REQUIRE(parse_number_range("0,1") == r2);
const std::vector<mp_integer> r3 = {1, 2, 3};
REQUIRE(parse_number_range("1-3") == r3);
const std::vector<mp_integer> r4 = {1, 3, 4, 5};
REQUIRE(parse_number_range("1,3-5") == r4);
const std::vector<mp_integer> r5 = {1, 10, 11, 12, 42};
REQUIRE(parse_number_range("1,10-12,42") == r5);
const std::vector<mp_integer> r6 = {1, 10, 11, 12, 42, 43, 44};
REQUIRE(parse_number_range("1,10-12,42-44") == r6);
REQUIRE_THROWS_AS(parse_number_range(""), deserialization_exceptiont);
REQUIRE_THROWS_AS(parse_number_range(","), deserialization_exceptiont);
REQUIRE_THROWS_AS(parse_number_range("1,"), deserialization_exceptiont);
REQUIRE_THROWS_AS(parse_number_range("-5"), deserialization_exceptiont);
REQUIRE_THROWS_AS(parse_number_range("0,1-"), deserialization_exceptiont);
REQUIRE_THROWS_AS(parse_number_range("1, 2"), deserialization_exceptiont);
REQUIRE_THROWS_AS(parse_number_range("4-2"), deserialization_exceptiont);
}
|