17112dae6acac544a0271a85d95342c583441e2d1Dan Albert//===----------------------------------------------------------------------===//
27112dae6acac544a0271a85d95342c583441e2d1Dan Albert//
37112dae6acac544a0271a85d95342c583441e2d1Dan Albert//                     The LLVM Compiler Infrastructure
47112dae6acac544a0271a85d95342c583441e2d1Dan Albert//
57112dae6acac544a0271a85d95342c583441e2d1Dan Albert// This file is dual licensed under the MIT and the University of Illinois Open
67112dae6acac544a0271a85d95342c583441e2d1Dan Albert// Source Licenses. See LICENSE.TXT for details.
77112dae6acac544a0271a85d95342c583441e2d1Dan Albert//
87112dae6acac544a0271a85d95342c583441e2d1Dan Albert//===----------------------------------------------------------------------===//
97112dae6acac544a0271a85d95342c583441e2d1Dan Albert
107112dae6acac544a0271a85d95342c583441e2d1Dan Albert// <string>
117112dae6acac544a0271a85d95342c583441e2d1Dan Albert
127112dae6acac544a0271a85d95342c583441e2d1Dan Albert// template<class charT, class traits, class Allocator>
137112dae6acac544a0271a85d95342c583441e2d1Dan Albert//   bool operator<(const basic_string<charT,traits,Allocator>& lhs,
147112dae6acac544a0271a85d95342c583441e2d1Dan Albert//                   basic_string_view<charT,traits> rhs);
157112dae6acac544a0271a85d95342c583441e2d1Dan Albert//   bool operator<(basic_string_view<charT,traits> lhs,
167112dae6acac544a0271a85d95342c583441e2d1Dan Albert//            const basic_string<charT,traits,Allocator>&  rhs);
177112dae6acac544a0271a85d95342c583441e2d1Dan Albert
187112dae6acac544a0271a85d95342c583441e2d1Dan Albert#include <experimental/string_view>
197112dae6acac544a0271a85d95342c583441e2d1Dan Albert#include <cassert>
207112dae6acac544a0271a85d95342c583441e2d1Dan Albert
217112dae6acac544a0271a85d95342c583441e2d1Dan Alberttemplate <class S>
227112dae6acac544a0271a85d95342c583441e2d1Dan Albertvoid
237112dae6acac544a0271a85d95342c583441e2d1Dan Alberttest(const S& lhs, const typename S::value_type* rhs, bool x, bool y)
247112dae6acac544a0271a85d95342c583441e2d1Dan Albert{
257112dae6acac544a0271a85d95342c583441e2d1Dan Albert    assert((lhs < rhs) == x);
267112dae6acac544a0271a85d95342c583441e2d1Dan Albert    assert((rhs < lhs) == y);
277112dae6acac544a0271a85d95342c583441e2d1Dan Albert}
287112dae6acac544a0271a85d95342c583441e2d1Dan Albert
297112dae6acac544a0271a85d95342c583441e2d1Dan Albertint main()
307112dae6acac544a0271a85d95342c583441e2d1Dan Albert{
317112dae6acac544a0271a85d95342c583441e2d1Dan Albert    {
327112dae6acac544a0271a85d95342c583441e2d1Dan Albert    typedef std::experimental::string_view S;
337112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S(""), "", false, false);
347112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S(""), "abcde", true, false);
357112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S(""), "abcdefghij", true, false);
367112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S(""), "abcdefghijklmnopqrst", true, false);
377112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcde"), "", false, true);
387112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcde"), "abcde", false, false);
397112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcde"), "abcdefghij", true, false);
407112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcde"), "abcdefghijklmnopqrst", true, false);
417112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghij"), "", false, true);
427112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghij"), "abcde", false, true);
437112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghij"), "abcdefghij", false, false);
447112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghij"), "abcdefghijklmnopqrst", true, false);
457112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghijklmnopqrst"), "", false, true);
467112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghijklmnopqrst"), "abcde", false, true);
477112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghijklmnopqrst"), "abcdefghij", false, true);
487112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test(S("abcdefghijklmnopqrst"), "abcdefghijklmnopqrst", false, false);
497112dae6acac544a0271a85d95342c583441e2d1Dan Albert    }
507112dae6acac544a0271a85d95342c583441e2d1Dan Albert}
51