The libc++ test suite has a lot of old Lit features used to XFAIL tests and mark them as UNSUPPORTED. Many of them are to workaround problems on old compilers or old platforms. As time goes by, it is good to go and clean those up to simplify the configuration of the test suite, and also to reflect the testing reality. It's not useful to have markup that gives the impression that e.g. clang-3.3 is supported, when we don't really test on it anymore (and hence several new tests probably don't have the necessary markup on them).
54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// UNSUPPORTED: libcpp-has-no-threads
|
|
|
|
// LWG 2056 changed the values of future_errc, so if we're using new headers
|
|
// with an old library we'll get incorrect messages.
|
|
//
|
|
// XFAIL: with_system_cxx_lib=macosx10.11
|
|
// XFAIL: with_system_cxx_lib=macosx10.10
|
|
// XFAIL: with_system_cxx_lib=macosx10.9
|
|
|
|
// <future>
|
|
|
|
// class future_error
|
|
|
|
// const char* what() const throw();
|
|
|
|
#include <future>
|
|
#include <cstring>
|
|
#include <cassert>
|
|
|
|
#include "test_macros.h"
|
|
|
|
int main(int, char**)
|
|
{
|
|
{
|
|
std::future_error f(std::make_error_code(std::future_errc::broken_promise));
|
|
LIBCPP_ASSERT(std::strcmp(f.what(), "The associated promise has been destructed prior "
|
|
"to the associated state becoming ready.") == 0);
|
|
}
|
|
{
|
|
std::future_error f(std::make_error_code(std::future_errc::future_already_retrieved));
|
|
LIBCPP_ASSERT(std::strcmp(f.what(), "The future has already been retrieved from "
|
|
"the promise or packaged_task.") == 0);
|
|
}
|
|
{
|
|
std::future_error f(std::make_error_code(std::future_errc::promise_already_satisfied));
|
|
LIBCPP_ASSERT(std::strcmp(f.what(), "The state of the promise has already been set.") == 0);
|
|
}
|
|
{
|
|
std::future_error f(std::make_error_code(std::future_errc::no_state));
|
|
LIBCPP_ASSERT(std::strcmp(f.what(), "Operation not permitted on an object without "
|
|
"an associated state.") == 0);
|
|
}
|
|
|
|
return 0;
|
|
}
|