File: inline.rb

package info (click to toggle)
mruby 3.4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,584 kB
  • sloc: ansic: 51,933; ruby: 29,510; yacc: 7,077; cpp: 517; makefile: 51; sh: 42
file content (118 lines) | stat: -rw-r--r-- 2,852 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
##
# InlineStruct Test

class InlineStructTest
  def extra_method
    :ok
  end

  def test_ivar_set
    @var = :ivar
  end

  def test_ivar_get
    @vat
  end
end

assert('InlineStructTest#dup') do
  obj = InlineStructTest.new(1)
  assert_equal obj.to_s, 'fixnum'
  assert_equal obj.dup.to_s, 'fixnum'
end

assert('InlineStructTest#clone') do
  obj = InlineStructTest.new(1)
  assert_equal obj.to_s, 'fixnum'
  assert_equal obj.clone.to_s, 'fixnum'
end

assert('InlineStruct#object_id') do
  obj1 = InlineStructTest.new(1)
  obj2 = InlineStructTest.new(1)
  assert_not_equal obj1, obj2
  assert_not_equal obj1.object_id, obj2.object_id
  assert_not_equal obj1.object_id, obj1.dup.object_id
  assert_not_equal obj1.object_id, obj1.clone.object_id
end

assert('InlineStructTest#mutate (dup)') do
  obj1 = InlineStructTest.new("foo")
  assert_equal obj1.to_s, "string"
  obj2 = obj1.dup
  assert_equal obj2.to_s, "string"
  obj1.mutate
  assert_equal obj1.to_s, "mutate"
  assert_equal obj2.to_s, "string"
end

assert('InlineStructTest#mutate (clone)') do
  obj1 = InlineStructTest.new("foo")
  assert_equal obj1.to_s, "string"
  obj2 = obj1.clone
  assert_equal obj2.to_s, "string"
  obj1.mutate
  assert_equal obj1.to_s, "mutate"
  assert_equal obj2.to_s, "string"
end

assert('InlineStructTest#test_receive(string)') do
  assert_equal InlineStructTest.test_receive(InlineStructTest.new('a')), true
end

assert('InlineStructTest#test_receive(float)') do
  assert_equal InlineStructTest.test_receive(InlineStructTest.new(1.25)), false
end

assert('InlineStructTest#test_receive(invalid object)') do
  assert_raise(TypeError) do
    InlineStructTest.test_receive([])
  end
end

assert('InlineStructTest#test_receive(string)') do
  assert_equal InlineStructTest.test_receive_direct(InlineStructTest.new('a')), true
end

assert('InlineStructTest#test_receive(float)') do
  assert_equal InlineStructTest.test_receive_direct(InlineStructTest.new(1.25)), false
end

assert('InlineStructTest#test_receive(invalid object)') do
  assert_raise(TypeError) do
    InlineStructTest.test_receive_direct([])
  end
end

assert('InlineStructTest#extra_method') do
  assert_equal InlineStructTest.new(1).extra_method, :ok
end

assert('InlineStructTest instance variable') do
  obj = InlineStructTest.new(1)
  assert_raise(ArgumentError) do
    obj.test_ivar_set
  end
  assert_equal obj.test_ivar_get, nil
end

# 64-bit mode
if InlineStructTest.length == 24
  assert('InlineStructTest length [64-bit]') do
    assert_equal InlineStructTest.length, 3 * 8
  end
end

# 32-bit mode
if InlineStructTest.length == 12
  assert('InlineStructTest length [32-bit]') do
    assert_equal InlineStructTest.length, 3 * 4
  end
end

# 16-bit mode
if InlineStructTest.length == 6
  assert('InlineStructTest length [16-bit]') do
    assert_equal InlineStructTest.length, 3 * 2
  end
end