rename functions for converting strings to integers to snake case
while here: - add some functions taking std::string/std::wstring
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
# DO NOT DELETE
|
||||
|
||||
./convert.o: convert.h test.h ../src/convert/convert.h
|
||||
./convert.o: ../src/convert/inttostr.h ../src/convert/patternreplacer.h
|
||||
./convert.o: ../src/textstream/textstream.h ../src/textstream/stream.h
|
||||
./convert.o: ../src/space/space.h ../src/textstream/types.h
|
||||
./convert.o: ../src/convert/inttostr.h ../src/utf8/utf8.h
|
||||
./convert.o: ../src/textstream/stream.h ../src/utf8/utf8_templates.h
|
||||
./convert.o: ../src/utf8/utf8_private.h ../src/date/date.h
|
||||
./convert.o: ../src/membuffer/membuffer.h ../src/textstream/types.h
|
||||
./convert.o: ../src/convert/strtoint.h ../src/convert/text.h
|
||||
./convert.o: ../src/convert/misc.h ../src/convert/double.h
|
||||
./convert.o: convert.h ../src/convert/convert.h ../src/convert/inttostr.h
|
||||
./convert.o: ../src/convert/patternreplacer.h ../src/textstream/textstream.h
|
||||
./convert.o: ../src/textstream/stream.h ../src/space/space.h
|
||||
./convert.o: ../src/textstream/types.h ../src/convert/inttostr.h
|
||||
./convert.o: ../src/utf8/utf8.h ../src/textstream/stream.h
|
||||
./convert.o: ../src/utf8/utf8_templates.h ../src/utf8/utf8_private.h
|
||||
./convert.o: ../src/date/date.h ../src/membuffer/membuffer.h
|
||||
./convert.o: ../src/textstream/types.h ../src/convert/strtoint.h
|
||||
./convert.o: ../src/convert/text.h ../src/convert/misc.h
|
||||
./convert.o: ../src/convert/double.h test.h
|
||||
./csvparser.o: csvparser.h ../src/csv/csvparser.h ../src/space/space.h
|
||||
./csvparser.o: ../src/textstream/types.h ../src/convert/inttostr.h
|
||||
./csvparser.o: ../src/utf8/utf8.h ../src/textstream/stream.h
|
||||
@@ -17,7 +17,16 @@
|
||||
./csvparser.o: ../src/convert/baseparser.h ../src/textstream/textstream.h
|
||||
./csvparser.o: ../src/textstream/stream.h ../src/date/date.h
|
||||
./csvparser.o: ../src/membuffer/membuffer.h ../src/textstream/types.h test.h
|
||||
./main.o: convert.h mainoptionsparser.h csvparser.h
|
||||
./main.o: convert.h ../src/convert/convert.h ../src/convert/inttostr.h
|
||||
./main.o: ../src/convert/patternreplacer.h ../src/textstream/textstream.h
|
||||
./main.o: ../src/textstream/stream.h ../src/space/space.h
|
||||
./main.o: ../src/textstream/types.h ../src/convert/inttostr.h
|
||||
./main.o: ../src/utf8/utf8.h ../src/textstream/stream.h
|
||||
./main.o: ../src/utf8/utf8_templates.h ../src/utf8/utf8_private.h
|
||||
./main.o: ../src/date/date.h ../src/membuffer/membuffer.h
|
||||
./main.o: ../src/textstream/types.h ../src/convert/strtoint.h
|
||||
./main.o: ../src/convert/text.h ../src/convert/misc.h ../src/convert/double.h
|
||||
./main.o: test.h mainoptionsparser.h csvparser.h
|
||||
./test.o: test.h
|
||||
./mainoptionsparser.o: mainoptionsparser.h test.h
|
||||
./mainoptionsparser.o: ../src/mainoptions/mainoptionsparser.h
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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
|
||||
@@ -35,12 +35,53 @@
|
||||
#ifndef headerfile_pikotools_tests_convert
|
||||
#define headerfile_pikotools_tests_convert
|
||||
|
||||
#include "convert/convert.h"
|
||||
#include "test.h"
|
||||
|
||||
|
||||
namespace pt
|
||||
{
|
||||
|
||||
namespace pt_convert_tests
|
||||
{
|
||||
|
||||
template<typename IntegerType>
|
||||
struct IntegerHelper {
|
||||
const wchar_t * val;
|
||||
IntegerType val_int;
|
||||
int base;
|
||||
const wchar_t * after_str;
|
||||
bool was_overflow;
|
||||
bool allow_skip_whitechars;
|
||||
};
|
||||
|
||||
|
||||
|
||||
template<typename StringType, typename IntegerType>
|
||||
void make_str_to_int_tests(
|
||||
IntegerType (*convert_function1)(const typename StringType::value_type *, int, const typename StringType::value_type **, bool *, bool allow_skip_whitechars),
|
||||
IntegerType (*convert_function2)(const StringType &, int, const typename StringType::value_type **, bool *, bool allow_skip_whitechars),
|
||||
IntegerHelper<IntegerType> * helper_tab,
|
||||
size_t len)
|
||||
{
|
||||
for(size_t i=0 ; i<len ; ++i)
|
||||
{
|
||||
IntegerHelper<IntegerType> & helper = helper_tab[i];
|
||||
std::wstring str1 = helper.val;
|
||||
const wchar_t * after;
|
||||
bool was_overflow;
|
||||
|
||||
test(convert_function1(str1.c_str(), helper.base, &after, &was_overflow, helper.allow_skip_whitechars), helper.val_int);
|
||||
test(helper.after_str, after);
|
||||
test(helper.was_overflow, was_overflow);
|
||||
|
||||
test(convert_function2(str1, helper.base, &after, &was_overflow, helper.allow_skip_whitechars), helper.val_int);
|
||||
test(helper.after_str, after);
|
||||
test(helper.was_overflow, was_overflow);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void make_tests();
|
||||
|
Reference in New Issue
Block a user