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, basic_string_view<charT,traits> rhs);
147112dae6acac544a0271a85d95342c583441e2d1Dan Albert// template<class charT, class traits, class Allocator>
157112dae6acac544a0271a85d95342c583441e2d1Dan Albert//   bool operator!=(basic_string_view<charT,traits> lhs, const basic_string<charT, traits, Allocator> &rhs);
167112dae6acac544a0271a85d95342c583441e2d1Dan Albert
177112dae6acac544a0271a85d95342c583441e2d1Dan Albert#include <experimental/string_view>
187112dae6acac544a0271a85d95342c583441e2d1Dan Albert#include <cassert>
197112dae6acac544a0271a85d95342c583441e2d1Dan Albert
207112dae6acac544a0271a85d95342c583441e2d1Dan Alberttemplate <class S>
217112dae6acac544a0271a85d95342c583441e2d1Dan Albertvoid
227112dae6acac544a0271a85d95342c583441e2d1Dan Alberttest(const std::string &lhs, S rhs, bool x)
237112dae6acac544a0271a85d95342c583441e2d1Dan Albert{
247112dae6acac544a0271a85d95342c583441e2d1Dan Albert    assert((lhs != rhs) == x);
257112dae6acac544a0271a85d95342c583441e2d1Dan Albert    assert((rhs != lhs) == x);
267112dae6acac544a0271a85d95342c583441e2d1Dan Albert}
277112dae6acac544a0271a85d95342c583441e2d1Dan Albert
287112dae6acac544a0271a85d95342c583441e2d1Dan Albertint main()
297112dae6acac544a0271a85d95342c583441e2d1Dan Albert{
307112dae6acac544a0271a85d95342c583441e2d1Dan Albert    {
317112dae6acac544a0271a85d95342c583441e2d1Dan Albert    typedef std::experimental::string_view S;
327112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("", S(""), false);
337112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("", S("abcde"), true);
347112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("", S("abcdefghij"), true);
357112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("", S("abcdefghijklmnopqrst"), true);
367112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcde", S(""), true);
377112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcde", S("abcde"), false);
387112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcde", S("abcdefghij"), true);
397112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcde", S("abcdefghijklmnopqrst"), true);
407112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghij", S(""), true);
417112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghij", S("abcde"), true);
427112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghij", S("abcdefghij"), false);
437112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghij", S("abcdefghijklmnopqrst"), true);
447112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghijklmnopqrst", S(""), true);
457112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghijklmnopqrst", S("abcde"), true);
467112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghijklmnopqrst", S("abcdefghij"), true);
477112dae6acac544a0271a85d95342c583441e2d1Dan Albert    test("abcdefghijklmnopqrst", S("abcdefghijklmnopqrst"), false);
487112dae6acac544a0271a85d95342c583441e2d1Dan Albert    }
497112dae6acac544a0271a85d95342c583441e2d1Dan Albert}
50