//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// REQUIRES: locale.en_US.UTF-8

// <locale>

// basic_string<char> name() const;

#include <locale>
#include <cassert>

#include "platform_support.h" // locale name macros

int main(int, char**)
{
    std::locale cloc;
    std::locale copy(cloc);
    std::locale n1(LOCALE_en_US_UTF_8);
    std::locale n2(LOCALE_en_US_UTF_8);
    std::locale noname1 = n1.combine<std::ctype<char> >(cloc);
    std::locale nonamec = noname1;
    std::locale noname2 = n1.combine<std::ctype<char> >(cloc);

    assert(cloc == cloc);
    assert(cloc == copy);
    assert(cloc != n1);
    assert(cloc != n2);
    assert(cloc != noname1);
    assert(cloc != nonamec);
    assert(cloc != noname2);

    assert(copy == cloc);
    assert(copy == copy);
    assert(copy != n1);
    assert(copy != n2);
    assert(copy != noname1);
    assert(copy != nonamec);
    assert(copy != noname2);

    assert(n1 != cloc);
    assert(n1 != copy);
    assert(n1 == n1);
    assert(n1 == n2);
    assert(n1 != noname1);
    assert(n1 != nonamec);
    assert(n1 != noname2);

    assert(n2 != cloc);
    assert(n2 != copy);
    assert(n2 == n1);
    assert(n2 == n2);
    assert(n2 != noname1);
    assert(n2 != nonamec);
    assert(n2 != noname2);

    assert(noname1 != cloc);
    assert(noname1 != copy);
    assert(noname1 != n1);
    assert(noname1 != n2);
    assert(noname1 == noname1);
    assert(noname1 == nonamec);
    assert(noname1 != noname2);

    assert(nonamec != cloc);
    assert(nonamec != copy);
    assert(nonamec != n1);
    assert(nonamec != n2);
    assert(nonamec == noname1);
    assert(nonamec == nonamec);
    assert(nonamec != noname2);

    assert(noname2 != cloc);
    assert(noname2 != copy);
    assert(noname2 != n1);
    assert(noname2 != n2);
    assert(noname2 != noname1);
    assert(noname2 != nonamec);
    assert(noname2 == noname2);

  return 0;
}
