File: basic_test.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#6
  module: Test#8
  class: BasicTest#10
inherits from
  Test ( Minitest )
has properties
method: setup #11
method: test_that_it_has_a_version_number #16
method: test_constant #21
method: test_variable_bool #29
method: test_variable_fun #37
method: test_send_expression #44
method: test_infix_expression #52
method: test_declare_value #60
method: test_declare_fun_fact #69

Class Hierarchy

Object ( Builtin-Module )
Test ( Minitest )
  BasicTest ( Umu::Test ) #10

Code

   1  # frozen_string_literal: true
   2 
   3  require "test_helper"
   4 
   5 
   6  module Umu
   7 
   8  module Test
   9 
  10  class BasicTest < Minitest::Test
  11      def setup
  12          @interp = Api.setup_interpreter
  13      end
  14 
  15 
  16      def test_that_it_has_a_version_number
  17          refute_nil VERSION
  18      end
  19 
  20 
  21      def test_constant
  22          value = Api.eval_expr @interp, "3"
  23 
  24          assert_instance_of  VCAN::Int, value
  25          assert_equal        3,         value.val
  26      end
  27 
  28 
  29      def test_variable_bool
  30          value = Api.eval_expr @interp, "TRUE"
  31 
  32          assert_instance_of  VCA::Bool, value
  33          assert_equal        true,      value.val
  34      end
  35 
  36 
  37      def test_variable_fun
  38          value = Api.eval_expr @interp, "(+)"
  39 
  40          assert_instance_of  VC::Fun, value
  41      end
  42 
  43 
  44      def test_send_expression
  45          value = Api.eval_expr @interp, "3.+ 4"
  46 
  47          assert_instance_of  VCAN::Int, value
  48          assert_equal        7,         value.val
  49      end
  50 
  51 
  52      def test_infix_expression
  53          value = Api.eval_expr @interp, "3 + 4"
  54 
  55          assert_instance_of  VCAN::Int, value
  56          assert_equal        7,         value.val
  57      end
  58 
  59 
  60      def test_declare_value
  61          interp_1 = Api.eval_decls @interp,  "val x=3 val y=4"
  62          value    = Api.eval_expr  interp_1, "x + y"
  63 
  64          assert_instance_of  VCAN::Int, value
  65          assert_equal        7,         value.val
  66      end
  67 
  68 
  69      def test_declare_fun_fact
  70          interp_1 = Api.eval_decls @interp,  <<-EOS
  71              fun rec fact = x -> (
  72                  if x <= 1 then
  73                      1   
  74                  else
  75                      x * fact (x - 1)
  76              )
  77              EOS
  78 
  79          value = Api.eval_expr  interp_1, "fact 3"
  80          assert_instance_of  VCAN::Int, value
  81          assert_equal        6,         value.val
  82 
  83          value = Api.eval_expr  interp_1, "fact 4"
  84          assert_instance_of  VCAN::Int, value
  85          assert_equal        24,        value.val
  86      end
  87  end
  88 
  89  end # Umu::Test
  90 
  91  end # Umu