diff options
Diffstat (limited to 'libcxx/test/utilities/time/time.duration')
47 files changed, 296 insertions, 0 deletions
diff --git a/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp b/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp new file mode 100644 index 00000000000..5294c69c095 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// Test default template arg:
// template <class Rep, class Period = ratio<1>>
// class duration;
#include <chrono>
#include <type_traits>
int main()
{
static_assert((std::is_same<std::chrono::duration<int, std::ratio<1> >,
std::chrono::duration<int> >::value), "");
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/duration.fail.cpp b/libcxx/test/utilities/time/time.duration/duration.fail.cpp new file mode 100644 index 00000000000..e28883820c0 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/duration.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// If a program instantiates duration with a duration type for the template
// argument Rep a diagnostic is required.
#include <chrono>
int main()
{
typedef std::chrono::duration<std::chrono::milliseconds> D;
D d;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp b/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp new file mode 100644 index 00000000000..26e8c0f3b02 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// Period::num shall be positive, diagnostic required.
#include <chrono>
int main()
{
typedef std::chrono::duration<int, std::ratio<5, -1> > D;
D d;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/ratio.fail.cpp b/libcxx/test/utilities/time/time.duration/ratio.fail.cpp new file mode 100644 index 00000000000..adcc21e8da6 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/ratio.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// Period shall be a specialization of ratio, diagnostic required.
#include <chrono>
template <int N, int D = 1>
class Ratio
{
public:
static const int num = N;
static const int den = D;
};
int main()
{
typedef std::chrono::duration<int, Ratio<1> > D;
D d;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp new file mode 100644 index 00000000000..0be2410eda3 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator++();
#include <chrono>
#include <cassert>
int main()
{
std::chrono::hours h(3);
std::chrono::hours& href = ++h;
assert(&href == &h);
assert(h.count() == 4);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp new file mode 100644 index 00000000000..124ec392052 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration operator++(int);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::hours h(3);
std::chrono::hours h2 = h++;
assert(h.count() == 4);
assert(h2.count() == 3);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp new file mode 100644 index 00000000000..2d6f997d8ab --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration operator+() const;
#include <chrono>
#include <cassert>
int main()
{
const std::chrono::minutes m(3);
std::chrono::minutes m2 = +m;
assert(m.count() == m2.count());
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp new file mode 100644 index 00000000000..84c6fadf919 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator+=(const duration& d);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::seconds s(3);
s += std::chrono::seconds(2);
assert(s.count() == 5);
s += std::chrono::minutes(2);
assert(s.count() == 125);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp new file mode 100644 index 00000000000..5423d6fe273 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator--();
#include <chrono>
#include <cassert>
int main()
{
std::chrono::hours h(3);
std::chrono::hours& href = --h;
assert(&href == &h);
assert(h.count() == 2);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp new file mode 100644 index 00000000000..9fee8c3a9e4 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration operator--(int);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::hours h(3);
std::chrono::hours h2 = h--;
assert(h.count() == 2);
assert(h2.count() == 3);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp new file mode 100644 index 00000000000..4df2fcdc56f --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration operator-() const;
#include <chrono>
#include <cassert>
int main()
{
const std::chrono::minutes m(3);
std::chrono::minutes m2 = -m;
assert(m2.count() == -m.count());
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp new file mode 100644 index 00000000000..cb798a47e57 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator-=(const duration& d);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::seconds s(3);
s -= std::chrono::seconds(2);
assert(s.count() == 1);
s -= std::chrono::minutes(2);
assert(s.count() == -119);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp new file mode 100644 index 00000000000..5fce07acce1 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator/=(const rep& rhs);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::nanoseconds ns(15);
ns /= 5;
assert(ns.count() == 3);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp new file mode 100644 index 00000000000..912b43e74aa --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator%=(const duration& rhs)
#include <chrono>
#include <cassert>
int main()
{
std::chrono::microseconds us(11);
std::chrono::microseconds us2(3);
us %= us2;
assert(us.count() == 2);
us %= std::chrono::milliseconds(3);
assert(us.count() == 2);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp new file mode 100644 index 00000000000..b8a7930dd2b --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator%=(const rep& rhs)
#include <chrono>
#include <cassert>
int main()
{
std::chrono::microseconds us(11);
us %= 3;
assert(us.count() == 2);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp new file mode 100644 index 00000000000..1cd89251d8c --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration& operator*=(const rep& rhs);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::nanoseconds ns(3);
ns *= 5;
assert(ns.count() == 15);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp new file mode 100644 index 00000000000..a972949a784 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class ToDuration, class Rep, class Period>
// ToDuration
// duration_cast(const duration<Rep, Period>& d);
#include <chrono>
#include <type_traits>
#include <cassert>
template <class ToDuration, class FromDuration>
void
test(const FromDuration& f, const ToDuration& d)
{
typedef decltype(std::chrono::duration_cast<ToDuration>(f)) R;
static_assert((std::is_same<R, ToDuration>::value), "");
assert(std::chrono::duration_cast<ToDuration>(f) == d);
}
int main()
{
test(std::chrono::milliseconds(7265000), std::chrono::hours(2));
test(std::chrono::milliseconds(7265000), std::chrono::minutes(121));
test(std::chrono::milliseconds(7265000), std::chrono::seconds(7265));
test(std::chrono::milliseconds(7265000), std::chrono::milliseconds(7265000));
test(std::chrono::milliseconds(7265000), std::chrono::microseconds(7265000000LL));
test(std::chrono::milliseconds(7265000), std::chrono::nanoseconds(7265000000000LL));
test(std::chrono::milliseconds(7265000),
std::chrono::duration<double, std::ratio<3600> >(7265./3600));
test(std::chrono::duration<int, std::ratio<2, 3> >(9),
std::chrono::duration<int, std::ratio<3, 5> >(10));
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp new file mode 100644 index 00000000000..e9f2a484143 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class ToDuration, class Rep, class Period>
// ToDuration
// duration_cast(const duration<Rep, Period>& d);
// ToDuration shall be an instantiation of duration.
#include <chrono>
int main()
{
std::chrono::duration_cast<int>(std::chrono::milliseconds(3));
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp new file mode 100644 index 00000000000..c7d2269eecf --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period1, class Rep2, class Period2>
// bool
// operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
// template <class Rep1, class Period1, class Rep2, class Period2>
// bool
// operator!=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
#include <chrono>
#include <cassert>
int main()
{
{
std::chrono::seconds s1(3);
std::chrono::seconds s2(3);
assert(s1 == s2);
assert(!(s1 != s2));
}
{
std::chrono::seconds s1(3);
std::chrono::seconds s2(4);
assert(!(s1 == s2));
assert(s1 != s2);
}
{
std::chrono::milliseconds s1(3);
std::chrono::microseconds s2(3000);
assert(s1 == s2);
assert(!(s1 != s2));
}
{
std::chrono::milliseconds s1(3);
std::chrono::microseconds s2(4000);
assert(!(s1 == s2));
assert(s1 != s2);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(9);
std::chrono::duration<int, std::ratio<3, 5> > s2(10);
assert(s1 == s2);
assert(!(s1 != s2));
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(10);
std::chrono::duration<int, std::ratio<3, 5> > s2(9);
assert(!(s1 == s2));
assert(s1 != s2);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(9);
std::chrono::duration<double, std::ratio<3, 5> > s2(10);
assert(s1 == s2);
assert(!(s1 != s2));
}
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp new file mode 100644 index 00000000000..f477f424f9f --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period1, class Rep2, class Period2>
// bool
// operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
// template <class Rep1, class Period1, class Rep2, class Period2>
// bool
// operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
// template <class Rep1, class Period1, class Rep2, class Period2>
// bool
// operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
// template <class Rep1, class Period1, class Rep2, class Period2>
// bool
// operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
#include <chrono>
#include <cassert>
int main()
{
{
std::chrono::seconds s1(3);
std::chrono::seconds s2(3);
assert(!(s1 < s2));
assert(!(s1 > s2));
assert( (s1 <= s2));
assert( (s1 >= s2));
}
{
std::chrono::seconds s1(3);
std::chrono::seconds s2(4);
assert( (s1 < s2));
assert(!(s1 > s2));
assert( (s1 <= s2));
assert(!(s1 >= s2));
}
{
std::chrono::milliseconds s1(3);
std::chrono::microseconds s2(3000);
assert(!(s1 < s2));
assert(!(s1 > s2));
assert( (s1 <= s2));
assert( (s1 >= s2));
}
{
std::chrono::milliseconds s1(3);
std::chrono::microseconds s2(4000);
assert( (s1 < s2));
assert(!(s1 > s2));
assert( (s1 <= s2));
assert(!(s1 >= s2));
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(9);
std::chrono::duration<int, std::ratio<3, 5> > s2(10);
assert(!(s1 < s2));
assert(!(s1 > s2));
assert( (s1 <= s2));
assert( (s1 >= s2));
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(10);
std::chrono::duration<int, std::ratio<3, 5> > s2(9);
assert(!(s1 < s2));
assert( (s1 > s2));
assert(!(s1 <= s2));
assert( (s1 >= s2));
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(9);
std::chrono::duration<double, std::ratio<3, 5> > s2(10);
assert(!(s1 < s2));
assert(!(s1 > s2));
assert( (s1 <= s2));
assert( (s1 >= s2));
}
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp new file mode 100644 index 00000000000..318f336e48d --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2, class Period2>
// duration(const duration<Rep2, Period2>& d);
// exact conversions allowed for integral reps
#include <chrono>
#include <cassert>
int main()
{
std::chrono::milliseconds ms(1);
std::chrono::microseconds us = ms;
assert(us.count() == 1000);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp new file mode 100644 index 00000000000..42b02ac38d0 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2, class Period2>
// duration(const duration<Rep2, Period2>& d);
// conversions from floating point to integral durations disallowed
#include <chrono>
int main()
{
std::chrono::duration<double> d;
std::chrono::duration<int> i = d;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp new file mode 100644 index 00000000000..dc5bde48685 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2, class Period2>
// duration(const duration<Rep2, Period2>& d);
// inexact conversions disallowed for integral reps
#include <chrono>
int main()
{
std::chrono::microseconds us(1);
std::chrono::milliseconds ms = us;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp new file mode 100644 index 00000000000..0539ab072d4 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2, class Period2>
// duration(const duration<Rep2, Period2>& d);
// inexact conversions allowed for floating point reps
#include <chrono>
#include <cassert>
int main()
{
std::chrono::duration<double, std::micro> us(1);
std::chrono::duration<double, std::milli> ms = us;
assert(ms.count() == 1./1000);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp new file mode 100644 index 00000000000..43f026de656 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2, class Period2>
// duration(const duration<Rep2, Period2>& d);
// conversions from integral to floating point durations allowed
#include <chrono>
#include <cassert>
int main()
{
std::chrono::duration<int> i(3);
std::chrono::duration<int> d = i;
assert(d.count() == 3);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp new file mode 100644 index 00000000000..1dd7c5e29c3 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// duration() = default;
// Rep must be default initialized, not initialized with 0
#include <chrono>
#include <cassert>
#include "../../rep.h"
template <class D>
void
test()
{
D d;
assert(d.count() == typename D::rep());
}
int main()
{
test<std::chrono::duration<Rep> >();
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp new file mode 100644 index 00000000000..eea99f563f9 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2>
// explicit duration(const Rep2& r);
#include <chrono>
#include <cassert>
#include "../../rep.h"
template <class D, class R>
void
test(R r)
{
D d(r);
assert(d.count() == r);
}
int main()
{
test<std::chrono::duration<int> >(5);
test<std::chrono::duration<int, std::ratio<3, 2> > >(5);
test<std::chrono::duration<Rep, std::ratio<3, 2> > >(Rep(3));
test<std::chrono::duration<double, std::ratio<2, 3> > >(5.5);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp new file mode 100644 index 00000000000..435091ef277 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2>
// explicit duration(const Rep2& r);
// test for explicit
#include <chrono>
#include "../../rep.h"
int main()
{
std::chrono::duration<int> d = 1;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp new file mode 100644 index 00000000000..8fa3d038568 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2>
// explicit duration(const Rep2& r);
// Rep2 shall be implicitly convertible to rep
#include <chrono>
#include "../../rep.h"
int main()
{
std::chrono::duration<Rep> d(1);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp new file mode 100644 index 00000000000..2e63a34e042 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2>
// explicit duration(const Rep2& r);
// construct double with int
#include <chrono>
#include <cassert>
int main()
{
std::chrono::duration<double> d(5);
assert(d.count() == 5);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp new file mode 100644 index 00000000000..10b44d0e8a9 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep2>
// explicit duration(const Rep2& r);
// treat_as_floating_point<Rep2>::value shall be false
#include <chrono>
int main()
{
std::chrono::duration<int> d(1.);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp new file mode 100644 index 00000000000..4979b156aa1 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period1, class Rep2, class Period2>
// typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
// operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
#include <chrono>
#include <cassert>
int main()
{
{
std::chrono::seconds s1(3);
std::chrono::seconds s2(5);
std::chrono::seconds r = s1 + s2;
assert(r.count() == 8);
}
{
std::chrono::seconds s1(3);
std::chrono::microseconds s2(5);
std::chrono::microseconds r = s1 + s2;
assert(r.count() == 3000005);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(3);
std::chrono::duration<int, std::ratio<3, 5> > s2(5);
std::chrono::duration<int, std::ratio<1, 15> > r = s1 + s2;
assert(r.count() == 75);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(3);
std::chrono::duration<double, std::ratio<3, 5> > s2(5);
std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2;
assert(r.count() == 75);
}
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp new file mode 100644 index 00000000000..b349cf56fbe --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period1, class Rep2, class Period2>
// typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
// operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
#include <chrono>
#include <cassert>
int main()
{
{
std::chrono::seconds s1(3);
std::chrono::seconds s2(5);
std::chrono::seconds r = s1 - s2;
assert(r.count() == -2);
}
{
std::chrono::seconds s1(3);
std::chrono::microseconds s2(5);
std::chrono::microseconds r = s1 - s2;
assert(r.count() == 2999995);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(3);
std::chrono::duration<int, std::ratio<3, 5> > s2(5);
std::chrono::duration<int, std::ratio<1, 15> > r = s1 - s2;
assert(r.count() == -15);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(3);
std::chrono::duration<double, std::ratio<3, 5> > s2(5);
std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2;
assert(r.count() == -15);
}
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp new file mode 100644 index 00000000000..181fc6a1cdb --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period1, class Rep2, class Period2>
// typename common_type<Rep1, Rep2>::type
// operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
#include <chrono>
#include <cassert>
int main()
{
{
std::chrono::nanoseconds ns1(15);
std::chrono::nanoseconds ns2(5);
assert(ns1 / ns2 == 3);
}
{
std::chrono::microseconds us1(15);
std::chrono::nanoseconds ns2(5);
assert(us1 / ns2 == 3000);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(30);
std::chrono::duration<int, std::ratio<3, 5> > s2(5);
assert(s1 / s2 == 6);
}
{
std::chrono::duration<int, std::ratio<2, 3> > s1(30);
std::chrono::duration<double, std::ratio<3, 5> > s2(5);
assert(s1 / s2 == 20./3);
}
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp new file mode 100644 index 00000000000..2ce8069428d --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period, class Rep2>
// duration<typename common_type<Rep1, Rep2>::type, Period>
// operator/(const duration<Rep1, Period>& d, const Rep2& s);
#include <chrono>
#include "../../rep.h"
int main()
{
std::chrono::duration<Rep> d(Rep(15));
d = d / 5;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp new file mode 100644 index 00000000000..a010c57084d --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period, class Rep2>
// duration<typename common_type<Rep1, Rep2>::type, Period>
// operator/(const duration<Rep1, Period>& d, const Rep2& s);
#include <chrono>
#include <cassert>
int main()
{
std::chrono::nanoseconds ns(15);
ns = ns / 5;
assert(ns.count() == 3);
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp new file mode 100644 index 00000000000..5b428e3961c --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period1, class Rep2, class Period2>
// typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
// operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
#include <chrono>
#include <cassert>
int main()
{
{
std::chrono::nanoseconds ns1(15);
std::chrono::nanoseconds ns2(6);
std::chrono::nanoseconds r = ns1 % ns2;
assert(r.count() == 3);
}
{
std::chrono::microseconds us1(15);
std::chrono::nanoseconds ns2(28);
std::chrono::nanoseconds r = us1 % ns2;
assert(r.count() == 20);
}
{
std::chrono::duration<int, std::ratio<3, 5> > s1(6);
std::chrono::duration<int, std::ratio<2, 3> > s2(3);
std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2;
assert(r.count() == 24);
}
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp new file mode 100644 index 00000000000..c7b63575956 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp @@ -0,0 +1 @@ +//===----------------------------------------------------------------------===//
//
// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <chrono>
// duration
// template <class Rep1, class Period, class Rep2>
// duration<typename common_type<Rep1, Rep2>::type, Period>
// operator%(const duration<Rep1, Period>& d, const Rep2& s)
#include <chrono>
#include "../../rep.h"
int main()
{
std::chrono::duration<Rep> d(Rep(15));
d = d % 5;
}
\ No newline at end of file diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp new file mode 100644 index 00000000000..98c4eb725f5 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp @@ -0,0 +1,26 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator%(const duration<Rep1, Period>& d, const Rep2& s) + +#include <chrono> +#include <cassert> + +int main() +{ + std::chrono::nanoseconds ns(15); + ns = ns % 6; + assert(ns.count() == 3); +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp new file mode 100644 index 00000000000..4240134bcb2 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp @@ -0,0 +1,32 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator*(const duration<Rep1, Period>& d, const Rep2& s); + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator*(const Rep1& s, const duration<Rep2, Period>& d); + +#include <chrono> +#include <cassert> + +int main() +{ + std::chrono::nanoseconds ns(3); + ns = ns * 5; + assert(ns.count() == 15); + ns = 6 * ns; + assert(ns.count() == 90); +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp new file mode 100644 index 00000000000..45d6a3eb02d --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator*(const duration<Rep1, Period>& d, const Rep2& s); + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator*(const Rep1& s, const duration<Rep2, Period>& d); + +#include <chrono> + +#include "../../rep.h" + +int main() +{ + std::chrono::duration<Rep> d; + d = d * 5; +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp new file mode 100644 index 00000000000..e2134fb5c4f --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp @@ -0,0 +1,30 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator*(const duration<Rep1, Period>& d, const Rep2& s); + +// template <class Rep1, class Period, class Rep2> +// duration<typename common_type<Rep1, Rep2>::type, Period> +// operator*(const Rep1& s, const duration<Rep2, Period>& d); + +#include <chrono> + +#include "../../rep.h" + +int main() +{ + std::chrono::duration<Rep> d; + d = 5 * d; +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp new file mode 100644 index 00000000000..fa4d462f18d --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp @@ -0,0 +1,12 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +int main() +{ +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp new file mode 100644 index 00000000000..2cedbf87371 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// static constexpr duration max(); + +#include <chrono> +#include <limits> +#include <cassert> + +#include "../../rep.h" + +template <class D> +void test() +{ + typedef typename D::rep Rep; + Rep max_rep = std::chrono::duration_values<Rep>::max(); + assert(D::max().count() == max_rep); +} + +int main() +{ + test<std::chrono::duration<int> >(); + test<std::chrono::duration<Rep> >(); +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp new file mode 100644 index 00000000000..827bd067c42 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp @@ -0,0 +1,34 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// static constexpr duration min(); + +#include <chrono> +#include <limits> +#include <cassert> + +#include "../../rep.h" + +template <class D> +void test() +{ + typedef typename D::rep Rep; + Rep min_rep = std::chrono::duration_values<Rep>::min(); + assert(D::min().count() == min_rep); +} + +int main() +{ + test<std::chrono::duration<int> >(); + test<std::chrono::duration<Rep> >(); +} diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp new file mode 100644 index 00000000000..1ee11bdd7e6 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp @@ -0,0 +1,33 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// static constexpr duration zero(); + +#include <chrono> +#include <cassert> + +#include "../../rep.h" + +template <class D> +void test() +{ + typedef typename D::rep Rep; + Rep zero_rep = std::chrono::duration_values<Rep>::zero(); + assert(D::zero().count() == zero_rep); +} + +int main() +{ + test<std::chrono::duration<int> >(); + test<std::chrono::duration<Rep> >(); +} diff --git a/libcxx/test/utilities/time/time.duration/types.pass.cpp b/libcxx/test/utilities/time/time.duration/types.pass.cpp new file mode 100644 index 00000000000..ab423178d57 --- /dev/null +++ b/libcxx/test/utilities/time/time.duration/types.pass.cpp @@ -0,0 +1,27 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration + +// Test nested types + +// typedef Rep rep; +// typedef Period period; + +#include <chrono> +#include <type_traits> + +int main() +{ + typedef std::chrono::duration<long, std::ratio<3, 2> > D; + static_assert((std::is_same<D::rep, long>::value), ""); + static_assert((std::is_same<D::period, std::ratio<3, 2> >::value), ""); +} |

