File: grammar_test.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#6
  module: Test#8
  module: Grammar#10
  class: GrammarTest#12
inherits from
  Test ( Minitest )
has properties
method: setup #21
method: test_empty_declaration #26
method: test_empty_expression #33
method: test_single_declaration #40
method: test_some_declarations #47
method: test_expression #54
method: test_declarations_followed_by_expression #61
method: test_expression_followed_by_declaration #73
method: test_some_expressions #86

Class Hierarchy

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  class GrammarTest < Minitest::Test
  13  =begin
  14  <entry> ::= <statement> { ";;" <statement> } ;
  15 
  16  <statement> ::=
  17      { <md-module-declaration> }
  18    | <expression>
  19    ;
  20  =end
  21      def setup
  22          @interp = Api.setup_interpreter
  23      end
  24 
  25 
  26      def test_empty_declaration
  27          assert (
  28              Api.eval_decls @interp, ""
  29          )
  30      end
  31 
  32 
  33      def test_empty_expression
  34          assert_nil (
  35              Api.eval_expr @interp, ""
  36          )
  37      end
  38 
  39 
  40      def test_single_declaration
  41          assert (
  42              Api.eval_decls @interp, "val x = 3"
  43          )
  44      end
  45 
  46 
  47      def test_some_declarations
  48          assert (
  49              Api.eval_decls @interp, "val x = 3 val y = 4"
  50          )
  51      end
  52 
  53 
  54      def test_expression
  55          value = Api.eval_expr @interp, "3"
  56          assert_instance_of VCAN::Int, value
  57          assert_equal       3,         value.val
  58      end
  59 
  60 
  61      def test_declarations_followed_by_expression
  62          value = Api.eval_expr @interp, <<-EOS
  63              val x = 3
  64              val y = 4
  65              ;;
  66              x + y
  67              EOS
  68          assert_instance_of VCAN::Int, value
  69          assert_equal       7,         value.val
  70      end
  71 
  72 
  73      def test_expression_followed_by_declaration
  74          interp = Api.eval_decls @interp, <<-EOS
  75              3
  76              ;;
  77              val y = 4
  78              EOS
  79 
  80          value = Api.eval_expr interp, "y"
  81          assert_instance_of VCAN::Int, value
  82          assert_equal       4,         value.val
  83      end
  84 
  85 
  86      def test_some_expressions
  87          value = Api.eval_expr @interp, <<-EOS
  88                  3
  89                  ;;
  90                  4
  91              EOS
  92 
  93          assert_instance_of VCAN::Int, value
  94          assert_equal       4,         value.val
  95      end
  96  end
  97 
  98  end # Umu::Test::Grammar
  99 
 100  end # Umu::Test
 101 
 102  end # Umu