home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / SmallEiffel 0.3.3 / SmallEiffel 68k / lib_test / test_evm.e < prev    next >
Encoding:
Text File  |  1996-06-13  |  2.2 KB  |  86 lines  |  [TEXT/EDIT]

  1. -- Part of SmallEiffel -- Read DISCLAIMER file -- Copyright (C) 
  2. -- Dominique COLNET and Suzanne COLLIN -- colnet@loria.fr
  3. --
  4. class TEST_EVM
  5.    --
  6.    -- This is a very important test for the portability 
  7.    -- of the SmallEiffel interpretor (command `eval').
  8.    -- 
  9.  
  10. creation make
  11.  
  12. feature
  13.    
  14.    make is
  15.       local
  16.      evm: EVAL_VIRTUAL_MACHINE;
  17.       do
  18.      evm := eval_virtual_machine;
  19.      evm.create;
  20.      is_true(evm.stack_empty);
  21.      evm.push_integer(1);
  22.      is_true(evm.top_integer = 1);
  23.      is_true(evm.get_integer(evm.top_adr) = 1);
  24.      evm.pop;
  25.      evm.push_integer(1);
  26.      is_true(evm.top_integer = 1);
  27.      is_true(evm.get_integer(evm.top_adr) = 1);
  28.      evm.push_integer(-1);
  29.      is_true(evm.top_integer = -1);
  30.      is_true(evm.get_integer(evm.top_adr) = -1);
  31.      evm.push_character('a');
  32.      is_true(evm.top_character = 'a');
  33.      is_true(evm.get_character(evm.top_adr) = 'a');
  34.      evm.push_real(3.5);
  35.      is_true(evm.top_real = 3.5);
  36.      is_true(evm.get_real(evm.top_adr) = 3.5);
  37.      evm.push_boolean(true);
  38.      is_true(evm.top_boolean);
  39.      is_true(evm.get_boolean(evm.top_adr));
  40.      evm.push_double((7.7887).to_double);
  41.      is_true(evm.top_double = (7.7887).to_double);
  42.      is_true(evm.get_double(evm.top_adr) = (7.7887).to_double);
  43.  
  44.      evm.push_any(Current);
  45.      is_true(evm.top_any = Current);
  46.      is_true(evm.get_any(evm.top_adr) = Current);
  47.      ----------------- TIP TOP :-)
  48.      evm.pop;
  49.      is_true(evm.top_double = (7.7887).to_double);
  50.      is_true(evm.get_double(evm.top_adr) = (7.7887).to_double);
  51.  
  52.      evm.pop;
  53.      is_true(evm.top_boolean);
  54.      is_true(evm.get_boolean(evm.top_adr));
  55.      evm.pop;
  56.      is_true(evm.top_real = 3.5);
  57.      is_true(evm.get_real(evm.top_adr) = 3.5);
  58.      evm.pop;
  59.      is_true(evm.top_character = 'a');
  60.      is_true(evm.get_character(evm.top_adr) = 'a');
  61.      evm.pop;
  62.      is_true(evm.top_integer = -1);
  63.      is_true(evm.get_integer(evm.top_adr) = -1);
  64.      evm.pop;
  65.      is_true(evm.top_integer = 1);
  66.      is_true(evm.get_integer(evm.top_adr) = 1);
  67.      evm.pop;
  68.      is_true(evm.stack_empty);
  69.       end;
  70.  
  71.    is_true(b: BOOLEAN) is
  72.       do
  73.      cpt := cpt + 1;
  74.      if not b then
  75.         std_output.put_string("TEST_EVM: ERROR Test # ");
  76.         std_output.put_integer(cpt);
  77.         std_output.put_string("%N");
  78.      else
  79.         -- std_output.put_string("Yes%N");
  80.      end;
  81.       end;
  82.    
  83.    cpt: INTEGER;
  84.  
  85. end -- class TEST_EVM
  86.