source: EcnlProtoTool/trunk/mruby-1.2.0/mrbgems/mruby-struct/test/struct.rb@ 270

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

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 2.8 KB
Line 
1##
2# Struct ISO Test
3
4assert('Struct', '15.2.18') do
5 Struct.class == Class
6end
7
8assert('Struct.new', '15.2.18.3.1') do
9 c = Struct.new(:m1, :m2)
10 c.superclass == Struct and
11 c.members == [:m1,:m2]
12end
13
14# Check crash bug with Struc.new and no params.
15assert('Struct.new', '15.2.18.3.1') do
16 c = Struct.new()
17 c.superclass == Struct and c.members == []
18end
19
20assert('Struct#==', '15.2.18.4.1') do
21 c = Struct.new(:m1, :m2)
22 cc1 = c.new(1,2)
23 cc2 = c.new(1,2)
24 cc1 == cc2
25end
26
27assert('Struct#[]', '15.2.18.4.2') do
28 c = Struct.new(:m1, :m2)
29 cc = c.new(1,2)
30 cc[:m1] == 1 and cc["m2"] == 2
31end
32
33assert('Struct#[]=', '15.2.18.4.3') do
34 c = Struct.new(:m1, :m2)
35 cc = c.new(1,2)
36 cc[:m1] = 3
37 cc[:m1] == 3
38 cc["m2"] = 3
39 assert_equal 3, cc["m2"]
40 assert_raise(TypeError) { cc[[]] = 3 }
41end
42
43assert('Struct#each', '15.2.18.4.4') do
44 c = Struct.new(:m1, :m2)
45 cc = c.new(1,2)
46 a = []
47 cc.each{|x|
48 a << x
49 }
50 a[0] == 1 and a[1] == 2
51end
52
53assert('Struct#each_pair', '15.2.18.4.5') do
54 c = Struct.new(:m1, :m2)
55 cc = c.new(1,2)
56 a = []
57 cc.each_pair{|k,v|
58 a << [k,v]
59 }
60 a[0] == [:m1, 1] and a[1] == [:m2, 2]
61end
62
63assert('Struct#members', '15.2.18.4.6') do
64 c = Struct.new(:m1, :m2)
65 cc = c.new(1,2)
66 cc.members == [:m1,:m2]
67end
68
69assert('Struct#select', '15.2.18.4.7') do
70 c = Struct.new(:m1, :m2)
71 cc = c.new(1,2)
72 cc.select{|v| v % 2 == 0} == [2]
73end
74
75assert('large struct') do
76 c = Struct.new(:m1, :m2, :m3, :m4, :m5, :m6, :m7, :m8, :m9, :m10, :m11, :m12, :m13)
77 cc = c.new(1,2,3,4,5,6,7,8,9,10,11,12,13)
78 assert_equal 1, cc.m1
79 assert_equal 2, cc.m2
80 assert_equal 3, cc.m3
81 assert_equal 4, cc.m4
82 assert_equal 5, cc.m5
83 assert_equal 6, cc.m6
84 assert_equal 7, cc.m7
85 assert_equal 8, cc.m8
86 assert_equal 9, cc.m9
87 assert_equal 10, cc.m10
88 assert_equal 13, cc.m13
89
90 cc.m13 = 'test'
91 assert_equal 'test', cc.m13
92
93 assert_raise(NoMethodError) { cc.m14 }
94end
95
96assert('wrong struct arg count') do
97 c = Struct.new(:m1)
98 assert_raise ArgumentError do
99 cc = c.new(1,2,3)
100 end
101end
102
103assert('struct inspect') do
104 c = Struct.new(:m1, :m2, :m3, :m4, :m5)
105 cc = c.new(1,2,3,4,5)
106 assert_equal "#<struct m1=1, m2=2, m3=3, m4=4, m5=5>", cc.inspect
107end
108
109assert('Struct#length, Struct#size') do
110 s = Struct.new(:f1, :f2).new(0, 1)
111 assert_equal 2, s.size
112 assert_equal 2, s.length
113end
114
115assert('Struct#to_a, Struct#values') do
116 s = Struct.new(:mem1, :mem2).new('a', 'b')
117 assert_equal ['a', 'b'], s.to_a
118 assert_equal ['a', 'b'], s.values
119end
120
121assert('Struct#to_h') do
122 s = Struct.new(:white, :red, :green).new('ruuko', 'yuzuki', 'hitoe')
123 assert_equal(:white => 'ruuko', :red => 'yuzuki', :green => 'hitoe') { s.to_h }
124end
125
126assert('Struct#values_at') do
127 a = Struct.new(:blue, :purple).new('aki', 'io')
128 assert_equal ['aki'], a.values_at(0)
129 assert_equal ['io', 'aki'], a.values_at(1, 0)
130 assert_raise(IndexError) { a.values_at 2 }
131end
Note: See TracBrowser for help on using the repository browser.