From 4e8b05d209f61be222c7eb776edffa206b706299 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 15 Jun 2020 08:59:19 +0200 Subject: [PATCH 2/3] Expand tests for factorial Move from int4 to numeric test. (They were originally int4 functions, but were reimplemented for numeric in 04a4821adef38155b7920ba9eb83c4c3c29156f8.) Add some tests for edge cases. --- src/test/regress/expected/int4.out | 12 --------- src/test/regress/expected/numeric.out | 35 +++++++++++++++++++++++++++ src/test/regress/sql/int4.sql | 4 --- src/test/regress/sql/numeric.sql | 10 ++++++++ 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/test/regress/expected/int4.out b/src/test/regress/expected/int4.out index c384af18ee..77f43739a7 100644 --- a/src/test/regress/expected/int4.out +++ b/src/test/regress/expected/int4.out @@ -299,18 +299,6 @@ SELECT int4 '1000' < int4 '999' AS false; f (1 row) -SELECT 4! AS twenty_four; - twenty_four -------------- - 24 -(1 row) - -SELECT !!3 AS six; - six ------ - 6 -(1 row) - SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten; ten ----- diff --git a/src/test/regress/expected/numeric.out b/src/test/regress/expected/numeric.out index c7fe63d037..05e9a2b9e9 100644 --- a/src/test/regress/expected/numeric.out +++ b/src/test/regress/expected/numeric.out @@ -2315,3 +2315,38 @@ FROM (VALUES (0::numeric, 0::numeric), SELECT lcm(9999 * (10::numeric)^131068 + (10::numeric^131068 - 1), 2); -- overflow ERROR: value overflows numeric format +-- +-- Tests for factorial +-- +SELECT 4!; + ?column? +---------- + 24 +(1 row) + +SELECT !!3; + ?column? +---------- + 6 +(1 row) + +SELECT factorial(15); + factorial +--------------- + 1307674368000 +(1 row) + +SELECT 100000!; +ERROR: value overflows numeric format +SELECT 0!; + ?column? +---------- + 1 +(1 row) + +SELECT factorial(-4); + factorial +----------- + 1 +(1 row) + diff --git a/src/test/regress/sql/int4.sql b/src/test/regress/sql/int4.sql index a9e90a96c4..b00c9dea2a 100644 --- a/src/test/regress/sql/int4.sql +++ b/src/test/regress/sql/int4.sql @@ -114,10 +114,6 @@ CREATE TABLE INT4_TBL(f1 int4); SELECT int4 '1000' < int4 '999' AS false; -SELECT 4! AS twenty_four; - -SELECT !!3 AS six; - SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten; SELECT 2 + 2 / 2 AS three; diff --git a/src/test/regress/sql/numeric.sql b/src/test/regress/sql/numeric.sql index 41475a9a24..483c81b9cd 100644 --- a/src/test/regress/sql/numeric.sql +++ b/src/test/regress/sql/numeric.sql @@ -1111,3 +1111,13 @@ CREATE TABLE num_input_test (n1 numeric); (4232.820::numeric, 132.72000::numeric)) AS v(a, b); SELECT lcm(9999 * (10::numeric)^131068 + (10::numeric^131068 - 1), 2); -- overflow + +-- +-- Tests for factorial +-- +SELECT 4!; +SELECT !!3; +SELECT factorial(15); +SELECT 100000!; +SELECT 0!; +SELECT factorial(-4); -- 2.27.0