create or replace package ut_complement#
is
  procedure run;
end ut_complement#;
/
 
create or replace package body ut_complement#
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_rna_complement_of_cytosine_is_guanine', i_exp => 'G'            , i_act => complement#.of_dna('C'            ));
    test(i_descn => 'test_rna_complement_of_guanine_is_cytosine', i_exp => 'C'            , i_act => complement#.of_dna('G'            ));
    test(i_descn => 'test_rna_complement_of_thymine_is_adenine' , i_exp => 'A'            , i_act => complement#.of_dna('T'            ));
    test(i_descn => 'test_rna_complement_of_adenine_is_uracil'  , i_exp => 'U'            , i_act => complement#.of_dna('A'            ));
    test(i_descn => 'test_rna_complement'                       , i_exp => 'UGCACCAGAAUU' , i_act => complement#.of_dna('ACGTGGTCTTAA' ));
    test(i_descn => 'test_dna_complement_of_cytosine_is_guanine', i_exp => 'G'            , i_act => complement#.of_rna('C'            ));
    test(i_descn => 'test_dna_complement_of_guanine_is_cytosine', i_exp => 'C'            , i_act => complement#.of_rna('G'            ));
    test(i_descn => 'test_dna_complement_of_uracil_is_adenine'  , i_exp => 'A'            , i_act => complement#.of_rna('U'            ));
    test(i_descn => 'test_dna_complement_of_adenine_is_thymine' , i_exp => 'T'            , i_act => complement#.of_rna('A'            ));
    test(i_descn => 'test_dna_complement'                       , i_exp => 'ACTTGGGCTGTAC', i_act => complement#.of_rna('UGAACCCGACAUG'));
  end run;
end ut_complement#;
/
 
begin
  ut_complement#.run;
end;
/