//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // test: // template // basic_string // to_string(charT zero = charT('0'), charT one = charT('1')) const; // // template // basic_string > to_string() const; // // template // basic_string, allocator > to_string() const; // // basic_string, allocator > to_string() const; #include #include #include #include // for std::allocator #include #include #include "../bitset_test_cases.h" #include "test_macros.h" template void check_equal(std::basic_string const& s, std::bitset const& b, CharT zero, CharT one) { assert(s.size() == b.size()); for (std::size_t i = 0; i < b.size(); ++i) { if (b[i]) { assert(s[b.size() - 1 - i] == one); } else { assert(s[b.size() - 1 - i] == zero); } } } template void test_to_string() { std::vector > const cases = get_test_cases(); for (std::size_t c = 0; c != cases.size(); ++c) { std::bitset const v = cases[c]; { std::wstring s = v.template to_string, std::allocator >(); check_equal(s, v, L'0', L'1'); } { std::wstring s = v.template to_string >(); check_equal(s, v, L'0', L'1'); } { std::string s = v.template to_string(); check_equal(s, v, '0', '1'); } { std::string s = v.to_string(); check_equal(s, v, '0', '1'); } { std::wstring s = v.template to_string, std::allocator >('0'); check_equal(s, v, L'0', L'1'); } { std::wstring s = v.template to_string >('0'); check_equal(s, v, L'0', L'1'); } { std::string s = v.template to_string('0'); check_equal(s, v, '0', '1'); } { std::string s = v.to_string('0'); check_equal(s, v, '0', '1'); } { std::wstring s = v.template to_string, std::allocator >('0', '1'); check_equal(s, v, L'0', L'1'); } { std::wstring s = v.template to_string >('0', '1'); check_equal(s, v, L'0', L'1'); } { std::string s = v.template to_string('0', '1'); check_equal(s, v, '0', '1'); } { std::string s = v.to_string('0', '1'); check_equal(s, v, '0', '1'); } { std::string s = v.to_string('x', 'y'); check_equal(s, v, 'x', 'y'); } } } int main(int, char**) { test_to_string<0>(); test_to_string<1>(); test_to_string<31>(); test_to_string<32>(); test_to_string<33>(); test_to_string<63>(); test_to_string<64>(); test_to_string<65>(); test_to_string<1000>(); return 0; }