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 Entry
17
18 class DoExpressionTest < Minitest::Test
19 =begin
20 <do-expression> ::= DO "(" { "!" <expression> } "}" ;
21 =end
22
23
24 def setup
25 @interp = Api.setup_interpreter
26 end
27
28
29 def test_do_expression
30 value = Api.eval_expr @interp, "do ()"
31 assert_instance_of VC::Unit, value
32
33 interp = Api.eval_decls @interp, "val rx = ref 3"
34 value = Api.eval_expr interp, <<-EOS
35 do (
36 ! rx := !!rx + 1
37 ! !!rx
38 )
39 EOS
40 assert_instance_of VCAN::Int, value
41 assert_equal 4, value.val
42 end
43 end
44
45 end # Umu::Test::Grammar::CoreLanguage::Expression::Entry
46
47 end # Umu::Test::Grammar::CoreLanguage::Expression
48
49 end # Umu::Test::Grammar::CoreLanguage
50
51 end # Umu::Test::Grammar
52
53 end # Umu::Test
54
55 end # Umu