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 Atom
15
16 class StringTest < Minitest::Test
17 def setup
18 @interp = Api.setup_interpreter
19 end
20
21
22 def test_imess_show
23 value = Api.eval_expr @interp, '"Apple".show'
24 assert_instance_of VCA::String, value
25 assert_equal '"Apple"', value.val
26 end
27
28
29 def test_imess_to_s
30 value = Api.eval_expr @interp, '"Apple".to-s'
31 assert_instance_of VCA::String, value
32 assert_equal 'Apple', value.val
33 end
34
35
36 def test_imess_less_than
37 value = Api.eval_expr @interp, '"Apple".< "Banana"'
38 assert_instance_of VCA::Bool, value
39 assert_equal true, value.val
40
41 value = Api.eval_expr @interp, '"Apple".< "Apple"'
42 assert_instance_of VCA::Bool, value
43 assert_equal false, value.val
44 end
45
46
47 def test_panic
48 assert_raises(X::Panic) do
49 Api.eval_expr @interp, '"Foo".panic!'
50 end
51 end
52
53
54 def test_imess_append
55 value = Api.eval_expr @interp, '"Apple".^ "Banana"'
56 assert_instance_of VCA::String, value
57 assert_equal 'AppleBanana', value.val
58 end
59
60
61 def test_parameter_of_relation_operator_should_be_a_string
62 assert_raises(X::TypeError) do
63 Api.eval_expr @interp, '"Apple".< ()'
64 end
65
66 assert_raises(X::TypeError) do
67 Api.eval_expr @interp, '"Apple".< 3'
68 end
69
70 assert_raises(X::TypeError) do
71 Api.eval_expr @interp, '"Apple".<= ()'
72 end
73
74 assert_raises(X::TypeError) do
75 Api.eval_expr @interp, '"Apple".<= 4'
76 end
77 end
78 end
79
80 end # Umu::Test::Library::Class::Atom
81
82 end # Umu::Test::Library::Class
83
84 end # Umu::Test::Library
85
86 end # Umu::Test
87
88 end # Umu