Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/std/test.lst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions tests/std/tests/P0295R0_gcd_lcm/env.lst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

RUNALL_INCLUDE ..\usual_17_matrix.lst
52 changes: 52 additions & 0 deletions tests/std/tests/P0295R0_gcd_lcm/test.compile.pass.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

#include <limits.h>
#include <numeric>

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);