1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===//
2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//
3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//                     The LLVM Compiler Infrastructure
4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//
5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open
6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details.
7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//
8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===//
9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <locale>
11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// class time_put<charT, OutputIterator>
13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// iter_type put(iter_type s, ios_base& str, char_type fill, const tm* t,
15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//               char format, char modifier = 0) const;
16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <locale>
18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert>
19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include "test_iterators.h"
20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnertypedef std::time_put<char, output_iterator<char*> > F;
22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerclass my_facet
24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    : public F
25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{
26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerpublic:
27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    explicit my_facet(std::size_t refs = 0)
28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        : F(refs) {}
29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner};
30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner
31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main()
32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{
33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    const my_facet f(1);
34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    char str[200];
35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    output_iterator<char*> iter;
36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    tm t = {0};
37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_sec = 6;
38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_min = 3;
39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_hour = 13;
40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_mday = 2;
41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_mon = 4;
42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_year = 109;
43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_wday = 6;
44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_yday = -1;
45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    t.tm_isdst = 1;
46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    std::ios ios(0);
47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'A');
49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "Saturday");
51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'a');
54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "Sat");
56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'B');
59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "May");
61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'b');
64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "May");
66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'C');
69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "20");
71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'c');
74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "Sat May  2 13:03:06 2009");
76b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
77b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
78b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'D');
79b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
80b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "05/02/09");
81b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
82b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
83b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'd');
84b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
85b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "02");
86b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
87b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
88b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'c', 'E');
89b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
90b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "Sat May  2 13:03:06 2009");
91b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
92b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
93b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'C', 'E');
94b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
95b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "20");
96b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
97b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
98b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'x', 'E');
99b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
100b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "05/02/09");
101b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
102b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
103b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'X', 'E');
104b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
105b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13:03:06");
106b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
107b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
108b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y', 'E');
109b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
110b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "09");
111b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
112b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
113b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'Y', 'E');
114b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
115b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "2009");
116b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
117b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
118b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'd', 'O');
119b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
120b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "02");
121b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
122b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
123b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'e', 'O');
124b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
125b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == " 2");
126b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
127b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
128b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'H', 'O');
129b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
130b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13");
131b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
132b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
133b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'I', 'O');
134b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
135b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "01");
136b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
137b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
138b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'm', 'O');
139b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
140b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "05");
141b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
142b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
143b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'M', 'O');
144b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
145b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "03");
146b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
147b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
148b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'S', 'O');
149b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
150b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "06");
151b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
152b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
153b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'u', 'O');
154b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
155b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "6");
156b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
157b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
158b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'U', 'O');
159b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
160b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "00");
161b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
162b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
163b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'V', 'O');
164b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
165b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "52");
166b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
167b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
168b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'w', 'O');
169b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
170b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "6");
171b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
172b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
173b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'W', 'O');
174b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
175b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "00");
176b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
177b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
178b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y', 'O');
179b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
180b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "09");
181b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
182b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
183b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'B', 'O');
184b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
185b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "May");
186b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
187b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
188b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'e');
189b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
190b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == " 2");
191b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
192b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
193b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'F');
194b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
195b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "2009-05-02");
196b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
197b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
198b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'G');
199b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
200b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "2008");
201b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
202b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
203b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'g');
204b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
205b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "08");
206b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
207b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
208b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'H');
209b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
210b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13");
211b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
212b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
213b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'h');
214b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
215b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "May");
216b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
217b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
218b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'I');
219b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
220b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "01");
221b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
222b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
223b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'j');
224b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
225b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "000");
226b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
227b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
228b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'k');
229b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
230b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13");
231b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
232b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
233b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'l');
234b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
235b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == " 1");
236b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
237b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
238b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'M');
239b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
240b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "03");
241b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
242b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
243b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'm');
244b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
245b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "05");
246b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
247b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
248b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'n');
249b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
250b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "\n");
251b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
252b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
253b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'p');
254b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
255b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "PM");
256b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
257b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
258b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'R');
259b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
260b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13:03");
261b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
262b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
263b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'r');
264b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
265b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "01:03:06 PM");
266b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
267b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
268b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'S');
269b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
270b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "06");
271b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
272b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
273b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 's');
274b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
275b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//        assert(ex == "1241283786");  depends on time zone
276b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
277b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
278b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'T');
279b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
280b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13:03:06");
281b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
282b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
283b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 't');
284b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
285b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "\t");
286b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
287b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
288b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'U');
289b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
290b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "00");
291b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
292b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
293b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'u');
294b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
295b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "6");
296b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
297b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
298b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'V');
299b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
300b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "52");
301b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
302b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
303b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'v');
304b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
305b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == " 2-May-2009");
306b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
307b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
308b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'W');
309b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
310b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "00");
311b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
312b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
313b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'w');
314b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
315b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "6");
316b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
317b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
318b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'X');
319b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
320b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "13:03:06");
321b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
322b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
323b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'x');
324b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
325b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "05/02/09");
326b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
327b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
328b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'Y');
329b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
330b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "2009");
331b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
332b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
333b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'y');
334b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
335b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "09");
336b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
337b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
338b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'Z');
339b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
340b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//        assert(ex == "EDT");  depends on time zone
341b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
342b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
343b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'z');
344b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
345b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//        assert(ex == "-0400");  depends on time zone
346b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
347b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
348b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, '+');
349b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
350b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//        assert(ex == "Sat May  2 13:03:06 EDT 2009");  depends on time zone
351b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
352b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
353b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, '%');
354b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
355b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "%");
356b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
357b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
358b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, '%', 'J');
359b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
360b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "J%");
361b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
362b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    {
363b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        iter = f.put(output_iterator<char*>(str), ios, '*', &t, 'J');
364b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        std::string ex(str, iter.base());
365b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner        assert(ex == "J");
366b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner    }
367b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner}
368