create or replace package ut_numeral# is procedure run; end ut_numeral#; / create or replace package body ut_numeral# is procedure test ( i_descn varchar2 ,i_exp varchar2 ,i_act varchar2 ) is begin if i_exp = i_act then dbms_output.put_line('SUCCESS: ' || i_descn); else dbms_output.put_line('FAILURE: ' || i_descn || ' - expected ' || nvl('' || i_exp, 'null') || ', but received ' || nvl('' || i_act, 'null')); end if; end test; procedure run is begin test(i_descn => 'test_1', i_exp => 'I', i_act => numeral#.to_roman(1 )); test(i_descn => 'test_2', i_exp => 'II', i_act => numeral#.to_roman(2 )); test(i_descn => 'test_3', i_exp => 'III', i_act => numeral#.to_roman(3 )); test(i_descn => 'test_4', i_exp => 'IV', i_act => numeral#.to_roman(4 )); test(i_descn => 'test_5', i_exp => 'V', i_act => numeral#.to_roman(5 )); test(i_descn => 'test_6', i_exp => 'VI', i_act => numeral#.to_roman(6 )); test(i_descn => 'test_9', i_exp => 'IX', i_act => numeral#.to_roman(9 )); test(i_descn => 'test_27', i_exp => 'XXVII', i_act => numeral#.to_roman(27 )); test(i_descn => 'test_48', i_exp => 'XLVIII', i_act => numeral#.to_roman(48 )); test(i_descn => 'test_59', i_exp => 'LIX', i_act => numeral#.to_roman(59 )); test(i_descn => 'test_93', i_exp => 'XCIII', i_act => numeral#.to_roman(93 )); test(i_descn => 'test_141', i_exp => 'CXLI', i_act => numeral#.to_roman(141 )); test(i_descn => 'test_163', i_exp => 'CLXIII', i_act => numeral#.to_roman(163 )); test(i_descn => 'test_402', i_exp => 'CDII', i_act => numeral#.to_roman(402 )); test(i_descn => 'test_575', i_exp => 'DLXXV', i_act => numeral#.to_roman(575 )); test(i_descn => 'test_911', i_exp => 'CMXI', i_act => numeral#.to_roman(911 )); test(i_descn => 'test_1024', i_exp => 'MXXIV', i_act => numeral#.to_roman(1024)); test(i_descn => 'test_3000', i_exp => 'MMM', i_act => numeral#.to_roman(3000)); end run; end ut_numeral#; / begin ut_numeral#.run; end; /