/*=====
  testing script for function is_on_order
  (including a helper-function, bool_to_string)

  by: Sharon Tuttle
  last modified: 2016-02-07
=====*/

spool is_on_order_test_out.txt
set serveroutput on

/*===
  (note: the is_on_order tests use the following helper-function)
===*/

/*----------         
   funct_bool_to_string.sql
   last modified: 2016-02-07
----------*/

/*****
 why? because apparently you CAN'T easily return a boolean
 at the SQL*Plus level...?
*****/

/*****
    function: bool_to_string: boolean -> varchar2
    purpose: expects a boolean, and returns an equivalent
        string version (for top-level SQL*Plus use...!)

    examples: bool_to_string(TRUE) = 'TRUE'
              bool_to_string(FALSE) = 'FALSE'
*****/

create or replace function bool_to_string(bool_val boolean)
                           return varchar2 as
begin
    if bool_val then
        return 'TRUE';
    else
        return 'FALSE';
    end if;
end;
/
show errors

prompt
prompt *****************************************
prompt TESTING is_on_order (note: uses bool_to_string)
prompt *****************************************
prompt

prompt test passes if 0805343024 is shown on-order (returns true)
prompt ==========================================================

var on_order_status varchar2(5)
exec :on_order_status := bool_to_string(is_on_order('0805343024'))
print on_order_status

prompt
prompt test passes if 087150331X is shown NOT on-order (rets false)
prompt ==========================================================

exec :on_order_status := bool_to_string(is_on_order('087150331X'))
print on_order_status

prompt
prompt test passes if 1313131313 is shown NOT on-order (rets false)
prompt ==========================================================

exec :on_order_status := bool_to_string(is_on_order('1313131313'))
print on_order_status

spool off

-- end of is_on_order_test.sql