diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2020-06-18 08:41:31 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2020-06-18 08:41:31 +0200 |
commit | 9d402c73ade412bdeb9064c81fc4ed071c4e93f8 (patch) | |
tree | 3d93e63346682afa1bf742de663a5770ce5713f6 /src | |
parent | 2b2a070d98b2f2c7ecc031e582cfefa400316ce3 (diff) | |
download | postgresql-9d402c73ade412bdeb9064c81fc4ed071c4e93f8.tar.gz postgresql-9d402c73ade412bdeb9064c81fc4ed071c4e93f8.zip |
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.
Discussion: https://www.postgresql.org/message-id/flat/6ce1df0e-86a3-e544-743a-f357ff663f68%402ndquadrant.com
Diffstat (limited to 'src')
-rw-r--r-- | src/test/regress/expected/int4.out | 12 | ||||
-rw-r--r-- | src/test/regress/expected/numeric.out | 41 | ||||
-rw-r--r-- | src/test/regress/sql/int4.sql | 4 | ||||
-rw-r--r-- | src/test/regress/sql/numeric.sql | 11 |
4 files changed, 52 insertions, 16 deletions
diff --git a/src/test/regress/expected/int4.out b/src/test/regress/expected/int4.out index c384af18ee8..77f43739a7c 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 c7fe63d0374..b255be7c852 100644 --- a/src/test/regress/expected/numeric.out +++ b/src/test/regress/expected/numeric.out @@ -2315,3 +2315,44 @@ 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 -4!; + ?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 a9e90a96c4c..b00c9dea2a6 100644 --- a/src/test/regress/sql/int4.sql +++ b/src/test/regress/sql/int4.sql @@ -114,10 +114,6 @@ SELECT int2 '2' * int4 '2' = int4 '16' / int2 '4' AS true; 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 41475a9a245..1332a9cf07a 100644 --- a/src/test/regress/sql/numeric.sql +++ b/src/test/regress/sql/numeric.sql @@ -1111,3 +1111,14 @@ FROM (VALUES (0::numeric, 0::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 -4!; +SELECT factorial(-4); |