|
|
|
@ -5,7 +5,7 @@
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2021, Tomasz Sowa
|
|
|
|
|
* Copyright (c) 2021-2022, Tomasz Sowa
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
@ -34,8 +34,6 @@
|
|
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include "convert.h"
|
|
|
|
|
#include "test.h"
|
|
|
|
|
#include "convert/convert.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace pt
|
|
|
|
@ -1919,6 +1917,181 @@ void test_text46()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void test_text47()
|
|
|
|
|
{
|
|
|
|
|
reset_test_counter("to_ull");
|
|
|
|
|
|
|
|
|
|
IntegerHelper<unsigned long long> helper_tab[] = {
|
|
|
|
|
{L"", 0ULL, 10, L"", false, false},
|
|
|
|
|
{L"0", 0ULL, 10, L"", false, false},
|
|
|
|
|
{L"00", 0ULL, 10, L"", false, false},
|
|
|
|
|
{L"1", 1ULL, 10, L"", false, false},
|
|
|
|
|
{L"50", 50ULL, 10, L"", false, false},
|
|
|
|
|
{L"050", 50ULL, 10, L"", false, false},
|
|
|
|
|
{L"100", 100ULL, 10, L"", false, false},
|
|
|
|
|
{L"00100", 100ULL, 10, L"", false, false},
|
|
|
|
|
{L"128", 128ULL, 10, L"", false, false},
|
|
|
|
|
{L"1000", 1000ULL, 10, L"", false, false},
|
|
|
|
|
{L"65535", 65535ULL, 10, L"", false, false},
|
|
|
|
|
{L"65536", 65536ULL, 10, L"", false, false},
|
|
|
|
|
{L"65537", 65537ULL, 10, L"", false, false},
|
|
|
|
|
{L"4294967295", 4294967295ULL, 10, L"", false, false},
|
|
|
|
|
{L"4294967296", 4294967296ULL, 10, L"", false, false},
|
|
|
|
|
{L"4294967297", 4294967297ULL, 10, L"", false, false},
|
|
|
|
|
{L"18446744073709551614", 18446744073709551614ULL, 10, L"", false, false},
|
|
|
|
|
{L"18446744073709551615", 18446744073709551615ULL, 10, L"", false, false},
|
|
|
|
|
{L" 1024", 0ULL, 10, L" 1024", false, false},
|
|
|
|
|
{L" 1024", 1024ULL, 10, L"", false, true},
|
|
|
|
|
{L" \t 1024", 0ULL, 10, L" \t 1024", false, false},
|
|
|
|
|
{L" \t 1024", 1024ULL, 10, L"", false, true},
|
|
|
|
|
{L" 1024foo", 0ULL, 10, L" 1024foo", false, false},
|
|
|
|
|
{L" 1024foo", 1024ULL, 10, L"foo", false, true},
|
|
|
|
|
{L" \t 1024foo", 0ULL, 10, L" \t 1024foo", false, false},
|
|
|
|
|
{L" \t 1024foo", 1024ULL, 10, L"foo", false, true},
|
|
|
|
|
|
|
|
|
|
{L"", 0ULL, 2, L"", false, false},
|
|
|
|
|
{L"0", 0ULL, 2, L"", false, false},
|
|
|
|
|
{L"1", 1ULL, 2, L"", false, false},
|
|
|
|
|
{L"2", 0ULL, 2, L"2", false, false},
|
|
|
|
|
{L"101001011", 0b101001011ULL, 2, L"", false, false},
|
|
|
|
|
{L"001011001101", 0b001011001101ULL, 2, L"", false, false},
|
|
|
|
|
|
|
|
|
|
{L"", 0ULL, 8, L"", false, false},
|
|
|
|
|
{L"0", 0ULL, 8, L"", false, false},
|
|
|
|
|
{L"1", 1ULL, 8, L"", false, false},
|
|
|
|
|
{L"7", 7ULL, 8, L"", false, false},
|
|
|
|
|
{L"8", 0ULL, 8, L"8", false, false},
|
|
|
|
|
{L"54321760123", 054321760123ULL, 8, L"", false, false},
|
|
|
|
|
{L"54012418", 05401241ULL, 8, L"8", false, false},
|
|
|
|
|
{L"01256252foo", 01256252ULL, 8, L"foo", false, false},
|
|
|
|
|
|
|
|
|
|
{L"", 0ULL, 16, L"", false, false},
|
|
|
|
|
{L"0", 0ULL, 16, L"", false, false},
|
|
|
|
|
{L"9", 9ULL, 16, L"", false, false},
|
|
|
|
|
{L"a", 10ULL, 16, L"", false, false},
|
|
|
|
|
{L"f", 15ULL, 16, L"", false, false},
|
|
|
|
|
{L"g", 0ULL, 16, L"g", false, false},
|
|
|
|
|
{L"A", 10ULL, 16, L"", false, false},
|
|
|
|
|
{L"F", 15ULL, 16, L"", false, false},
|
|
|
|
|
{L"G", 0ULL, 16, L"G", false, false},
|
|
|
|
|
{L"FFFF", 0xFFFFULL, 16, L"", false, false},
|
|
|
|
|
{L"54FB91", 0x54FB91ULL, 16, L"", false, false},
|
|
|
|
|
{L"abcdef00123", 0xabcdef00123ULL, 16, L"", false, false},
|
|
|
|
|
{L"0a65bC3aDB1", 0x0a65bC3aDB1ULL, 16, L"", false, false},
|
|
|
|
|
{L"0a65bC3aDB1g", 0x0a65bC3aDB1ULL, 16, L"g", false, false},
|
|
|
|
|
{L"0a65bC3aDB1G", 0x0a65bC3aDB1ULL, 16, L"G", false, false},
|
|
|
|
|
{L"0a65bC3aDB1z", 0x0a65bC3aDB1ULL, 16, L"z", false, false},
|
|
|
|
|
{L"0a65bC3aDB1Z", 0x0a65bC3aDB1ULL, 16, L"Z", false, false},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
size_t len = sizeof(helper_tab) / sizeof(IntegerHelper<unsigned long long>);
|
|
|
|
|
make_str_to_int_tests<std::wstring, unsigned long long>(&to_ull, &to_ull, helper_tab, len);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void test_text48()
|
|
|
|
|
{
|
|
|
|
|
reset_test_counter("to_ll");
|
|
|
|
|
|
|
|
|
|
IntegerHelper<long long> helper_tab[] = {
|
|
|
|
|
{L"", 0LL, 10, L"", false, false},
|
|
|
|
|
{L"0", 0LL, 10, L"", false, false},
|
|
|
|
|
{L"-0", 0LL, 10, L"", false, false},
|
|
|
|
|
{L"00", 0LL, 10, L"", false, false},
|
|
|
|
|
{L"-00", 0LL, 10, L"", false, false},
|
|
|
|
|
{L"100", 100LL, 10, L"", false, false},
|
|
|
|
|
{L"-100", -100LL, 10, L"", false, false},
|
|
|
|
|
{L"00100", 100LL, 10, L"", false, false},
|
|
|
|
|
{L"-00100", -100LL, 10, L"", false, false},
|
|
|
|
|
{L"128", 128LL, 10, L"", false, false},
|
|
|
|
|
{L"-128", -128LL, 10, L"", false, false},
|
|
|
|
|
{L"1000", 1000LL, 10, L"", false, false},
|
|
|
|
|
{L"-1000", -1000LL, 10, L"", false, false},
|
|
|
|
|
{L"65535", 65535LL, 10, L"", false, false},
|
|
|
|
|
{L"65536", 65536LL, 10, L"", false, false},
|
|
|
|
|
{L"65537", 65537LL, 10, L"", false, false},
|
|
|
|
|
{L"-65535", -65535LL, 10, L"", false, false},
|
|
|
|
|
{L"-65536", -65536LL, 10, L"", false, false},
|
|
|
|
|
{L"-65537", -65537LL, 10, L"", false, false},
|
|
|
|
|
{L"4294967295", 4294967295LL, 10, L"", false, false},
|
|
|
|
|
{L"4294967296", 4294967296LL, 10, L"", false, false},
|
|
|
|
|
{L"4294967297", 4294967297LL, 10, L"", false, false},
|
|
|
|
|
{L"-4294967295", -4294967295LL, 10, L"", false, false},
|
|
|
|
|
{L"-4294967296", -4294967296LL, 10, L"", false, false},
|
|
|
|
|
{L"-4294967297", -4294967297LL, 10, L"", false, false},
|
|
|
|
|
|
|
|
|
|
{L"9223372036854775806", 9223372036854775806LL, 10, L"", false, false},
|
|
|
|
|
{L"9223372036854775807", 9223372036854775807LL, 10, L"", false, false},
|
|
|
|
|
{L"9223372036854775808", 0LL, 10, L"", true, false},
|
|
|
|
|
|
|
|
|
|
{L"-9223372036854775807", -9223372036854775807LL, 10, L"", false, false},
|
|
|
|
|
{L"-9223372036854775808", std::numeric_limits<long long>::min(), 10, L"", false, false}, // gcc and clang not allow -9223372036854775808LL as a literal
|
|
|
|
|
{L"-9223372036854775809", 0LL, 10, L"", true, false},
|
|
|
|
|
|
|
|
|
|
{L"123456789876543210123", 0LL, 10, L"", true, false},
|
|
|
|
|
{L"-123456789876543210123", 0LL, 10, L"", true, false},
|
|
|
|
|
|
|
|
|
|
{L" -1024", 0LL, 10, L" -1024", false, false},
|
|
|
|
|
{L" -1024", -1024LL, 10, L"", false, true},
|
|
|
|
|
{L" \t -1024", 0LL, 10, L" \t -1024", false, false},
|
|
|
|
|
{L" \t -1024", -1024LL, 10, L"", false, true},
|
|
|
|
|
{L" -1024foo", 0LL, 10, L" -1024foo", false, false},
|
|
|
|
|
{L" -1024foo", -1024LL, 10, L"foo", false, true},
|
|
|
|
|
{L" \t -1024foo", 0LL, 10, L" \t -1024foo", false, false},
|
|
|
|
|
{L" \t -1024foo", -1024LL, 10, L"foo", false, true},
|
|
|
|
|
|
|
|
|
|
{L"", 0LL, 2, L"", false, false},
|
|
|
|
|
{L"0", 0LL, 2, L"", false, false},
|
|
|
|
|
{L"-0", 0LL, 2, L"", false, false},
|
|
|
|
|
{L"1", 1LL, 2, L"", false, false},
|
|
|
|
|
{L"2", 0LL, 2, L"2", false, false},
|
|
|
|
|
{L"-1", -1LL, 2, L"", false, false},
|
|
|
|
|
{L"-2", 0LL, 2, L"2", false, false},
|
|
|
|
|
{L"-101001011", -0b101001011LL, 2, L"", false, false},
|
|
|
|
|
{L"-001011001101", -0b001011001101LL, 2, L"", false, false},
|
|
|
|
|
|
|
|
|
|
{L"", 0LL, 8, L"", false, false},
|
|
|
|
|
{L"0", 0LL, 8, L"", false, false},
|
|
|
|
|
{L"-0", 0LL, 8, L"", false, false},
|
|
|
|
|
{L"1", 1LL, 8, L"", false, false},
|
|
|
|
|
{L"7", 7LL, 8, L"", false, false},
|
|
|
|
|
{L"8", 0LL, 8, L"8", false, false},
|
|
|
|
|
{L"-1", -1LL, 8, L"", false, false},
|
|
|
|
|
{L"-7", -7LL, 8, L"", false, false},
|
|
|
|
|
{L"-8", 0LL, 8, L"8", false, false},
|
|
|
|
|
{L"54321760123", 054321760123LL, 8, L"", false, false},
|
|
|
|
|
{L"54012418", 05401241LL, 8, L"8", false, false},
|
|
|
|
|
{L"01256252foo", 01256252LL, 8, L"foo", false, false},
|
|
|
|
|
{L"-54321760123", -054321760123LL, 8, L"", false, false},
|
|
|
|
|
{L"-54012418", -05401241LL, 8, L"8", false, false},
|
|
|
|
|
{L"-01256252foo", -01256252LL, 8, L"foo", false, false},
|
|
|
|
|
|
|
|
|
|
{L"", 0LL, 16, L"", false, false},
|
|
|
|
|
{L"0", 0LL, 16, L"", false, false},
|
|
|
|
|
{L"-0", 0LL, 16, L"", false, false},
|
|
|
|
|
{L"ab65c", 0xab65cLL, 16, L"", false, false},
|
|
|
|
|
{L"-654FEc23", -0x654FEc23LL, 16, L"", false, false},
|
|
|
|
|
{L"076af12b", 0x76af12bLL, 16, L"", false, false},
|
|
|
|
|
{L"-076de12be", -0x076de12beLL, 16, L"", false, false},
|
|
|
|
|
|
|
|
|
|
{L"7FFFFFFFFFFFFFFF", 0x7FFFFFFFFFFFFFFFLL, 16, L"", false, false},
|
|
|
|
|
{L"8000000000000000", 0LL, 16, L"", true, false},
|
|
|
|
|
{L"8000000000000001", 0LL, 16, L"", true, false},
|
|
|
|
|
{L"abcdef0123456789", 0LL, 16, L"", true, false},
|
|
|
|
|
|
|
|
|
|
{L"-7FFFFFFFFFFFFFFF", -0x7FFFFFFFFFFFFFFFLL, 16, L"", false, false},
|
|
|
|
|
{L"-8000000000000000", std::numeric_limits<long long>::min(), 16, L"", false, false},
|
|
|
|
|
{L"-8000000000000001", 0LL, 16, L"", true, false},
|
|
|
|
|
{L"-abcdef0123456789", 0LL, 16, L"", true, false},
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
size_t len = sizeof(helper_tab) / sizeof(IntegerHelper<long long>);
|
|
|
|
|
make_str_to_int_tests<std::wstring, long long>(&to_ll, &to_ll, helper_tab, len);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// IMPROVEME put integer tests for functions: to_ul(), to_ui(), to_l(), to_i(), to_ull_b(), to_ll_b(), to_ul_b(), to_ui_b(), to_l_b(), to_i_b()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void make_tests()
|
|
|
|
@ -1969,6 +2142,8 @@ void make_tests()
|
|
|
|
|
test_text44();
|
|
|
|
|
test_text45();
|
|
|
|
|
test_text46();
|
|
|
|
|
test_text47();
|
|
|
|
|
test_text48();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|