diff --git a/tests/std/test.lst b/tests/std/test.lst index 9296abdddd9..50a5ef224e6 100644 --- a/tests/std/test.lst +++ b/tests/std/test.lst @@ -246,6 +246,7 @@ tests\P0220R1_sample tests\P0220R1_searchers tests\P0220R1_string_view tests\P0288R9_move_only_function +tests\P0295R0_gcd_lcm tests\P0325R4_to_array tests\P0339R6_polymorphic_allocator tests\P0355R7_calendars_and_time_zones_clocks diff --git a/tests/std/tests/P0295R0_gcd_lcm/env.lst b/tests/std/tests/P0295R0_gcd_lcm/env.lst new file mode 100644 index 00000000000..2de7aab2959 --- /dev/null +++ b/tests/std/tests/P0295R0_gcd_lcm/env.lst @@ -0,0 +1,4 @@ +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0295R0_gcd_lcm/test.compile.pass.cpp b/tests/std/tests/P0295R0_gcd_lcm/test.compile.pass.cpp new file mode 100644 index 00000000000..51c990f9761 --- /dev/null +++ b/tests/std/tests/P0295R0_gcd_lcm/test.compile.pass.cpp @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#include + +using std::gcd; +using std::lcm; + +#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) + +int main() {} // COMPILE-ONLY + +STATIC_ASSERT(gcd(0, 0) == 0); +STATIC_ASSERT(gcd(0, 1) == 1); +STATIC_ASSERT(gcd(1, 0) == 1); +STATIC_ASSERT(gcd(0, 1) == 1); +STATIC_ASSERT(gcd(60, 24) == 12); +STATIC_ASSERT(gcd(196, 42) == 14); +STATIC_ASSERT(gcd(54, 24) == 6); + +STATIC_ASSERT(gcd(0, -1) == 1); +STATIC_ASSERT(gcd(-1, 0) == 1); +STATIC_ASSERT(gcd(0, -1) == 1); +STATIC_ASSERT(gcd(-60, -24) == 12); +STATIC_ASSERT(gcd(-196, -42) == 14); +STATIC_ASSERT(gcd(-54, -24) == 6); + +STATIC_ASSERT(gcd(0, 1) == 1); +STATIC_ASSERT(gcd(-1, 0) == 1); +STATIC_ASSERT(gcd(0, 1) == 1); +STATIC_ASSERT(gcd(-60, 24) == 12); +STATIC_ASSERT(gcd(-196, 42) == 14); +STATIC_ASSERT(gcd(-54, 24) == 6); + +STATIC_ASSERT(gcd(1073741824, 536870912) == 536870912); +STATIC_ASSERT(gcd(1073741824, -536870912) == 536870912); +STATIC_ASSERT(gcd(-1073741824, 536870912) == 536870912); +STATIC_ASSERT(gcd(INT_MAX, INT_MAX) == INT_MAX); +STATIC_ASSERT(gcd(INT_MIN, INT_MAX) == 1); +// gcd(INT_MIN, INT_MIN) -> undefined behavior +STATIC_ASSERT(gcd(INT_MIN + 1, INT_MIN + 1) == INT_MAX); + +STATIC_ASSERT(gcd(4294967296ULL, 65536L) == 65536ULL); +STATIC_ASSERT(gcd(4294967296ULL, 65536UL) == 65536ULL); + +STATIC_ASSERT(lcm(0, 0) == 0); +STATIC_ASSERT(lcm(0, 1) == 0); +STATIC_ASSERT(lcm(1, 0) == 0); +STATIC_ASSERT(lcm(1073741824, 536870912) == 1073741824); +STATIC_ASSERT(lcm(1073741824, -536870912) == 1073741824); +STATIC_ASSERT(lcm(-1073741824, 536870912) == 1073741824);