1 # frozen_string_literal: true
2
3 require "test_helper"
4
5
6 module Umu
7
8 module Test
9
10 module Library
11
12 module Class
13
14 module Product
15
16 class TupleTest < Minitest::Test
17 def setup
18 @interp = Api.setup_interpreter
19 end
20
21
22 def test_imeth_show
23 value = Api.eval_expr @interp, '(@Apple, "Aomori").show'
24 assert_instance_of VCA::String, value
25 assert_equal '(@Apple, "Aomori")', value.val
26 end
27
28
29 def test_imeth_to_s
30 value = Api.eval_expr @interp, '(@Apple, "Aomori").to-s'
31 assert_instance_of VCA::String, value
32 assert_equal '(Apple, Aomori)', value.val
33 end
34
35
36 def test_imess_equal
37 value = Api.eval_expr @interp, "(@Apple, 300).== (@Apple, 300)"
38 assert_instance_of VCA::Bool, value
39 assert_equal true, value.val
40
41 value = Api.eval_expr @interp, "(@Apple, 300).== 4"
42 assert_instance_of VCA::Bool, value
43 assert_equal false, value.val
44
45 value = Api.eval_expr @interp, "(@Apple, 300).== (@Banana, 300)"
46 assert_instance_of VCA::Bool, value
47 assert_equal false, value.val
48
49 value = Api.eval_expr @interp, "(@Apple, 300).== (@Apple, 500)"
50 assert_instance_of VCA::Bool, value
51 assert_equal false, value.val
52 end
53
54
55 def test_imess_less_than
56 value = Api.eval_expr @interp, "(@Apple, 300).< (@Banana, 300)"
57 assert_instance_of VCA::Bool, value
58 assert_equal true, value.val
59
60 value = Api.eval_expr @interp, "(@Apple, 300).< (@Apple, 500)"
61 assert_instance_of VCA::Bool, value
62 assert_equal true, value.val
63
64 assert_raises(X::TypeError) do
65 Api.eval_expr @interp, "(@Apple, 300).< 4"
66 end
67
68 value = Api.eval_expr @interp, "(@Apple, 300).< (@Apple, 300)"
69 assert_instance_of VCA::Bool, value
70 assert_equal false, value.val
71 end
72 end
73
74 end # Umu::Test::Library::Class::Product
75
76 end # Umu::Test::Library::Class
77
78 end # Umu::Test::Library
79
80 end # Umu::Test
81
82 end # Umu