11e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow//===----------------------------------------------------------------------===// 21e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 31e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// The LLVM Compiler Infrastructure 41e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 51e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 61e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// Source Licenses. See LICENSE.TXT for details. 71e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// 81e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow//===----------------------------------------------------------------------===// 91e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 101e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// <string> 111e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 121e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// template<class charT, class traits, class Allocator> 131e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// constexpr bool operator<=(const charT* lhs, basic_string_wiew<charT,traits> rhs); 141e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// template<class charT, class traits, class Allocator> 151e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow// constexpr bool operator<=(basic_string_wiew<charT,traits> lhs, const charT* rhs); 161e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 171e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include <string_view> 181e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include <cassert> 191e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 20e619862dbf0c4a46db6e3d816bcafcfef6e85977Stephan T. Lavavej#include "test_macros.h" 211e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#include "constexpr_char_traits.hpp" 221e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 231e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowtemplate <class S> 241e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowvoid 251e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowtest(const typename S::value_type* lhs, const S& rhs, bool x, bool y) 261e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 271e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert((lhs <= rhs) == x); 281e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow assert((rhs <= lhs) == y); 291e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 301e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 311e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clowint main() 321e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow{ 331e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 341e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow typedef std::string_view S; 351e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", S(""), true, true); 361e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", S("abcde"), true, false); 371e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", S("abcdefghij"), true, false); 381e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("", S("abcdefghijklmnopqrst"), true, false); 391e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", S(""), false, true); 401e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", S("abcde"), true, true); 411e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", S("abcdefghij"), true, false); 421e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcde", S("abcdefghijklmnopqrst"), true, false); 431e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", S(""), false, true); 441e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", S("abcde"), false, true); 451e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", S("abcdefghij"), true, true); 461e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghij", S("abcdefghijklmnopqrst"), true, false); 471e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", S(""), false, true); 481e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", S("abcde"), false, true); 491e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", S("abcdefghij"), false, true); 501e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), true, true); 511e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 521e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 53e619862dbf0c4a46db6e3d816bcafcfef6e85977Stephan T. Lavavej#if TEST_STD_VER > 11 541e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow { 551e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow typedef std::basic_string_view<char, constexpr_char_traits<char>> SV; 561e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow constexpr SV sv1; 571e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow constexpr SV sv2 { "abcde", 5 }; 581e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 591e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv1 <= "", "" ); 601e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( "" <= sv1, "" ); 611e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv1 <= "abcde", "" ); 621e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert (!("abcde" <= sv1), "" ); 631e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow 641e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert (!(sv2 <= ""), "" ); 651e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( "" <= sv2, "" ); 661e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv2 <= "abcde", "" ); 671e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( "abcde" <= sv2, "" ); 681e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert ( sv2 <= "abcde0", "" ); 691e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow static_assert (!("abcde0" <= sv2), "" ); 701e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow } 711e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow#endif 721e00d6db319aaec6acb6db0eafd059c7fb97bf66Marshall Clow} 73