brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · d590453 Raw
99 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++1110 11#include <string>12#include <cassert>13 14#include "test_macros.h"15 16#ifndef TEST_HAS_NO_CHAR8_T17typedef std::u8string u8string;18#else19typedef std::string u8string;20#endif21 22int main(int, char**) {23  {24    using namespace std::literals::string_literals;25 26    ASSERT_SAME_TYPE(decltype("Hi"s), std::string);27    ASSERT_SAME_TYPE(decltype(u8"Hi"s), u8string);28#ifndef TEST_HAS_NO_WIDE_CHARACTERS29    ASSERT_SAME_TYPE(decltype(L"Hi"s), std::wstring);30#endif31    ASSERT_SAME_TYPE(decltype(u"Hi"s), std::u16string);32    ASSERT_SAME_TYPE(decltype(U"Hi"s), std::u32string);33 34    std::string foo;35#ifndef TEST_HAS_NO_WIDE_CHARACTERS36    std::wstring Lfoo;37#endif38    u8string u8foo;39    std::u16string ufoo;40    std::u32string Ufoo;41 42    foo = ""s;43    assert(foo.size() == 0);44    u8foo = u8""s;45    assert(u8foo.size() == 0);46#ifndef TEST_HAS_NO_WIDE_CHARACTERS47    Lfoo = L""s;48    assert(Lfoo.size() == 0);49#endif50    ufoo = u""s;51    assert(ufoo.size() == 0);52    Ufoo = U""s;53    assert(Ufoo.size() == 0);54 55    foo = " "s;56    assert(foo.size() == 1);57    u8foo = u8" "s;58    assert(u8foo.size() == 1);59#ifndef TEST_HAS_NO_WIDE_CHARACTERS60    Lfoo = L" "s;61    assert(Lfoo.size() == 1);62#endif63    ufoo = u" "s;64    assert(ufoo.size() == 1);65    Ufoo = U" "s;66    assert(Ufoo.size() == 1);67 68    foo = "ABC"s;69    assert(foo == "ABC");70    assert(foo == std::string("ABC"));71    u8foo = u8"ABC"s;72    assert(u8foo == u8"ABC");73    assert(u8foo == u8string(u8"ABC"));74#ifndef TEST_HAS_NO_WIDE_CHARACTERS75    Lfoo = L"ABC"s;76    assert(Lfoo == L"ABC");77    assert(Lfoo == std::wstring(L"ABC"));78#endif79    ufoo = u"ABC"s;80    assert(ufoo == u"ABC");81    assert(ufoo == std::u16string(u"ABC"));82    Ufoo = U"ABC"s;83    assert(Ufoo == U"ABC");84    assert(Ufoo == std::u32string(U"ABC"));85  }86  {87    using namespace std::literals;88    std::string foo = ""s;89    assert(foo == std::string());90  }91  {92    using namespace std;93    std::string foo = ""s;94    assert(foo == std::string());95  }96 97  return 0;98}99