File Coverage

t/to_chars.cc
Criterion Covered Total %
statement 31 53 58.4
branch 634 1750 36.2
condition n/a
subroutine n/a
pod n/a
total 665 1803 36.8


line stmt bran cond sub pod time code
1             #include "test.h"
2             #include
3             #include
4              
5             using panda::string;
6              
7 0 0         struct Exc : std::exception {};
8              
9             template struct nstr;
10             template <> struct nstr {
11 0 0         static string min () { return "-128"; }
12 0 0         static string max () { return "127"; }
13             };
14             template <> struct nstr {
15             static string min () { return "0"; }
16 0 0         static string max () { return "255"; }
17             };
18             template <> struct nstr {
19 0 0         static string min () { return "-32768"; }
20 0 0         static string max () { return "32767"; }
21             };
22             template <> struct nstr {
23             static string min () { return "0"; }
24 0 0         static string max () { return "65535"; }
25             };
26             template <> struct nstr {
27 0 0         static string min () { return "-2147483648"; }
28 0 0         static string max () { return "2147483647"; }
29             };
30             template <> struct nstr {
31             static string min () { return "0"; }
32 0 0         static string max () { return "4294967295"; }
33             };
34             template <> struct nstr {
35 0 0         static string min () { return "-9223372036854775808"; }
36 0 0         static string max () { return "9223372036854775807"; }
37             };
38             template <> struct nstr {
39             static string min () { return "0"; }
40 0 0         static string max () { return "18446744073709551615"; }
41             };
42              
43             template
44 48           string tci (Int val, int base = 10, size_t buflen = 100) {
45 48           string s;
46 48 50         char* buf = s.reserve(buflen);
    50          
    50          
    50          
    50          
    50          
    50          
    50          
47 48           char* bufend = buf + buflen;
48 48 50         auto res = panda::to_chars(buf, bufend, val, base);
    50          
    50          
    50          
    50          
    50          
    50          
    50          
49 48           s.length(res.ptr - buf);
50 48 100         if (res.ec) throw Exc();
    100          
    100          
    100          
    100          
    100          
    100          
    100          
51 48           return s;
52             }
53              
54             template ::is_signed>
55             struct test_sign_dependent;
56              
57             template
58             struct test_sign_dependent {
59 0           static void run () {
60 0 0         SECTION("negative number") {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
61 0 0         REQUIRE(tci(-99) == "-99");
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
62             }
63              
64 0 0         SECTION("no space") {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
65 0 0         REQUIRE_THROWS_AS(tci(-123, 10, 3), Exc);
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
66             }
67              
68 0 0         SECTION("min") {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
69 0 0         REQUIRE(tci(std::numeric_limits::min()) == nstr::min());
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
70             }
71 0           }
72             };
73              
74             template
75             struct test_sign_dependent {
76 0           static void run () {}
77             };
78              
79             template
80 72           void to_chars_test() {
81 80 50         SECTION("positive number") {
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
82 8 50         REQUIRE(tci(12) == "12");
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
83             }
84              
85 80 50         SECTION("zero") {
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
86 8 50         REQUIRE(tci(0) == "0");
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
87             }
88              
89 80 50         SECTION("max") {
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
90 8 50         REQUIRE(tci(std::numeric_limits::max()) == nstr::max());
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
91             }
92              
93 80 50         SECTION("8-base") {
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
94 8 50         REQUIRE(tci(10, 8) == "12");
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
95             }
96              
97 80 50         SECTION("16-base") {
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
98 8 50         REQUIRE(tci(10, 16) == "a");
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
99             }
100              
101 80 50         SECTION("no space") {
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    100          
102 8 50         REQUIRE_THROWS_AS(tci(123, 10, 2), Exc);
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
    50          
    50          
    50          
    50          
    0          
    0          
103             }
104              
105 72           test_sign_dependent::run();
106 72           }
107              
108 40           TEST_CASE("to_chars int8_t", "[to_chars]") { to_chars_test(); }
109 40           TEST_CASE("to_chars int16_t", "[to_chars]") { to_chars_test(); }
110 40           TEST_CASE("to_chars int32_t", "[to_chars]") { to_chars_test(); }
111 40           TEST_CASE("to_chars int64_t", "[to_chars]") { to_chars_test(); }
112 32           TEST_CASE("to_chars uint8_t", "[to_chars]") { to_chars_test(); }
113 32           TEST_CASE("to_chars uint16_t", "[to_chars]") { to_chars_test(); }
114 32           TEST_CASE("to_chars uint32_t", "[to_chars]") { to_chars_test(); }
115 104 50         TEST_CASE("to_chars uint64_t", "[to_chars]") { to_chars_test(); }
    50          
116