std::basic_string<CharT> res;
const duration<double> d(33.111222);
+ res = std::format(WIDEN("{:}"), d);
+ VERIFY( res == WIDEN("33.1112s") );
+ res = std::format(WIDEN("{:.0}"), d);
+ VERIFY( res == WIDEN("33.1112s") );
res = std::format(WIDEN("{:.3}"), d);
VERIFY( res == WIDEN("33.1112s") );
res = std::format(WIDEN("{:.6}"), d);
// Uses ostream operator<<
const duration<double, std::nano> nd = d;
+ res = std::format(WIDEN("{:}"), nd);
+ VERIFY( res == WIDEN("3.31112e+10ns") );
+ res = std::format(WIDEN("{:.0}"), nd);
+ VERIFY( res == WIDEN("3.31112e+10ns") );
res = std::format(WIDEN("{:.3}"), nd);
VERIFY( res == WIDEN("3.31112e+10ns") );
res = std::format(WIDEN("{:.6}"), nd);
std::basic_string<CharT> res;
const duration<double> d(7.111222);
+ res = std::format(WIDEN("{:%Q}"), d);
+ VERIFY( res == WIDEN("7.111222") );
+ res = std::format(WIDEN("{:.0%Q}"), d);
+ VERIFY( res == WIDEN("7.111222") );
res = std::format(WIDEN("{:.3%Q}"), d);
VERIFY( res == WIDEN("7.111222") );
res = std::format(WIDEN("{:.6%Q}"), d);
res = std::format(WIDEN("{:.9%Q}"), d);
VERIFY( res == WIDEN("7.111222") );
+ duration<double, std::milli> md = d;
+ res = std::format(WIDEN("{:%Q}"), md);
+ VERIFY( res == WIDEN("7111.222") );
+ res = std::format(WIDEN("{:.0%Q}"), md);
+ VERIFY( res == WIDEN("7111.222") );
+ res = std::format(WIDEN("{:.3%Q}"), md);
+ VERIFY( res == WIDEN("7111.222") );
+ res = std::format(WIDEN("{:.6%Q}"), md);
+ VERIFY( res == WIDEN("7111.222") );
+ res = std::format(WIDEN("{:.9%Q}"), md);
+ VERIFY( res == WIDEN("7111.222") );
+
const duration<double, std::nano> nd = d;
+ res = std::format(WIDEN("{:%Q}"), nd);
+ VERIFY( res == WIDEN("7111222000") );
+ res = std::format(WIDEN("{:.0%Q}"), nd);
+ VERIFY( res == WIDEN("7111222000") );
res = std::format(WIDEN("{:.3%Q}"), nd);
VERIFY( res == WIDEN("7111222000") );
res = std::format(WIDEN("{:.6%Q}"), nd);
template<typename CharT>
void
-test_S()
+test_S_fp()
{
std::basic_string<CharT> res;
// Precision is ignored, but period affects output
- const duration<double> d(5.111222);
+ duration<double> d(5.111222);
+ res = std::format(WIDEN("{:%S}"), d);
+ VERIFY( res == WIDEN("05") );
+ res = std::format(WIDEN("{:.0%S}"), d);
+ VERIFY( res == WIDEN("05") );
res = std::format(WIDEN("{:.3%S}"), d);
VERIFY( res == WIDEN("05") );
res = std::format(WIDEN("{:.6%S}"), d);
res = std::format(WIDEN("{:.9%S}"), d);
VERIFY( res == WIDEN("05") );
- const duration<double, std::milli> md = d;
+ duration<double, std::milli> md = d;
+ res = std::format(WIDEN("{:%S}"), md);
+ VERIFY( res == WIDEN("05.111") );
+ res = std::format(WIDEN("{:.0%S}"), md);
+ VERIFY( res == WIDEN("05.111") );
res = std::format(WIDEN("{:.3%S}"), md);
VERIFY( res == WIDEN("05.111") );
res = std::format(WIDEN("{:.6%S}"), md);
res = std::format(WIDEN("{:.9%S}"), md);
VERIFY( res == WIDEN("05.111") );
- const duration<double, std::nano> nd = d;
+ duration<double, std::micro> ud = d;
+ res = std::format(WIDEN("{:%S}"), ud);
+ VERIFY( res == WIDEN("05.111222") );
+ res = std::format(WIDEN("{:.0%S}"), ud);
+ VERIFY( res == WIDEN("05.111222") );
+ res = std::format(WIDEN("{:.3%S}"), ud);
+ VERIFY( res == WIDEN("05.111222") );
+ res = std::format(WIDEN("{:.6%S}"), ud);
+ VERIFY( res == WIDEN("05.111222") );
+ res = std::format(WIDEN("{:.9%S}"), ud);
+ VERIFY( res == WIDEN("05.111222") );
+
+ duration<double, std::nano> nd = d;
+ res = std::format(WIDEN("{:%S}"), nd);
+ VERIFY( res == WIDEN("05.111222000") );
+ res = std::format(WIDEN("{:.0%S}"), nd);
+ VERIFY( res == WIDEN("05.111222000") );
res = std::format(WIDEN("{:.3%S}"), nd);
VERIFY( res == WIDEN("05.111222000") );
res = std::format(WIDEN("{:.6%S}"), nd);
VERIFY( res == WIDEN("05.111222000") );
res = std::format(WIDEN("{:.9%S}"), nd);
VERIFY( res == WIDEN("05.111222000") );
+
+ duration<double, std::pico> pd = d;
+ res = std::format(WIDEN("{:%S}"), pd);
+ VERIFY( res == WIDEN("05.111222000000") );
+ res = std::format(WIDEN("{:.0%S}"), pd);
+ VERIFY( res == WIDEN("05.111222000000") );
+ res = std::format(WIDEN("{:.3%S}"), pd);
+ VERIFY( res == WIDEN("05.111222000000") );
+ res = std::format(WIDEN("{:.6%S}"), pd);
+ VERIFY( res == WIDEN("05.111222000000") );
+ res = std::format(WIDEN("{:.9%S}"), pd);
+ VERIFY( res == WIDEN("05.111222000000") );
+}
+
+template<typename CharT>
+void
+test_S_int()
+{
+ std::basic_string<CharT> res;
+ const nanoseconds src(7'000'012'345);
+
+ auto d = floor<seconds>(src);
+ res = std::format(WIDEN("{:%S}"), d);
+ VERIFY( res == WIDEN("07") );
+
+ auto md = floor<milliseconds>(src);
+ res = std::format(WIDEN("{:%S}"), md);
+ VERIFY( res == WIDEN("07.000") );
+
+ auto ud = floor<microseconds>(src);
+ res = std::format(WIDEN("{:%S}"), ud);
+ VERIFY( res == WIDEN("07.000012") );
+
+ auto nd = floor<nanoseconds>(src);
+ res = std::format(WIDEN("{:%S}"), nd);
+ VERIFY( res == WIDEN("07.000012345") );
+
+ using picoseconds = duration<unsigned long long, std::pico>;
+ auto pd = floor<picoseconds>(src);
+ res = std::format(WIDEN("{:%S}"), pd);
+ VERIFY( res == WIDEN("07.000012345000") );
}
template<typename CharT>
{
test_empty<CharT>();
test_Q<CharT>();
- test_S<CharT>();
+ test_S_int<CharT>();
+ test_S_fp<CharT>();
}
int main()