/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing#kwsys for details. */ #include "kwsysPrivate.h" #include KWSYS_HEADER(Status.hxx) // Work-around CMake dependency scanning limitation. This must // duplicate the above list of headers. #if 0 # include "Status.hxx.in" #endif #include #include #ifdef _WIN32 # include #endif int testStatus(int, char* []) { bool res = true; { kwsys::Status status; if (status.GetKind() != kwsys::Status::Kind::Success) { std::cerr << "Status default constructor does not produce Success\n"; res = false; } status = kwsys::Status::Success(); if (status.GetKind() != kwsys::Status::Kind::Success) { std::cerr << "Status Success constructor does not produce Success\n"; res = false; } if (!status.IsSuccess()) { std::cerr << "Status Success gives false IsSuccess\n"; res = false; } if (!status) { std::cerr << "Status Success kind is not true\n"; res = false; } if (status.GetPOSIX() != 0) { std::cerr << "Status Success kind does not return POSIX 0\n"; res = false; } #ifdef _WIN32 if (status.GetWindows() != 0) { std::cerr << "Status Success kind does not return Windows 0\n"; res = false; } #endif if (status.GetString() != "Success") { std::cerr << "Status Success kind does not return \"Success\" string\n"; res = false; } status = kwsys::Status::POSIX(EINVAL); if (status.GetKind() != kwsys::Status::Kind::POSIX) { std::cerr << "Status POSIX constructor does not produce POSIX\n"; res = false; } if (status.IsSuccess()) { std::cerr << "Status POSIX gives true IsSuccess\n"; res = false; } if (status) { std::cerr << "Status POSIX kind is not false\n"; res = false; } if (status.GetPOSIX() != EINVAL) { std::cerr << "Status POSIX kind does not preserve POSIX value\n"; res = false; } #ifdef _WIN32 if (status.GetWindows() != 0) { std::cerr << "Status POSIX kind does not return Windows 0\n"; res = false; } #endif if (status.GetString().empty()) { std::cerr << "Status POSIX kind returns empty string\n"; res = false; } errno = ENOENT; status = kwsys::Status::POSIX_errno(); if (status.GetPOSIX() != ENOENT) { std::cerr << "Status POSIX_errno did not use errno\n"; res = false; } errno = 0; #ifdef _WIN32 status = kwsys::Status::Windows(ERROR_INVALID_PARAMETER); if (status.GetKind() != kwsys::Status::Kind::Windows) { std::cerr << "Status Windows constructor does not produce Windows\n"; res = false; } if (status.IsSuccess()) { std::cerr << "Status Windows gives true IsSuccess\n"; res = false; } if (status) { std::cerr << "Status Windows kind is not false\n"; res = false; } if (status.GetWindows() != ERROR_INVALID_PARAMETER) { std::cerr << "Status Windows kind does not preserve Windows value\n"; res = false; } if (status.GetPOSIX() != 0) { std::cerr << "Status Windows kind does not return POSIX 0\n"; res = false; } if (status.GetString().empty()) { std::cerr << "Status Windows kind returns empty string\n"; res = false; } SetLastError(ERROR_FILE_NOT_FOUND); status = kwsys::Status::Windows_GetLastError(); if (status.GetWindows() != ERROR_FILE_NOT_FOUND) { std::cerr << "Status Windows_GetLastError did not use GetLastError()\n"; res = false; } SetLastError(ERROR_SUCCESS); #endif } return res ? 0 : 1; }