brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 6f2cd27 Raw
48 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// <string>10 11// template<> struct char_traits<wchar_t>12 13// static char_type* move(char_type* s1, const char_type* s2, size_t n);14 15// UNSUPPORTED: no-wide-characters16 17#include <string>18#include <cassert>19 20#include "test_macros.h"21 22TEST_CONSTEXPR_CXX20 bool test() {23  wchar_t s1[] = {1, 2, 3};24  assert(std::char_traits<wchar_t>::move(s1, s1 + 1, 2) == s1);25  assert(s1[0] == wchar_t(2));26  assert(s1[1] == wchar_t(3));27  assert(s1[2] == wchar_t(3));28  s1[2] = wchar_t(0);29  assert(std::char_traits<wchar_t>::move(s1 + 1, s1, 2) == s1 + 1);30  assert(s1[0] == wchar_t(2));31  assert(s1[1] == wchar_t(2));32  assert(s1[2] == wchar_t(3));33  assert(std::char_traits<wchar_t>::move(NULL, s1, 0) == NULL);34  assert(std::char_traits<wchar_t>::move(s1, NULL, 0) == s1);35 36  return true;37}38 39int main(int, char**) {40  test();41 42#if TEST_STD_VER > 1743  static_assert(test());44#endif45 46  return 0;47}48