File: test_misc.cpp

package info (click to toggle)
libosmium 2.23.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,564 kB
  • sloc: cpp: 53,570; sh: 148; makefile: 19
file content (74 lines) | stat: -rw-r--r-- 2,995 bytes parent folder | download | duplicates (5)
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
73
74
#include "catch.hpp"

#include <osmium/util/misc.hpp>

#include <cstdint>

namespace {

template <typename T>
void test_conv() {
    REQUIRE(osmium::detail::str_to_int<T>("0") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("1") == 1);
    REQUIRE(osmium::detail::str_to_int<T>("9") == 9);
    REQUIRE(osmium::detail::str_to_int<T>("10") == 10);
    REQUIRE(osmium::detail::str_to_int<T>("44") == 44);
    REQUIRE(osmium::detail::str_to_int<T>("45") == 45);
    REQUIRE(osmium::detail::str_to_int<T>("  123") == 123);

    REQUIRE(osmium::detail::str_to_int<T>("-1") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("-100") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("1 ") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("x1") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("1x") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("2 3") == 0);
    REQUIRE(osmium::detail::str_to_int<T>("9999999999999999999999") == 0);
}

} // anonymous namespace

TEST_CASE("string to integer conversion") {
    test_conv<int>();
    test_conv<unsigned int>();

    test_conv<int8_t>();
    REQUIRE(osmium::detail::str_to_int<int8_t>("126") == 126);
    REQUIRE(osmium::detail::str_to_int<int8_t>("127") == 0);
    REQUIRE(osmium::detail::str_to_int<int8_t>("128") == 0);

    test_conv<uint8_t>();
    REQUIRE(osmium::detail::str_to_int<uint8_t>("254") == 254);
    REQUIRE(osmium::detail::str_to_int<uint8_t>("255") == 0);
    REQUIRE(osmium::detail::str_to_int<uint8_t>("256") == 0);

    test_conv<int16_t>();
    REQUIRE(osmium::detail::str_to_int<int16_t>("32766") == 32766);
    REQUIRE(osmium::detail::str_to_int<int16_t>("32767") == 0);
    REQUIRE(osmium::detail::str_to_int<int16_t>("32768") == 0);

    test_conv<uint16_t>();
    REQUIRE(osmium::detail::str_to_int<uint16_t>("65534") == 65534);
    REQUIRE(osmium::detail::str_to_int<uint16_t>("65535") == 0);
    REQUIRE(osmium::detail::str_to_int<uint16_t>("65536") == 0);

    test_conv<int32_t>();
    REQUIRE(osmium::detail::str_to_int<int32_t>("2147483646") == 2147483646LL);
    REQUIRE(osmium::detail::str_to_int<int32_t>("2147483647") == 0);
    REQUIRE(osmium::detail::str_to_int<int32_t>("2147483648") == 0);

    test_conv<uint32_t>();
    REQUIRE(osmium::detail::str_to_int<uint32_t>("4294967294") == 4294967294ULL);
    REQUIRE(osmium::detail::str_to_int<uint32_t>("4294967295") == 0);
    REQUIRE(osmium::detail::str_to_int<uint32_t>("4294967296") == 0);

    test_conv<int64_t>();
    REQUIRE(osmium::detail::str_to_int<int64_t>("9223372036854775806") == 9223372036854775806LL);
    REQUIRE(osmium::detail::str_to_int<int64_t>("9223372036854775807") == 0);
    REQUIRE(osmium::detail::str_to_int<int64_t>("9223372036854775808") == 0);

    test_conv<uint64_t>();
    REQUIRE(osmium::detail::str_to_int<uint64_t>("9223372036854775806") == 9223372036854775806ULL);
    REQUIRE(osmium::detail::str_to_int<uint64_t>("9223372036854775807") == 0);
    REQUIRE(osmium::detail::str_to_int<uint64_t>("9223372036854775808") == 0);
}