54 lines
2.5 KiB
PL/PgSQL
54 lines
2.5 KiB
PL/PgSQL
-- Test parse_price
|
|
set client_min_messages to warning;
|
|
create extension if not exists pgtap;
|
|
reset client_min_messages;
|
|
|
|
begin;
|
|
|
|
select plan(36);
|
|
|
|
set search_path to auth, numerus, public;
|
|
|
|
select has_function('numerus', 'parse_price', array ['text', 'integer']);
|
|
select function_lang_is('numerus', 'parse_price', array ['text', 'integer'], 'plpgsql');
|
|
select function_returns('numerus', 'parse_price', array ['text', 'integer'], 'integer');
|
|
select isnt_definer('numerus', 'parse_price', array ['text', 'integer']);
|
|
select volatility_is('numerus', 'parse_price', array ['text', 'integer'], 'immutable');
|
|
select function_privs_are('numerus', 'parse_price', array ['text', 'integer'], 'guest', array []::text[]);
|
|
select function_privs_are('numerus', 'parse_price', array ['text', 'integer'], 'invoicer', array ['EXECUTE']);
|
|
select function_privs_are('numerus', 'parse_price', array ['text', 'integer'], 'admin', array ['EXECUTE']);
|
|
select function_privs_are('numerus', 'parse_price', array ['text', 'integer'], 'authenticator', array []::text[]);
|
|
|
|
select is( parse_price('1.1', 2), 110 );
|
|
select is( parse_price('1.1', 3), 1100 );
|
|
select is( parse_price('0', 2), 0 );
|
|
select is( parse_price('0', 3), 0 );
|
|
select is( parse_price('0.01', 2), 1 );
|
|
select is( parse_price('0.001', 3), 1 );
|
|
select is( parse_price('0.1', 2), 10 );
|
|
select is( parse_price('0.01', 3), 10 );
|
|
select is( parse_price('1', 2), 100 );
|
|
select is( parse_price('0.1', 3), 100 );
|
|
select is( parse_price('10', 2), 1000 );
|
|
select is( parse_price('1', 3), 1000 );
|
|
select is( parse_price('23.23', 2), 2323 );
|
|
select is( parse_price('23.23', 3), 23230 );
|
|
select throws_ok( $$ select parse_price('234.234', 2) $$ );
|
|
select is( parse_price('234.234', 3), 234234 );
|
|
select throws_ok( $$ select parse_price('2345.2345', 2) $$ );
|
|
select throws_ok( $$ select parse_price('2345.2345', 3) $$ );
|
|
select is( parse_price('00000000000000001.100000000000000000000', 2), 110 );
|
|
select is( parse_price('00000000000000001.100000000000000000000', 3), 1100 );
|
|
select is( parse_price('00000000000000000.100000000000000000000', 2), 10 );
|
|
select is( parse_price('00000000000000000.100000000000000000000', 3), 100 );
|
|
select is( parse_price('00000000000123456.780000000000000000000', 2), 12345678 );
|
|
select is( parse_price('00000000000123456.789000000000000000000', 3), 123456789 );
|
|
select throws_ok( $$ select parse_price('1,1', 2) $$ );
|
|
select throws_ok( $$ select parse_price('1.1.1', 2) $$ );
|
|
select throws_ok( $$ select parse_price('a.b', 2) $$ );
|
|
|
|
select *
|
|
from finish();
|
|
|
|
rollback;
|