source: EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-inline-struct/test/inline.rb@ 439

Last change on this file since 439 was 439, checked in by coas-nagasima, 4 years ago

mrubyを2.1.1に更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 2.8 KB
Line 
1##
2# InlineStruct Test
3
4class InlineStructTest
5 def extra_method
6 :ok
7 end
8
9 def test_ivar_set
10 @var = :ivar
11 end
12
13 def test_ivar_get
14 @vat
15 end
16end
17
18assert('InlineStructTest#dup') do
19 obj = InlineStructTest.new(1)
20 assert_equal obj.to_s, 'fixnum'
21 assert_equal obj.dup.to_s, 'fixnum'
22end
23
24assert('InlineStructTest#clone') do
25 obj = InlineStructTest.new(1)
26 assert_equal obj.to_s, 'fixnum'
27 assert_equal obj.clone.to_s, 'fixnum'
28end
29
30assert('InlineStruct#object_id') do
31 obj1 = InlineStructTest.new(1)
32 obj2 = InlineStructTest.new(1)
33 assert_not_equal obj1, obj2
34 assert_not_equal obj1.object_id, obj2.object_id
35 assert_not_equal obj1.object_id, obj1.dup.object_id
36 assert_not_equal obj1.object_id, obj1.clone.object_id
37end
38
39assert('InlineStructTest#mutate (dup)') do
40 obj1 = InlineStructTest.new("foo")
41 assert_equal obj1.to_s, "string"
42 obj2 = obj1.dup
43 assert_equal obj2.to_s, "string"
44 obj1.mutate
45 assert_equal obj1.to_s, "mutate"
46 assert_equal obj2.to_s, "string"
47end
48
49assert('InlineStructTest#mutate (clone)') do
50 obj1 = InlineStructTest.new("foo")
51 assert_equal obj1.to_s, "string"
52 obj2 = obj1.clone
53 assert_equal obj2.to_s, "string"
54 obj1.mutate
55 assert_equal obj1.to_s, "mutate"
56 assert_equal obj2.to_s, "string"
57end
58
59assert('InlineStructTest#test_receive(string)') do
60 assert_equal InlineStructTest.test_receive(InlineStructTest.new('a')), true
61end
62
63assert('InlineStructTest#test_receive(float)') do
64 assert_equal InlineStructTest.test_receive(InlineStructTest.new(1.25)), false
65end
66
67assert('InlineStructTest#test_receive(invalid object)') do
68 assert_raise(TypeError) do
69 InlineStructTest.test_receive([])
70 end
71end
72
73assert('InlineStructTest#test_receive(string)') do
74 assert_equal InlineStructTest.test_receive_direct(InlineStructTest.new('a')), true
75end
76
77assert('InlineStructTest#test_receive(float)') do
78 assert_equal InlineStructTest.test_receive_direct(InlineStructTest.new(1.25)), false
79end
80
81assert('InlineStructTest#test_receive(invalid object)') do
82 assert_raise(TypeError) do
83 InlineStructTest.test_receive_direct([])
84 end
85end
86
87assert('InlineStructTest#extra_method') do
88 assert_equal InlineStructTest.new(1).extra_method, :ok
89end
90
91assert('InlineStructTest instance variable') do
92 obj = InlineStructTest.new(1)
93 assert_raise(ArgumentError) do
94 obj.test_ivar_set
95 end
96 assert_equal obj.test_ivar_get, nil
97end
98
99# 64-bit mode
100if InlineStructTest.length == 24
101 assert('InlineStructTest length [64 bit]') do
102 assert_equal InlineStructTest.length, 3 * 8
103 end
104end
105
106# 32-bit mode
107if InlineStructTest.length == 12
108 assert('InlineStructTest length [32 bit]') do
109 assert_equal InlineStructTest.length, 3 * 4
110 end
111end
112
113# 16-bit mode
114if InlineStructTest.length == 6
115 assert('InlineStructTest length [16 bit]') do
116 assert_equal InlineStructTest.length, 3 * 2
117 end
118end
Note: See TracBrowser for help on using the repository browser.