libcxx

libcxx mirror with random patches
git clone https://git.neptards.moe/neptards/libcxx.git
Log | Files | Refs

pointer_string.pass.cpp (5580B)


      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <string>
     11 
     12 // template<class charT, class traits, class Allocator>
     13 //   basic_string<charT,traits,Allocator>
     14 //   operator+(const charT* lhs, const basic_string<charT,traits,Allocator>& rhs);
     15 
     16 // template<class charT, class traits, class Allocator>
     17 //   basic_string<charT,traits,Allocator>&&
     18 //   operator+(const charT* lhs, basic_string<charT,traits,Allocator>&& rhs);
     19 
     20 #include <string>
     21 #include <utility>
     22 #include <cassert>
     23 
     24 #include "test_macros.h"
     25 #include "min_allocator.h"
     26 
     27 template <class S>
     28 void test0(const typename S::value_type* lhs, const S& rhs, const S& x) {
     29   assert(lhs + rhs == x);
     30 }
     31 
     32 #if TEST_STD_VER >= 11
     33 template <class S>
     34 void test1(const typename S::value_type* lhs, S&& rhs, const S& x) {
     35   assert(lhs + move(rhs) == x);
     36 }
     37 #endif
     38 
     39 int main() {
     40   {
     41     typedef std::string S;
     42     test0("", S(""), S(""));
     43     test0("", S("12345"), S("12345"));
     44     test0("", S("1234567890"), S("1234567890"));
     45     test0("", S("12345678901234567890"), S("12345678901234567890"));
     46     test0("abcde", S(""), S("abcde"));
     47     test0("abcde", S("12345"), S("abcde12345"));
     48     test0("abcde", S("1234567890"), S("abcde1234567890"));
     49     test0("abcde", S("12345678901234567890"), S("abcde12345678901234567890"));
     50     test0("abcdefghij", S(""), S("abcdefghij"));
     51     test0("abcdefghij", S("12345"), S("abcdefghij12345"));
     52     test0("abcdefghij", S("1234567890"), S("abcdefghij1234567890"));
     53     test0("abcdefghij", S("12345678901234567890"),
     54           S("abcdefghij12345678901234567890"));
     55     test0("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst"));
     56     test0("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345"));
     57     test0("abcdefghijklmnopqrst", S("1234567890"),
     58           S("abcdefghijklmnopqrst1234567890"));
     59     test0("abcdefghijklmnopqrst", S("12345678901234567890"),
     60           S("abcdefghijklmnopqrst12345678901234567890"));
     61   }
     62 
     63 #if TEST_STD_VER >= 11
     64   {
     65     typedef std::string S;
     66     test1("", S(""), S(""));
     67     test1("", S("12345"), S("12345"));
     68     test1("", S("1234567890"), S("1234567890"));
     69     test1("", S("12345678901234567890"), S("12345678901234567890"));
     70     test1("abcde", S(""), S("abcde"));
     71     test1("abcde", S("12345"), S("abcde12345"));
     72     test1("abcde", S("1234567890"), S("abcde1234567890"));
     73     test1("abcde", S("12345678901234567890"), S("abcde12345678901234567890"));
     74     test1("abcdefghij", S(""), S("abcdefghij"));
     75     test1("abcdefghij", S("12345"), S("abcdefghij12345"));
     76     test1("abcdefghij", S("1234567890"), S("abcdefghij1234567890"));
     77     test1("abcdefghij", S("12345678901234567890"),
     78           S("abcdefghij12345678901234567890"));
     79     test1("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst"));
     80     test1("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345"));
     81     test1("abcdefghijklmnopqrst", S("1234567890"),
     82           S("abcdefghijklmnopqrst1234567890"));
     83     test1("abcdefghijklmnopqrst", S("12345678901234567890"),
     84           S("abcdefghijklmnopqrst12345678901234567890"));
     85   }
     86   {
     87     typedef std::basic_string<char, std::char_traits<char>,
     88                               min_allocator<char> >
     89         S;
     90     test0("", S(""), S(""));
     91     test0("", S("12345"), S("12345"));
     92     test0("", S("1234567890"), S("1234567890"));
     93     test0("", S("12345678901234567890"), S("12345678901234567890"));
     94     test0("abcde", S(""), S("abcde"));
     95     test0("abcde", S("12345"), S("abcde12345"));
     96     test0("abcde", S("1234567890"), S("abcde1234567890"));
     97     test0("abcde", S("12345678901234567890"), S("abcde12345678901234567890"));
     98     test0("abcdefghij", S(""), S("abcdefghij"));
     99     test0("abcdefghij", S("12345"), S("abcdefghij12345"));
    100     test0("abcdefghij", S("1234567890"), S("abcdefghij1234567890"));
    101     test0("abcdefghij", S("12345678901234567890"),
    102           S("abcdefghij12345678901234567890"));
    103     test0("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst"));
    104     test0("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345"));
    105     test0("abcdefghijklmnopqrst", S("1234567890"),
    106           S("abcdefghijklmnopqrst1234567890"));
    107     test0("abcdefghijklmnopqrst", S("12345678901234567890"),
    108           S("abcdefghijklmnopqrst12345678901234567890"));
    109 
    110     test1("", S(""), S(""));
    111     test1("", S("12345"), S("12345"));
    112     test1("", S("1234567890"), S("1234567890"));
    113     test1("", S("12345678901234567890"), S("12345678901234567890"));
    114     test1("abcde", S(""), S("abcde"));
    115     test1("abcde", S("12345"), S("abcde12345"));
    116     test1("abcde", S("1234567890"), S("abcde1234567890"));
    117     test1("abcde", S("12345678901234567890"), S("abcde12345678901234567890"));
    118     test1("abcdefghij", S(""), S("abcdefghij"));
    119     test1("abcdefghij", S("12345"), S("abcdefghij12345"));
    120     test1("abcdefghij", S("1234567890"), S("abcdefghij1234567890"));
    121     test1("abcdefghij", S("12345678901234567890"),
    122           S("abcdefghij12345678901234567890"));
    123     test1("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst"));
    124     test1("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345"));
    125     test1("abcdefghijklmnopqrst", S("1234567890"),
    126           S("abcdefghijklmnopqrst1234567890"));
    127     test1("abcdefghijklmnopqrst", S("12345678901234567890"),
    128           S("abcdefghijklmnopqrst12345678901234567890"));
    129   }
    130 #endif
    131 }