Lines Matching +defs:buffer +defs:base +defs:buffer
98 // Important: Test every effective buffer size from 0 through correct.size() and slightly beyond. For the sizes
99 // less than correct.size(), this verifies that the too-small buffer is correctly detected, and that we don't
105 // underrunning the buffer. This is a concern because sometimes we walk backwards when rounding.
107 constexpr std::size_t BufferPrefix = 20; // detect buffer underruns (specific value isn't important)
114 constexpr std::size_t BufferSuffix = 30; // detect buffer overruns (specific value isn't important)
124 "The specific values aren't important, but there should be plenty of room to detect buffer overruns.");
356 for (int base = 2; base <= 36; ++base) {
357 test_integer_to_chars(static_cast<T>(0), base, "0");
358 test_integer_to_chars(static_cast<T>(1), base, "1");
361 test_integer_to_chars(static_cast<T>(base * 2 - 1), base, output_max_digit[base]);
365 test_integer_to_chars(static_cast<T>(p.first), base, p.second[static_cast<std::size_t>(base)]);
370 test_integer_to_chars(static_cast<T>(-1), base, "-1");
374 test_integer_to_chars(static_cast<T>(p.first), base, p.second[static_cast<std::size_t>(base)]);
429 for (int base = 2; base <= 36; ++base) {
430 test_from_chars<T>("", base, 0, inv_arg); // no characters
431 test_from_chars<T>("@1", base, 0, inv_arg); // '@' is bogus
432 test_from_chars<T>(".1", base, 0, inv_arg); // '.' is bogus, for integers
433 test_from_chars<T>("+1", base, 0, inv_arg); // '+' is bogus, N4713 23.20.3 [charconv.from.chars]/3
435 test_from_chars<T>(" 1", base, 0, inv_arg); // ' ' is bogus, no whitespace in subject sequence
438 test_from_chars<T>("-1", base, 0, inv_arg); // "and only if value has a signed type"
443 test_from_chars<T>("-", base, 0, inv_arg); // '-' followed by no characters
444 test_from_chars<T>("-@1", base, 0, inv_arg); // '-' followed by bogus '@'
445 test_from_chars<T>("-.1", base, 0, inv_arg); // '-' followed by bogus '.'
446 test_from_chars<T>("-+1", base, 0, inv_arg); // '-' followed by bogus '+'
447 test_from_chars<T>("- 1", base, 0, inv_arg); // '-' followed by bogus ' '
448 test_from_chars<T>("--1", base, 0, inv_arg); // '-' can't be repeated
452 if (base < 10) {
453 bogus_digits = {static_cast<char>('0' + base), 'A', 'a'};
455 // '[' and '{' are bogus for base 36
456 bogus_digits = {static_cast<char>('A' + (base - 10)), static_cast<char>('a' + (base - 10))};
460 test_from_chars<T>(bogus + "1"s, base, 0, inv_arg); // bogus digit (for this base)
461 test_from_chars<T>("-"s + bogus + "1"s, base, 0, inv_arg); // '-' followed by bogus digit
465 test_from_chars<T>(string(100, '0'), base, 100, errc{}, static_cast<T>(0));
466 test_from_chars<T>(string(100, '0') + "11"s, base, 102, errc{}, static_cast<T>(base + 1));
470 test_from_chars<T>("-0", base, 2, errc{}, static_cast<T>(0));
471 test_from_chars<T>("-"s + string(100, '0'), base, 101, errc{}, static_cast<T>(0));
472 test_from_chars<T>("-"s + string(100, '0') + "11"s, base, 103, errc{}, static_cast<T>(-base - 1));
477 test_from_chars<T>("11", base, 2, errc{}, static_cast<T>(base + 1));
478 test_from_chars<T>("11@@@", base, 2, errc{}, static_cast<T>(base + 1));
481 test_from_chars<T>(string(100, '1'), base, 100, out_ran);
482 test_from_chars<T>(string(100, '1') + "@@@"s, base, 100, out_ran);
485 test_from_chars<T>("-"s + string(100, '1'), base, 101, out_ran);
486 test_from_chars<T>("-"s + string(100, '1') + "@@@"s, base, 101, out_ran);
491 // in the "C" locale for the given nonzero base, as described for strtol"
498 // N4713 23.20.3 [charconv.from.chars]/3 "no "0x" or "0X" prefix shall appear if the value of base is 16"
592 char buffer[buffer_size];
616 const auto to_result = to_chars(buffer, end(buffer), input, chars_format::scientific);
621 const auto from_result = from_chars(buffer, last, val);
658 char buffer[buffer_size];
668 const auto to_result = to_chars(buffer, end(buffer), input, chars_format::hex);
674 const auto from_result = from_chars(buffer, last, val, chars_format::hex);