-- packages/acs-events/sql/postgresql/test/utest-create.sql
--
-- Regression tests for timespan API
-- Separated from time_interval-test.sql
--
-- @author jowell@jsabino.com
--
-- @creation-date 2001-06-26
--
-- $Id: utest-create.sql,v 1.4 2018/01/31 20:43:24 gustafn Exp $
-- /*
-- GNU General Public License for utPLSQL
--
-- Copyright (C) 2000
-- Steven Feuerstein, steven@stevenfeuerstein.com
-- Chris Rimmer, chris@sunset.force9.co.uk
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program (see license.txt); if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-- */
-- JS: Ported/copied shamelessly from the utplsql package.
-- JS: This package is grossly incomplete, but quite useful (for me, anyways).
-- added
select define_function_args('ut_assert__expected','msg,check_this,against_this');
--
-- procedure ut_assert__expected/3
--
CREATE OR REPLACE FUNCTION ut_assert__expected(
expected__msg varchar,
expected__check_this varchar,
expected__against_this varchar
) RETURNS varchar AS $$
DECLARE
BEGIN
return expected__msg ||
': expected ' ||
'''' ||
expected__against_this ||
'''' ||
', got ' ||
'''' ||
expected__check_this ||
'''';
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__this','msg,check_this,null_ok;FALSE,raise_exc;FALSE');
--
-- procedure ut_assert__this/4
--
CREATE OR REPLACE FUNCTION ut_assert__this(
this__msg varchar,
this__check_this boolean,
this__null_ok boolean, -- default FALSE
this__raise_exc boolean -- default FALSE
) RETURNS integer AS $$
DECLARE
BEGIN
-- We always output the message (usually the result of the test)
raise notice '%',this__msg;
if not this__check_this
or ( this__check_this is null
and not this__null_ok )
then
-- Raise an exception if a failure
if this__raise_exc
then
-- We should make the message more informative.
raise exception 'FAILURE';
else
raise notice 'FAILURE, but forced to continue.';
end if;
end if;
-- Continue if success;
return 0;
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__this/2
--
CREATE OR REPLACE FUNCTION ut_assert__this(
this__msg varchar,
this__check_this boolean
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this(this_msg,this_check_this,'f','f');
END;
$$ LANGUAGE plpgsql;
-- added
--
-- procedure ut_assert__eq/5
--
CREATE OR REPLACE FUNCTION ut_assert__eq(
eq__msg varchar,
eq__check_this varchar,
eq__against_this varchar,
eq__null_ok boolean, -- default FALSE,
eq__raise_exc boolean -- defaultFALSE
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this (
ut_assert__expected (eq__msg, eq__check_this, eq__against_this),
eq__check_this = eq__against_this,
eq__null_ok,
eq__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__eq/3
--
CREATE OR REPLACE FUNCTION ut_assert__eq(
eq__msg varchar,
eq__check_this varchar,
eq__against_this varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__eq(eq__msg,eq__check_this,eq__against_this,'f','f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__b2v','bool_exp');
--
-- procedure ut_assert__b2v/1
--
CREATE OR REPLACE FUNCTION ut_assert__b2v(
bool_exp boolean
) RETURNS varchar AS $$
DECLARE
BEGIN
if bool_exp
then
return 'true';
else if not bool_exp
then
return 'false';
else
return 'null';
end if;
end if;
END;
$$ LANGUAGE plpgsql;
--
-- procedure ut_assert__eq/5
--
CREATE OR REPLACE FUNCTION ut_assert__eq(
eq__msg varchar,
eq__check_this boolean,
eq__against_this boolean,
eq__null_ok boolean, -- default false
eq__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this (
ut_assert__expected (
eq__msg,
ut_assert__b2v(eq__check_this),
ut_assert__b2v(eq__against_this)
),
ut_assert__b2v (eq__check_this) = ut_assert__b2v (eq__against_this),
eq__null_ok,
eq__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__eq/3
--
CREATE OR REPLACE FUNCTION ut_assert__eq(
eq__msg varchar,
eq__check_this boolean,
eq__against_this boolean
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__eq(eq__msg,eq__check_this,eq__against_this,'f','f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__eq','msg,check_this,against_this,null_ok;false,raise_exc;false');
--
-- procedure ut_assert__eq/5
--
CREATE OR REPLACE FUNCTION ut_assert__eq(
eq__msg varchar,
eq__check_this timestamptz,
eq__against_this timestamptz,
eq__null_ok boolean, -- default false
eq__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
c_format constant varchar := 'MONTH DD, YYYY HH24MISS';
v_check varchar;
v_against varchar;
BEGIN
v_check := to_char (eq__check_this, c_format);
v_against := to_char (eq__against_this, c_format);
return ut_assert__this (
ut_assert__expected (eq__msg, v_check, v_against),
v_check = v_against,
eq__null_ok,
eq__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__eq/3
--
CREATE OR REPLACE FUNCTION ut_assert__eq(
eq__msg varchar,
eq__check_this timestamptz,
eq__against_this timestamptz
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__eq(eq__msg,eq__check_this,eq__against_this,'f','f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__ieqminus','msg,query1,query2,minus_desc,raise_exc');
--
-- procedure ut_assert__ieqminus/5
--
CREATE OR REPLACE FUNCTION ut_assert__ieqminus(
ieqminus__msg varchar,
ieqminus__query1 varchar,
ieqminus__query2 varchar,
ieqminus__minus_desc varchar,
ieqminus__raise_exc boolean
) RETURNS varchar AS $$
DECLARE
v_query varchar;
rec_tableminus record;
v_eq boolean := 't';
BEGIN
v_query := ' ( ' ||
ieqminus__query1 ||
' except ' ||
ieqminus__query2 ||
' ) ' ||
' union ' ||
' ( ' ||
ieqminus__query2 ||
' except ' ||
ieqminus__query1 ||
' ) ';
for rec_tableminus in execute v_query;
-- Will not go in this loop if v_query result is null, so
-- we need to set the default value of v_eq to true.
if found
then
v_eq := 'f';
end if;
-- One is enough
exit;
end loop;
return ut_assert__this (
ut_assert__expected (ieqminus__msg || ' ' || ieqminus__minus_desc,
ieqminus__query1,
ieqminus__query2
),
v_eq,
'f',
ieqminus__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__eqtable','msg,check_this,against_this,check_where;null,against_where;null,raise_exc;false');
--
-- procedure ut_assert__eqtable/6
--
CREATE OR REPLACE FUNCTION ut_assert__eqtable(
eqtable__msg varchar,
eqtable__check_this varchar,
eqtable__against_this varchar,
eqtable__check_where varchar, -- default null
eqtable__against_where varchar, -- default null
eqtable__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__ieqminus (eqtable__msg,
'SELECT * FROM ' || eqtable__check_this || ' WHERE ' ||
coalesce (eqtable__check_where, '1=1'),
'SELECT * FROM ' || eqtable__against_this || ' WHERE ' ||
coalesce (eqtable__against_where, '1=1'),
'Table Equality',
eqtable__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__eqtable/3
--
CREATE OR REPLACE FUNCTION ut_assert__eqtable(
eqtable__msg varchar,
eqtable__check_this varchar,
eqtable__against_this varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__eqtable(eqtable__msg,eqtable__check_this,eqtable__against_this,null,null,'f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__eqtabcount','msg,check_this,against_this,check_where;null,against_where;null,raise_exc;false');
--
-- procedure ut_assert__eqtabcount/6
--
CREATE OR REPLACE FUNCTION ut_assert__eqtabcount(
eqtabcount__msg varchar,
eqtabcount__check_this varchar,
eqtabcount__against_this varchar,
eqtabcount__check_where varchar, -- default null
eqtabcount__against_where varchar, -- default null
eqtabcount__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__ieqminus (eqtabcount__msg,
'SELECT COUNT(*) FROM ' || eqtabcount__check_this || ' WHERE ' ||
coalesce (eqtabcount__check_where, '1=1'),
'SELECT COUNT(*) FROM ' || eqtabcount__against_this || ' WHERE ' ||
coalesce (eqtabcount__against_where, '1=1'),
'Table Count Equality',
eqtabcount__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__eqtabcount/3
--
CREATE OR REPLACE FUNCTION ut_assert__eqtabcount(
eqtabcount__msg varchar,
eqtabcount__check_this varchar,
eqtabcount__against_this varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__eqtabcount(eqtabcount__msg,eqtabcount__check_this,eqtabcount__against_this,null,null,'f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__eqquery','msg,check_this,against_this,raise_exc;null');
--
-- procedure ut_assert__eqquery/4
--
CREATE OR REPLACE FUNCTION ut_assert__eqquery(
eqquery__msg varchar,
eqquery__check_this varchar,
eqquery__against_this varchar,
eqquery__raise_exc boolean -- default null
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__ieqminus (eqquery__msg,
eqquery__check_this,
eqquery__against_this,
'Query Equality',
eqquery__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__eqquery/3
--
CREATE OR REPLACE FUNCTION ut_assert__eqquery(
eqquery__msg varchar,
eqquery__check_this varchar,
eqquery__against_this varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__eqquery(eqquery__msg,eqquery__check_this,eqquery__against_this,'f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__isnotnull','msg,check_this,null_ok;false,raise_exc;false');
--
-- procedure ut_assert__isnotnull/4
--
CREATE OR REPLACE FUNCTION ut_assert__isnotnull(
isnotnull__msg varchar,
isnotnull__check_this varchar,
isnotnull__null_ok boolean, -- default false
isnotnull__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this (
'IS NOT NULL: ' || isnotnull__msg,
isnotnull__check_this IS NOT NULL,
isnotnull__null_ok,
isnotnull__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__isnotnull/2
--
CREATE OR REPLACE FUNCTION ut_assert__isnotnull(
isnotnull__msg varchar,
isnotnull__check_this varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__isnotnull(isnotnull__msg,isnotnull__check_this,'f','f');
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('ut_assert__isnull','msg,check_this,null_ok;false,raise_exc;false');
--
-- procedure ut_assert__isnull/4
--
CREATE OR REPLACE FUNCTION ut_assert__isnull(
isnull__msg varchar,
isnull__check_this varchar,
isnull__null_ok boolean, -- default false
isnull__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this (
'IS NULL: ' || isnull__msg,
isnull__check_this IS NULL,
isnull__null_ok,
isnull__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__isnull/2
--
CREATE OR REPLACE FUNCTION ut_assert__isnull(
isnull__msg varchar,
isnull__check_this varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__isnull(isnull__msg,isnull__check_this,'f','f');
END;
$$ LANGUAGE plpgsql;
--
-- procedure ut_assert__isnotnull/4
--
CREATE OR REPLACE FUNCTION ut_assert__isnotnull(
isnotnull__msg varchar,
isnotnull__check_this boolean,
isnotnull__null_ok boolean, -- default false
isnotnull__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this (
'IS NOT NULL: ' || isnotnull__msg,
isnotnull__check_this IS NOT NULL,
isnotnull__null_ok,
isnotnull__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__isnotnull/2
--
CREATE OR REPLACE FUNCTION ut_assert__isnotnull(
isnotnull__msg varchar,
isnotnull__check_this boolean
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__isnotnull(isnotnull__msg,isnotnull__check_this,'f','f');
END;
$$ LANGUAGE plpgsql;
--
-- procedure ut_assert__isnull/4
--
CREATE OR REPLACE FUNCTION ut_assert__isnull(
isnull__msg varchar,
isnull__check_this boolean,
isnull__null_ok boolean, -- default false
isnull__raise_exc boolean -- default false
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__this (
'IS NULL: ' || isnull__msg,
isnull__check_this IS NULL,
isnull__null_ok,
isnull__raise_exc
);
END;
$$ LANGUAGE plpgsql;
-- Overload for calls with default values
--
-- procedure ut_assert__isnull/2
--
CREATE OR REPLACE FUNCTION ut_assert__isnull(
isnull__msg varchar,
isnull__check_this boolean
) RETURNS integer AS $$
DECLARE
BEGIN
return ut_assert__isnull(isnull__msg,isnull__check_this,'f','f');
END;
$$ LANGUAGE plpgsql;