76 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// UNSUPPORTED: c++03, c++11, c++14, c++17, c++209 10// <string>11 12// constexpr bool contains(const CharT *x) const;13 14#include <string>15#include <cassert>16 17#include "test_macros.h"18 19template <class S>20constexpr void test_string() {21 const char* s = "abcde";22 S s0;23 S s1{s + 4, 1};24 S s3{s + 2, 3};25 S sNot{"xyz", 3};26 27 assert(s0.contains(""));28 assert(!s0.contains("e"));29 30 assert(s1.contains(""));31 assert(!s1.contains("d"));32 assert(s1.contains("e"));33 assert(!s1.contains("de"));34 assert(!s1.contains("cd"));35 assert(!s1.contains("cde"));36 assert(!s1.contains("bcde"));37 assert(!s1.contains("abcde"));38 assert(!s1.contains("xyz"));39 40 assert(s3.contains(""));41 assert(s3.contains("d"));42 assert(s3.contains("e"));43 assert(s3.contains("de"));44 assert(s3.contains("cd"));45 assert(!s3.contains("ce"));46 assert(s3.contains("cde"));47 assert(!s3.contains("edc"));48 assert(!s3.contains("bcde"));49 assert(!s3.contains("abcde"));50 assert(!s3.contains("xyz"));51 52 assert(sNot.contains(""));53 assert(!sNot.contains("d"));54 assert(!sNot.contains("e"));55 assert(!sNot.contains("de"));56 assert(!sNot.contains("cd"));57 assert(!sNot.contains("cde"));58 assert(!sNot.contains("bcde"));59 assert(!sNot.contains("abcde"));60 assert(sNot.contains("xyz"));61 assert(!sNot.contains("zyx"));62}63 64constexpr bool test() {65 test_string<std::string>();66 67 return true;68}69 70int main(int, char**) {71 test();72 static_assert(test());73 74 return 0;75}76