carray 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. checksums.yaml +4 -4
  2. data/{LICENSES → LICENSE} +0 -0
  3. data/NEWS.md +42 -0
  4. data/README.md +5 -5
  5. data/TODO.md +16 -0
  6. data/carray.gemspec +9 -5
  7. data/ext/ca_iter_block.c +3 -5
  8. data/ext/ca_iter_dimension.c +4 -5
  9. data/ext/ca_iter_window.c +2 -4
  10. data/ext/ca_obj_array.c +394 -124
  11. data/ext/ca_obj_bitarray.c +3 -5
  12. data/ext/ca_obj_bitfield.c +3 -5
  13. data/ext/ca_obj_block.c +6 -8
  14. data/ext/ca_obj_fake.c +3 -5
  15. data/ext/ca_obj_farray.c +3 -5
  16. data/ext/ca_obj_field.c +15 -17
  17. data/ext/ca_obj_grid.c +5 -6
  18. data/ext/ca_obj_mapping.c +2 -4
  19. data/ext/ca_obj_object.c +3 -5
  20. data/ext/ca_obj_reduce.c +2 -4
  21. data/ext/ca_obj_refer.c +5 -7
  22. data/ext/ca_obj_repeat.c +2 -4
  23. data/ext/ca_obj_select.c +2 -4
  24. data/ext/ca_obj_shift.c +3 -5
  25. data/ext/ca_obj_transpose.c +3 -5
  26. data/ext/ca_obj_unbound_repeat.c +58 -81
  27. data/ext/ca_obj_window.c +7 -9
  28. data/ext/carray.h +13 -8
  29. data/ext/carray_access.c +111 -18
  30. data/ext/carray_attribute.c +136 -197
  31. data/ext/carray_call_cfunc.c +1 -3
  32. data/ext/carray_cast.c +344 -143
  33. data/ext/carray_cast_func.rb +1 -2
  34. data/ext/carray_class.c +28 -36
  35. data/ext/carray_conversion.c +49 -59
  36. data/ext/carray_copy.c +16 -32
  37. data/ext/carray_core.c +51 -44
  38. data/ext/carray_element.c +25 -44
  39. data/ext/carray_generate.c +71 -50
  40. data/ext/carray_iterator.c +13 -15
  41. data/ext/carray_loop.c +53 -82
  42. data/ext/carray_mask.c +87 -117
  43. data/ext/carray_math.rb +8 -10
  44. data/ext/carray_mathfunc.c +1 -3
  45. data/ext/carray_numeric.c +19 -3
  46. data/ext/carray_operator.c +45 -32
  47. data/ext/carray_order.c +72 -65
  48. data/ext/carray_sort_addr.c +14 -21
  49. data/ext/carray_stat.c +1 -3
  50. data/ext/carray_stat_proc.rb +2 -4
  51. data/ext/carray_test.c +28 -30
  52. data/ext/carray_undef.c +1 -3
  53. data/ext/carray_utils.c +12 -4
  54. data/ext/extconf.rb +1 -1
  55. data/ext/mkmath.rb +1 -1
  56. data/ext/ruby_carray.c +11 -6
  57. data/ext/ruby_ccomplex.c +1 -3
  58. data/ext/ruby_float_func.c +1 -3
  59. data/ext/version.h +5 -7
  60. data/lib/carray.rb +2 -0
  61. data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
  62. data/lib/carray/broadcast.rb +45 -0
  63. data/lib/carray/construct.rb +21 -4
  64. data/lib/carray/iterator.rb +1 -0
  65. data/lib/carray/ordering.rb +28 -2
  66. data/spec/Classes/CABitfield_spec.rb +58 -0
  67. data/spec/Classes/CABlockIterator_spec.rb +114 -0
  68. data/spec/Classes/CABlock_spec.rb +205 -0
  69. data/spec/Classes/CAField_spec.rb +39 -0
  70. data/spec/Classes/CAGrid_spec.rb +75 -0
  71. data/spec/Classes/CAMap_spec.rb +0 -0
  72. data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
  73. data/spec/Classes/CAObject_attribute_spec.rb +33 -0
  74. data/spec/Classes/CAObject_spec.rb +33 -0
  75. data/spec/Classes/CARefer_spec.rb +93 -0
  76. data/spec/Classes/CARepeat_spec.rb +65 -0
  77. data/spec/Classes/CASelect_spec.rb +22 -0
  78. data/spec/Classes/CAShift_spec.rb +16 -0
  79. data/spec/Classes/CAStruct_spec.rb +71 -0
  80. data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
  81. data/spec/Classes/CAUnboudRepeat_spec.rb +78 -0
  82. data/spec/Classes/CAWindow_spec.rb +54 -0
  83. data/spec/Classes/CAWrap_spec.rb +8 -0
  84. data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
  85. data/spec/Classes/CScalar_spec.rb +55 -0
  86. data/spec/Features/feature_130_spec.rb +19 -0
  87. data/spec/Features/feature_attributes_spec.rb +280 -0
  88. data/spec/Features/feature_boolean_spec.rb +97 -0
  89. data/spec/Features/feature_broadcast.rb +100 -0
  90. data/spec/Features/feature_cast_function.rb +19 -0
  91. data/spec/Features/feature_cast_spec.rb +33 -0
  92. data/spec/Features/feature_class_spec.rb +84 -0
  93. data/spec/Features/feature_complex_spec.rb +42 -0
  94. data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
  95. data/spec/Features/feature_convert_spec.rb +46 -0
  96. data/spec/Features/feature_copy_spec.rb +123 -0
  97. data/spec/Features/feature_creation_spec.rb +84 -0
  98. data/spec/Features/feature_element_spec.rb +144 -0
  99. data/spec/Features/feature_extream_spec.rb +54 -0
  100. data/spec/Features/feature_generate_spec.rb +74 -0
  101. data/spec/Features/feature_index_spec.rb +69 -0
  102. data/spec/Features/feature_mask_spec.rb +574 -0
  103. data/spec/Features/feature_math_spec.rb +97 -0
  104. data/spec/Features/feature_order_spec.rb +146 -0
  105. data/spec/Features/feature_ref_store_spec.rb +209 -0
  106. data/spec/Features/feature_serialization_spec.rb +125 -0
  107. data/spec/Features/feature_stat_spec.rb +397 -0
  108. data/spec/Features/feature_virtual_spec.rb +48 -0
  109. data/spec/Features/method_eq_spec.rb +81 -0
  110. data/spec/Features/method_is_nan_spec.rb +12 -0
  111. data/spec/Features/method_map_spec.rb +54 -0
  112. data/spec/Features/method_max_with.rb +20 -0
  113. data/spec/Features/method_min_with.rb +19 -0
  114. data/spec/Features/method_ne_spec.rb +18 -0
  115. data/spec/Features/method_project_spec.rb +188 -0
  116. data/spec/Features/method_ref_spec.rb +27 -0
  117. data/spec/Features/method_round_spec.rb +11 -0
  118. data/spec/Features/method_s_linspace_spec.rb +48 -0
  119. data/spec/Features/method_s_span_spec.rb +14 -0
  120. data/spec/Features/method_seq_spec.rb +47 -0
  121. data/spec/Features/method_sort_with.rb +43 -0
  122. data/spec/Features/method_sorted_with.rb +29 -0
  123. data/spec/Features/method_span_spec.rb +42 -0
  124. data/spec/Features/method_wrap_readonly_spec.rb +43 -0
  125. data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
  126. data/spec/spec_all.rb +0 -1
  127. data/utils/convert_test.rb +73 -0
  128. data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
  129. metadata +77 -60
  130. data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
  131. data/spec/CArray/bug/store_spec.rb +0 -27
  132. data/spec/CArray/index/repeat_spec.rb +0 -10
  133. data/spec/CArray/method/eq_spec.rb +0 -80
  134. data/spec/CArray/method/is_nan_spec.rb +0 -12
  135. data/spec/CArray/method/ne_spec.rb +0 -18
  136. data/spec/CArray/method/round_spec.rb +0 -11
  137. data/spec/CArray/object/_attribute_spec.rb +0 -32
  138. data/spec/CArray/object/s_new_spec.rb +0 -31
  139. data/spec/CArray/serialize/Serialization_spec.rb +0 -89
  140. data/test/test_130.rb +0 -23
  141. data/test/test_ALL.rb +0 -49
  142. data/test/test_CABitfield.rb +0 -59
  143. data/test/test_CABlock.rb +0 -208
  144. data/test/test_CAField.rb +0 -40
  145. data/test/test_CAGrid.rb +0 -76
  146. data/test/test_CAMmap.rb +0 -11
  147. data/test/test_CARefer.rb +0 -94
  148. data/test/test_CARepeat.rb +0 -66
  149. data/test/test_CASelect.rb +0 -23
  150. data/test/test_CAShift.rb +0 -17
  151. data/test/test_CAWindow.rb +0 -55
  152. data/test/test_CAWrap.rb +0 -9
  153. data/test/test_CComplex.rb +0 -83
  154. data/test/test_CScalar.rb +0 -91
  155. data/test/test_attribute.rb +0 -281
  156. data/test/test_block_iterator.rb +0 -17
  157. data/test/test_boolean.rb +0 -99
  158. data/test/test_cast.rb +0 -33
  159. data/test/test_class.rb +0 -85
  160. data/test/test_complex.rb +0 -43
  161. data/test/test_convert.rb +0 -79
  162. data/test/test_copy.rb +0 -141
  163. data/test/test_creation.rb +0 -85
  164. data/test/test_element.rb +0 -146
  165. data/test/test_extream.rb +0 -55
  166. data/test/test_generate.rb +0 -75
  167. data/test/test_index.rb +0 -71
  168. data/test/test_mask.rb +0 -578
  169. data/test/test_math.rb +0 -98
  170. data/test/test_order.rb +0 -147
  171. data/test/test_ref_store.rb +0 -211
  172. data/test/test_stat.rb +0 -406
  173. data/test/test_struct.rb +0 -72
  174. data/test/test_virtual.rb +0 -49
@@ -1,94 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCArrayCARefer < Test::Unit::TestCase
7
-
8
- def test_virtual_array
9
- a = CArray.int(3,3)
10
- b = a.refer(CA_INT,[9])
11
- r = b.parent
12
- assert_instance_of(CARefer, b)
13
- assert_equal(true, b.virtual?)
14
- assert_equal(a, r)
15
- end
16
-
17
- def test_basic_features
18
- # ---
19
- a = CArray.int(3,2).seq!
20
- r = a.reshape(2,3)
21
- assert_equal(a.data_type, r.data_type)
22
- assert_equal([2,3], r.dim)
23
- assert_equal(CA_INT([[0,1,2],
24
- [3,4,5]]), r)
25
-
26
- # ---
27
- # less data number
28
- a = CArray.int(3,2).seq!
29
- r = a.reshape(2,2)
30
- assert_equal(CA_INT([[0,1],
31
- [2,3]]), r)
32
-
33
- # ---
34
- # data type change (int -> float)
35
- a = CArray.int(3,2).seq!
36
- r = a.refer(CA_FLOAT32, [2,3])
37
- rr = r.refer(CA_INT32, [3,2])
38
- assert_equal(CA_FLOAT, r.data_type)
39
- assert_equal(a, rr)
40
- end
41
-
42
- def test_refer_to_virtual_array
43
- # ---
44
- a = CArray.int(3,3).seq!
45
- b = a[1..2,1..2]
46
- r = b.reshape(4)
47
- assert_equal(CA_INT([4,5,7,8]), r)
48
-
49
- # ---
50
- a = CArray.int(3).seq!
51
- b = a[:%,3]
52
- r = b.reshape(9)
53
- assert_equal(CA_INT([0,0,0,1,1,1,2,2,2]), r)
54
-
55
- end
56
-
57
- def test_invalid_args
58
- # ---
59
- a = CArray.int8(3,3).seq!
60
- assert_raise(RuntimeError) { a.reshape(10) } ### too large data num
61
- assert_raise(RuntimeError) { a.refer(CA_INT,[9]) }
62
- ### larger data type bytes
63
-
64
- end
65
-
66
- def test_flatten
67
- a = CArray.int(3,3).seq!
68
- b = CArray.int(9).seq!
69
-
70
- # ---
71
- assert_equal(b, a.flatten)
72
- assert_equal(b, a.flattened)
73
-
74
- # ---
75
- c = a.reverse
76
- a.flattened.reverse!
77
- assert_equal(c, a)
78
- end
79
-
80
- def test_refer_variant
81
- a = CArray.fixlen(4, :bytes=>4) {"abcd"}
82
- b = CA_FIXLEN([["ab", "cd"],
83
- ["ab", "cd"],
84
- ["ab", "cd"],
85
- ["ab", "cd"]], :bytes=>2)
86
- c = CA_FIXLEN(["abcdabcd", "abcdabcd"], :bytes=>8)
87
-
88
- # ---
89
- assert_equal(b, a.refer(CA_FIXLEN, [4,2], :bytes=>2))
90
- assert_equal(c, a.refer(CA_FIXLEN, [2], :bytes=>8))
91
-
92
- end
93
-
94
- end
@@ -1,66 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCArrayCARepeat < Test::Unit::TestCase
7
-
8
- def test_virtual_array
9
- a = CArray.int(3)
10
- b = a[:%,3]
11
- r = b.parent
12
- assert_instance_of(CARepeat, b)
13
- assert_equal(true, b.virtual?)
14
- assert_equal(true, b.read_only?)
15
- assert_equal(false, b.attached?)
16
- assert_equal(a, r)
17
- end
18
-
19
- def test_basic_feature
20
- # ---
21
- a = CArray.int(3).seq!
22
- r1 = a[3,:%]
23
- r2 = a[:%,3]
24
- assert_equal(CA_INT([[0,1,2],
25
- [0,1,2],
26
- [0,1,2]]), r1)
27
- assert_equal(CA_INT([[0,0,0],
28
- [1,1,1],
29
- [2,2,2]]), r2)
30
- # ---
31
- b = CArray.int(2,2).seq!
32
- assert_equal(CA_INT([[[ 0, 1 ],
33
- [ 0, 1 ]],
34
- [[ 2, 3 ],
35
- [ 2, 3 ]]]), b[:%,2,:%])
36
- end
37
-
38
- def test_store
39
- a = CArray.int(3).seq!
40
- r1 = a[3,:%]
41
- assert_raise(RuntimeError) { r1[1,1] = 1 }
42
- assert_raise(RuntimeError) { r1.seq! }
43
- r2 = a[:%,3]
44
- assert_raise(RuntimeError) { r1[1,1] = 1 }
45
- assert_raise(RuntimeError) { r1.seq! }
46
- end
47
-
48
- def test_mask_repeat
49
- a = CArray.int(3).seq!
50
- a[1] = UNDEF
51
- r1 = a[3,:%]
52
- x1 = r1.to_ca
53
- assert_equal(3, r1.count_masked)
54
- assert_equal(3, r1[nil,1].count_masked)
55
- assert_equal(3, x1.count_masked)
56
- assert_equal(3, x1[nil,1].count_masked)
57
-
58
- r2 = a[:%,3]
59
- x2 = r2.to_ca
60
- assert_equal(3, r2.count_masked)
61
- assert_equal(3, r2[1,nil].count_masked)
62
- assert_equal(3, x2.count_masked)
63
- assert_equal(3, x2[1,nil].count_masked)
64
- end
65
-
66
- end
@@ -1,23 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCArrayCASelect < Test::Unit::TestCase
7
-
8
- def test_virtual_array
9
- a = CArray.int(3,3) { 0 }
10
- b = a[a.eq(0)]
11
- r = b.parent
12
- assert_instance_of(CASelect, b)
13
- assert_equal(true, b.virtual?)
14
- assert_equal(a, r)
15
- end
16
-
17
- def test_select_to_a
18
- a = CArray.int(3,3).seq!
19
- s = a[a >= 4]
20
- assert_equal([4, 5, 6, 7, 8], a[s].to_a)
21
- end
22
-
23
- end
@@ -1,17 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCArrayCAShift < Test::Unit::TestCase
7
-
8
- def test_virtual_array
9
- a = CArray.int(3,3)
10
- b = a.shifted(1,1)
11
- r = b.parent
12
- assert_instance_of(CAShift, b)
13
- assert_equal(true, b.virtual?)
14
- assert_equal(a, r)
15
- end
16
-
17
- end
@@ -1,55 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCArrayCAWindow < Test::Unit::TestCase
7
-
8
- def test_virtual_array
9
- a = CArray.int(3,3).seq!
10
- b = a.window(-1..1, -1..1)
11
- r = b.parent
12
- assert_instance_of(CAWindow, b)
13
- assert_equal(true, b.virtual?)
14
- assert_equal(a, r)
15
- end
16
-
17
-
18
- def test_basic_features
19
- # ---
20
- a = CArray.int(3,3).seq!
21
- b = a.window(-1..1, -1..1)
22
- assert_equal(CA_INT([[0,0,0],
23
- [0,0,1],
24
- [0,3,4]]), b)
25
-
26
- # ---
27
- a = CArray.int(3,3).seq!
28
- b = a.window(-1..1, -1..1) { UNDEF}
29
- _ = UNDEF
30
- assert_equal(CA_INT([[_,_,_],
31
- [_,0,1],
32
- [_,3,4]]), b)
33
- end
34
-
35
- def test_invalid_args
36
- # ---
37
- a = CArray.int(3,3).seq
38
- assert_raise(ArgumentError) { a.window(1) }
39
- assert_raise(ArgumentError) { a.window([nil]) }
40
- assert_raise(ArgumentError) { a.window(nil, [nil,2]) }
41
- assert_raise(ArgumentError) { a.window(1..-1, nil) }
42
- end
43
-
44
- def test_out_of_index
45
- # ---
46
- a = CArray.int(3,3).seq
47
- i1 = CA_INT([1,2,3])
48
- i2 = CA_INT([-4,-3,-2])
49
- assert_raise(IndexError) { a[i1,nil] }
50
- assert_raise(IndexError) { a[nil,i1] }
51
- assert_raise(IndexError) { a[i2,nil] }
52
- assert_raise(IndexError) { a[nil,i2] }
53
- end
54
-
55
- end
@@ -1,9 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCArrayCAWrap < Test::Unit::TestCase
7
- def test_default
8
- end
9
- end
@@ -1,83 +0,0 @@
1
- $:.unshift("../lib", "..")
2
-
3
- require 'test/unit'
4
- require 'carray'
5
-
6
- class TestCComplex < Test::Unit::TestCase
7
-
8
- def test_new
9
- c = CComplex.new(1,2)
10
- assert_equal(c.real, 1)
11
- assert_equal(c.imag, 2)
12
- c = CComplex.new(1)
13
- assert_equal(c.real, 1)
14
- assert_equal(c.imag, 0)
15
- end
16
-
17
- def test_inspect
18
- c = CComplex.new(1,2)
19
- assert_equal(c.inspect, "1.0+2.0i")
20
- c = CComplex.new(1,-2)
21
- assert_equal(c.inspect, "1.0-2.0i")
22
- c = CComplex.new(1)
23
- assert_equal(c.inspect, "1.0+0.0i")
24
- c = CComplex.new(0,2)
25
- assert_equal(c.inspect, "0.0+2.0i")
26
- c = CComplex.new(0,-2)
27
- assert_equal(c.inspect, "0.0-2.0i")
28
- end
29
-
30
- def test_to_i
31
- c = CComplex.new(23.5, 2)
32
- assert_raise(NoMethodError) {
33
- c.to_i
34
- }
35
- end
36
-
37
- def test_conj
38
- c = CComplex.new(1, 1)
39
- d = CComplex.new(1, -1)
40
- assert_equal(c.conj, d)
41
- assert_equal(d.conj, c)
42
- end
43
-
44
- def test_arg
45
- c = CComplex.new(1, 1)
46
- assert_equal(c.arg, Math::PI/4)
47
- end
48
-
49
- def test_abs
50
- c = CComplex.new(1, 1)
51
- assert_equal(c.abs, Math::sqrt(2))
52
- end
53
-
54
- def test_plus
55
- a = CComplex.new(1, 1)
56
- b = CComplex.new(-1,-1)
57
- assert_equal(a + b, 0)
58
- end
59
-
60
- def test_minus
61
- a = CComplex.new(1, 1)
62
- assert_equal(a - a, 0)
63
- end
64
-
65
- def test_asterisk
66
- a = CComplex.new(1, 1)
67
- b = CComplex.new(1, -1)
68
- assert_equal(a * b, 2)
69
- end
70
-
71
- def test_slash
72
- a = CComplex.new(1, 1)
73
- b = CComplex.new(1, -1)
74
- assert_equal(a / b, CComplex.new(0,1))
75
- end
76
-
77
- def test_star2
78
- a = CComplex.new(1, 1)
79
- b = CComplex.new(1, -1)
80
- # assert_equal(a ** 2, 2*CComplex.new(0,1))
81
- end
82
-
83
- end
@@ -1,91 +0,0 @@
1
- #
2
- # * scalar creation
3
- # * scalar?
4
- #
5
- #
6
- #
7
-
8
- $:.unshift("../lib", "..")
9
-
10
- require 'test/unit'
11
- require 'carray'
12
-
13
- class TestCScalar < Test::Unit::TestCase
14
-
15
- def test_s_new
16
- a = CScalar.int32 { 1 }
17
- assert_equal(true, a.scalar?)
18
- assert_equal(CA_INT32, a.data_type)
19
- assert_equal(1, a.rank)
20
- assert_equal(CArray.sizeof(CA_INT32), a.bytes)
21
- assert_equal([1], a.dim)
22
- assert_equal(1, a.elements)
23
- assert_equal(CA_INT32(1), a)
24
- end
25
-
26
- def test_ref_scalar
27
- a = CScalar.int32 { 0 }
28
- assert_equal(true, a.scalar?)
29
- assert_equal(true, a[].scalar?)
30
- assert_equal(true, a.refer(CA_UINT32).scalar?)
31
- assert_equal(true, a.fake(CA_UINT32).scalar?)
32
- assert_equal(true, a.field(0,CA_UINT32).scalar?)
33
- assert_equal(true, a[a].scalar?)
34
- assert_equal(true, a[a.eq(0)].scalar?)
35
- assert_equal(true, a[a.eq(1)].scalar?)
36
-
37
- assert_equal(false, a[nil].scalar?)
38
- end
39
-
40
- def test_scalar_operation
41
- a = CScalar.int32 { 1 }
42
- b = CScalar.int32 { 2 }
43
- assert_instance_of(CScalar, -a)
44
-
45
- assert_instance_of(CScalar, a.add(b))
46
- assert_instance_of(CScalar, a + b)
47
- assert_instance_of(CScalar, a < b)
48
-
49
- assert_instance_of(CScalar, a.add(1))
50
- assert_instance_of(CScalar, a + 1)
51
- assert_instance_of(CScalar, a < 1)
52
- end
53
-
54
- def test_scalar_arith
55
- a = CScalar.int32 {1}
56
-
57
- a[] = 1
58
- a = a + 1
59
- assert_equal(2, a[0])
60
-
61
- a[] = 1
62
- a = 1 + a
63
- assert_equal(2, a[0])
64
-
65
- a[] = 1
66
- a = a - 1
67
- assert_equal(0, a[0])
68
-
69
- a[] = 1
70
- a = 1 - a
71
- assert_equal(0, a[0])
72
-
73
- a[] = 1
74
- a = 2*a
75
- assert_equal(2, a[0])
76
-
77
- a[] = 1
78
- a = a*2
79
- assert_equal(2, a[0])
80
-
81
- a[] = 4
82
- a = a/2
83
- assert_equal(2, a[0])
84
-
85
- a[] = 2
86
- a = 4/a
87
- assert_equal(2, a[0])
88
-
89
- end
90
-
91
- end