Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / libcxx / test / std / input.output / iostream.format / ext.manip / get_time.pass.cpp
blobaddf53fcdeb306a9c6c9dd6c147807974bd2b98a
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 // REQUIRES: locale.en_US.UTF-8
11 // <iomanip>
13 // template <class charT> T9 get_time(struct tm* tmb, const charT* fmt);
15 #include <iomanip>
16 #include <istream>
17 #include <cassert>
19 #include "test_macros.h"
20 #include "platform_support.h" // locale name macros
22 template <class CharT>
23 struct testbuf
24 : public std::basic_streambuf<CharT>
26 typedef std::basic_string<CharT> string_type;
27 typedef std::basic_streambuf<CharT> base;
28 private:
29 string_type str_;
30 public:
32 testbuf() {}
33 testbuf(const string_type& str)
34 : str_(str)
36 base::setg(const_cast<CharT*>(str_.data()),
37 const_cast<CharT*>(str_.data()),
38 const_cast<CharT*>(str_.data()) + str_.size());
42 int main(int, char**)
45 testbuf<char> sb(" Sat Dec 31 23:55:59 2061");
46 std::istream is(&sb);
47 is.imbue(std::locale(LOCALE_en_US_UTF_8));
48 std::tm t = {};
49 is >> std::get_time(&t, "%a %b %d %H:%M:%S %Y");
50 assert(t.tm_sec == 59);
51 assert(t.tm_min == 55);
52 assert(t.tm_hour == 23);
53 assert(t.tm_mday == 31);
54 assert(t.tm_mon == 11);
55 assert(t.tm_year == 161);
56 assert(t.tm_wday == 6);
57 assert(is.eof());
58 assert(!is.fail());
60 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
62 testbuf<wchar_t> sb(L" Sat Dec 31 23:55:59 2061");
63 std::wistream is(&sb);
64 is.imbue(std::locale(LOCALE_en_US_UTF_8));
65 std::tm t = {};
66 is >> std::get_time(&t, L"%a %b %d %H:%M:%S %Y");
67 assert(t.tm_sec == 59);
68 assert(t.tm_min == 55);
69 assert(t.tm_hour == 23);
70 assert(t.tm_mday == 31);
71 assert(t.tm_mon == 11);
72 assert(t.tm_year == 161);
73 assert(t.tm_wday == 6);
74 assert(is.eof());
75 assert(!is.fail());
77 #endif
79 return 0;