Commit 4bd140e4 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #148 from bovi/master

Add Tests for Math, Integer, Numeric and Array
parents 25415302 0cc8dcc0
......@@ -54,13 +54,13 @@ def report()
print($total_test)
print("\n")
print(' OK: ')
print(' OK: ')
print($ok_test)
print("\n")
print(' KO: ')
print(' KO: ')
print($ko_test)
print("\n")
print(' Crash: ')
print('Crash: ')
print($kill_test)
print("\n")
end
......
......@@ -35,6 +35,163 @@ assert('Array#clear', '15.2.12.5.6') do
a == []
end
assert('Array#collect!', '15.2.12.5.7') do
a = [1,2,3]
a.collect! { |i| i + i }
a == [2,4,6]
end
assert('Array#concat', '15.2.12.5.8') do
a = [1,2]
b = [3,4]
a.concat(b) == [1,2,3,4]
end
assert('Array#delete_at', '15.2.12.5.9') do
a = [1,2,3]
a.delete_at(1)
a == [1,3]
end
assert('Array#each', '15.2.12.5.10') do
a = [1,2,3]
b = 0
a.each {|i| b += i}
b == 6
end
assert('Array#each_index', '15.2.12.5.11') do
a = [1]
b = nil
a.each_index {|i| b = i}
b == 0
end
assert('Array#empty?', '15.2.12.5.12') do
a = []
b = [b]
a.empty? and not b.empty?
end
assert('Array#first', '15.2.12.5.13') do
a = []
b = [1,2,3]
a.first == nil and b.first == 1
end
assert('Array#index', '15.2.12.5.14') do
a = [1,2,3]
a.index(2) == 1
end
assert('Array#initialize', '15.2.12.5.15') do
a = [].initialize(1)
b = [].initialize(2)
c = [].initialize(2, 1)
d = [].initialize(2) {|i| i}
a == [nil] and b == [nil,nil] and c == [1,1] and d == [0,1]
end
assert('Array#initialize_copy', '15.2.12.5.16') do
a = [1,2,3]
b = [].initialize_copy(a)
b == [1,2,3]
end
assert('Array#join', '15.2.12.5.17') do
a = [1,2,3].join
b = [1,2,3].join(',')
a == '123' and b == '1,2,3'
end
assert('Array#last', '15.2.12.5.18') do
a = [1,2,3]
a.last == 3 and [].last == nil
end
assert('Array#length', '15.2.12.5.19') do
a = [1,2,3]
a.length == 3
end
assert('Array#map!', '15.2.12.5.20') do
a = [1,2,3]
a.map! { |i| i + i }
a == [2,4,6]
end
assert('Array#pop', '15.2.12.5.21') do
a = [1,2,3]
b = a.pop
[].pop == nil and a == [1,2] and b = 3
end
assert('Array#push', '15.2.12.5.22') do
a = [1,2,3]
b = a.push(4)
a == [1,2,3,4] and b = [1,2,3,4]
end
assert('Array#replace', '15.2.12.5.23') do
a = [1,2,3]
b = [].replace(a)
b == [1,2,3]
end
assert('Array#reverse', '15.2.12.5.24') do
a = [1,2,3]
b = a.reverse
a == [1,2,3] and b == [3,2,1]
end
assert('Array#reverse!', '15.2.12.5.25') do
a = [1,2,3]
b = a.reverse!
a == [3,2,1] and b == [3,2,1]
end
assert('Array#rindex', '15.2.12.5.26') do
a = [1,2,3]
a.rindex(2) == 1
end
assert('Array#shift', '15.2.12.5.27') do
a = [1,2,3]
b = a.shift
[].shift == nil and a == [2,3] and b == 1
end
assert('Array#size', '15.2.12.5.28') do
a = [1,2,3]
a.size == 3
end
assert('Array#slice', '15.2.12.5.29') do
[1,2,3].[](1) == 2
end
assert('Array#unshift', '15.2.12.5.30') do
a = [2,3]
b = a.unshift(1)
a == [1,2,3] and b == [1,2,3]
end
# Not ISO specified
##
# Integer ISO Test
assert('Integer', '15.2.8') do
Integer.class == Class
end
assert('Integer#+', '15.2.8.3.1') do
a = 1+1
b = 1+1.0
a == 2 and b == 2.0
end
assert('Integer#-', '15.2.8.3.2') do
a = 2-1
b = 2-1.0
a == 1 and b == 1.0
end
assert('Integer#*', '15.2.8.3.3') do
a = 1*1
b = 1*1.0
a == 1 and b == 1.0
end
assert('Integer#/', '15.2.8.3.4') do
a = 2/1
b = 2/1.0
a == 2 and b == 2.0
end
assert('Integer#%', '15.2.8.3.5') do
a = 1%1
b = 1%1.0
c = 2%4
a == 0 and b == 0.0 and c == 2
end
assert('Integer#<=>', '15.2.8.3.6') do
a = 1<=>0
b = 1<=>1
c = 1<=>2
a == 1 and b == 0 and c == -1
end
assert('Integer#==', '15.2.8.3.7') do
a = 1==0
b = 1==1
a == false and b == true
end
##
# Math Test
assert('Math.erf 0') do
Math.erf(0) == 0
end
assert('Math.exp 0') do
Math.exp(0) == 1.0
end
assert('Math.exp 1') do
Math.exp(1) == 2.718281828459045
end
assert('Math.exp 1.5') do
Math.exp(1.5) == 4.4816890703380645
end
assert('Math.log 1') do
Math.log(1) == 0
end
assert('Math.log E') do
Math.log(Math::E) == 1.0
end
assert('Math.log E**3') do
Math.log(Math::E**3) == 3.0
end
assert('Math.log2 1') do
Math.log2(1) == 0.0
end
assert('Math.log2 2') do
Math.log2(2) == 1.0
end
assert('Math.log10 1') do
Math.log10(1) == 0.0
end
assert('Math.log10 10') do
Math.log10(10) == 1.0
end
assert('Math.log10 10**100') do
Math.log10(10**100) == 100.0
end
assert('Math.cbrt') do
a = [-8, -1, 0, 1, 8].map do |i|
Math.cbrt(i)
end
a == [-2.0, -1.0, 0.0, 1.0, 2.0]
end
assert('Math.hypot') do
Math.hypot(3, 4) == 5.0
end
##
# Numeric ISO Test
assert('Numeric', '15.2.7') do
Numeric.class == Class
end
assert('Numeric#+@', '15.2.7.4.1') do
+1 == +1
end
assert('Numeric#-@', '15.2.7.4.2') do
-1 == -1
end
assert('Numeric#abs', '15.2.7.4.3') do
1.abs == 1 and -1.abs == 1.0
end
# Not ISO specified
assert('Numeric#**') do
2.0**3 == 8.0
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment