File: core_language/expression/atomic/lambda_expression_test.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#6
  module: Test#8
  module: Grammar#10
  module: CoreLanguage#12
  module: Expression#14
  module: Atomic#16
  class: LambdaExpressionTest#18
inherits from
  Test ( Minitest )
has properties
method: setup #29
method: test_with_single_argument #34
method: test_with_some_argument #44
method: test_with_emptye_declaration #54
method: test_with_single_declaration #64
method: test_with_some_declarations #74

Code

   1  # frozen_string_literal: true
   2 
   3  require "test_helper"
   4 
   5 
   6  module Umu
   7 
   8  module Test
   9 
  10  module Grammar
  11 
  12  module CoreLanguage
  13 
  14  module Expression
  15 
  16  module Atomic
  17 
  18  class LambdaExpressionTest < Minitest::Test
  19  =begin
  20  <lambda-expression> ::=
  21      "{" <pattern> { <pattern> } "->"
  22          <expression> 
  23          [ WHERE { declaration> } ]
  24      "}"
  25      ;
  26  =end
  27 
  28 
  29      def setup
  30          @interp = Api.setup_interpreter
  31      end
  32 
  33 
  34      def test_with_single_argument
  35          value = Api.eval_expr @interp, "{ x -> x }"
  36          assert_instance_of  VC::Fun, value
  37 
  38          value = Api.eval_expr @interp, "{ x -> x } 1"
  39          assert_instance_of  VCAN::Int, value
  40          assert_equal        1,         value.val
  41      end
  42 
  43 
  44      def test_with_some_argument
  45          value = Api.eval_expr @interp, "{ x y -> x + y }"
  46          assert_instance_of  VC::Fun, value
  47 
  48          value = Api.eval_expr @interp, "{ x y -> x + y } 3 4"
  49          assert_instance_of  VCAN::Int, value
  50          assert_equal        7,         value.val
  51      end
  52 
  53 
  54      def test_with_emptye_declaration
  55          value = Api.eval_expr @interp, "{ x -> x + 4 where }"
  56          assert_instance_of  VC::Fun, value
  57 
  58          value = Api.eval_expr @interp, "{ x -> x + 4 where } 3"
  59          assert_instance_of  VCAN::Int, value
  60          assert_equal        7,         value.val
  61      end
  62 
  63 
  64      def test_with_single_declaration
  65          value = Api.eval_expr @interp, "{ x -> x + y where val y=4 }"
  66          assert_instance_of  VC::Fun, value
  67 
  68          value = Api.eval_expr @interp, "{ x -> x + y where val y=4 } 3"
  69          assert_instance_of  VCAN::Int, value
  70          assert_equal        7,         value.val
  71      end
  72 
  73 
  74      def test_with_some_declarations
  75          value = Api.eval_expr @interp, <<-EOS
  76              { x -> x + y + z where val y=4 val z=5 }
  77              EOS
  78          assert_instance_of  VC::Fun, value
  79 
  80          value = Api.eval_expr @interp, <<-EOS
  81              { x -> x + y + z where val y=4 val z=5 } 3
  82              EOS
  83          assert_instance_of  VCAN::Int, value
  84          assert_equal        12,        value.val
  85      end
  86  end
  87 
  88  end # Umu::Test::Grammar::CoreLanguage::Expression::Atomic
  89 
  90  end # Umu::Test::Grammar::CoreLanguage::Expression
  91 
  92  end # Umu::Test::Grammar::CoreLanguage
  93 
  94  end # Umu::Test::Grammar
  95 
  96  end # Umu::Test
  97 
  98  end # Umu