summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-06-21 00:11:35 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-06-21 00:11:35 -0700
commitd105ea496f686b6ef3071e127864fab4677befac (patch)
tree792c7429c9ab5f93171ebe7f5f852d3157fdccd7 /test
parent0f2b69642d589aa5a55de7b4807d9b3072e4cc52 (diff)
parent4780b653a47c1bacd2412130d77cbe5b3f0b30d3 (diff)
downloadmruby-d105ea496f686b6ef3071e127864fab4677befac.tar.gz
mruby-d105ea496f686b6ef3071e127864fab4677befac.zip
Merge pull request #305 from bovi/optional-feature
Tests are executed based on available features
Diffstat (limited to 'test')
-rw-r--r--test/t/math.rb178
-rw-r--r--test/t/struct.rb101
-rw-r--r--test/t/time.rb278
3 files changed, 282 insertions, 275 deletions
diff --git a/test/t/math.rb b/test/t/math.rb
index 47a3bf527..025551b82 100644
--- a/test/t/math.rb
+++ b/test/t/math.rb
@@ -1,115 +1,117 @@
##
# Math Test
-assert('Math.sin 0') do
- check_float(Math.sin(0), 0)
-end
+if Object.const_defined?(:Math)
+ assert('Math.sin 0') do
+ check_float(Math.sin(0), 0)
+ end
-assert('Math.sin PI/2') do
- check_float(Math.sin(Math::PI / 2), 1)
-end
+ assert('Math.sin PI/2') do
+ check_float(Math.sin(Math::PI / 2), 1)
+ end
+ assert('Fundamental trig identities') do
+ result = true
+ N = 15
+ N.times do |i|
+ a = Math::PI / N * i
+ ca = Math::PI / 2 - a
+ s = Math.sin(a)
+ c = Math.cos(a)
+ t = Math.tan(a)
+ result &= check_float(s, Math.cos(ca))
+ result &= check_float(t, 1 / Math.tan(ca))
+ result &= check_float(s ** 2 + c ** 2, 1)
+ result &= check_float(t ** 2 + 1, (1/c) ** 2)
+ result &= check_float((1/t) ** 2 + 1, (1/s) ** 2)
+ end
+ result
+ end
-assert('Fundamental trig identities') do
- result = true
- N = 15
- N.times do |i|
- a = Math::PI / N * i
- ca = Math::PI / 2 - a
- s = Math.sin(a)
- c = Math.cos(a)
- t = Math.tan(a)
- result &= check_float(s, Math.cos(ca))
- result &= check_float(t, 1 / Math.tan(ca))
- result &= check_float(s ** 2 + c ** 2, 1)
- result &= check_float(t ** 2 + 1, (1/c) ** 2)
- result &= check_float((1/t) ** 2 + 1, (1/s) ** 2)
- end
- result
-end
+ assert('Math.erf 0') do
+ check_float(Math.erf(0), 0)
+ end
-assert('Math.erf 0') do
- check_float(Math.erf(0), 0)
-end
+ assert('Math.exp 0') do
+ check_float(Math.exp(0), 1.0)
+ end
-assert('Math.exp 0') do
- check_float(Math.exp(0), 1.0)
-end
+ assert('Math.exp 1') do
+ check_float(Math.exp(1), 2.718281828459045)
+ end
-assert('Math.exp 1') do
- check_float(Math.exp(1), 2.718281828459045)
-end
+ assert('Math.exp 1.5') do
+ check_float(Math.exp(1.5), 4.4816890703380645)
+ end
-assert('Math.exp 1.5') do
- check_float(Math.exp(1.5), 4.4816890703380645)
-end
+ assert('Math.log 1') do
+ check_float(Math.log(1), 0)
+ end
-assert('Math.log 1') do
- check_float(Math.log(1), 0)
-end
+ assert('Math.log E') do
+ check_float(Math.log(Math::E), 1.0)
+ end
-assert('Math.log E') do
- check_float(Math.log(Math::E), 1.0)
-end
+ assert('Math.log E**3') do
+ check_float(Math.log(Math::E**3), 3.0)
+ end
-assert('Math.log E**3') do
- check_float(Math.log(Math::E**3), 3.0)
-end
+ assert('Math.log2 1') do
+ check_float(Math.log2(1), 0.0)
+ end
-assert('Math.log2 1') do
- check_float(Math.log2(1), 0.0)
-end
+ assert('Math.log2 2') do
+ check_float(Math.log2(2), 1.0)
+ end
-assert('Math.log2 2') do
- check_float(Math.log2(2), 1.0)
-end
+ assert('Math.log10 1') do
+ check_float(Math.log10(1), 0.0)
+ end
-assert('Math.log10 1') do
- check_float(Math.log10(1), 0.0)
-end
+ assert('Math.log10 10') do
+ check_float(Math.log10(10), 1.0)
+ end
-assert('Math.log10 10') do
- check_float(Math.log10(10), 1.0)
-end
+ assert('Math.log10 10**100') do
+ check_float(Math.log10(10**100), 100.0)
+ end
-assert('Math.log10 10**100') do
- check_float(Math.log10(10**100), 100.0)
-end
+ assert('Math.sqrt') do
+ num = [0.0, 1.0, 2.0, 3.0, 4.0]
+ sqr = [0, 1, 4, 9, 16]
+ result = true
+ sqr.each_with_index do |v,i|
+ result &= check_float(Math.sqrt(v), num[i])
+ end
+ result
+ end
-assert('Math.sqrt') do
- num = [0.0, 1.0, 2.0, 3.0, 4.0]
- sqr = [0, 1, 4, 9, 16]
- result = true
- sqr.each_with_index do |v,i|
- result &= check_float(Math.sqrt(v), num[i])
+ assert('Math.cbrt') do
+ num = [-2.0, -1.0, 0.0, 1.0, 2.0]
+ cub = [-8, -1, 0, 1, 8]
+ result = true
+ cub.each_with_index do |v,i|
+ result &= check_float(Math.cbrt(v), num[i])
+ end
+ result
end
- result
-end
-assert('Math.cbrt') do
- num = [-2.0, -1.0, 0.0, 1.0, 2.0]
- cub = [-8, -1, 0, 1, 8]
- result = true
- cub.each_with_index do |v,i|
- result &= check_float(Math.cbrt(v), num[i])
+ assert('Math.hypot') do
+ check_float(Math.hypot(3, 4), 5.0)
end
- result
-end
-assert('Math.hypot') do
- check_float(Math.hypot(3, 4), 5.0)
-end
+ assert('Math.frexp 1234') do
+ n = 1234
+ fraction, exponent = Math.frexp(n)
+ check_float(Math.ldexp(fraction, exponent), n)
+ end
-assert('Math.frexp 1234') do
- n = 1234
- fraction, exponent = Math.frexp(n)
- check_float(Math.ldexp(fraction, exponent), n)
-end
+ assert('Math.erf 1') do
+ check_float(Math.erf(1), 0.842700792949715)
+ end
-assert('Math.erf 1') do
- check_float(Math.erf(1), 0.842700792949715)
+ assert('Math.erfc 1') do
+ check_float(Math.erfc(1), 0.157299207050285)
+ end
end
-assert('Math.erfc 1') do
- check_float(Math.erfc(1), 0.157299207050285)
-end
diff --git a/test/t/struct.rb b/test/t/struct.rb
index 5a74c6205..fff02ee56 100644
--- a/test/t/struct.rb
+++ b/test/t/struct.rb
@@ -1,61 +1,64 @@
##
# Struct ISO Test
-assert('Struct', '15.2.18') do
- Struct.class == Class
-end
+if Object.const_defined?(:Struct)
+ assert('Struct', '15.2.18') do
+ Struct.class == Class
+ end
-assert('Struct superclass', '15.2.18.2') do
- Struct.superclass == Object
-end
+ assert('Struct superclass', '15.2.18.2') do
+ Struct.superclass == Object
+ end
-assert('Struct.new', '15.2.18.3.1') do
- c = Struct.new(:m1, :m2)
- c.superclass == Struct and
- c.members == [:m1,:m2]
-end
+ assert('Struct.new', '15.2.18.3.1') do
+ c = Struct.new(:m1, :m2)
+ c.superclass == Struct and
+ c.members == [:m1,:m2]
+ end
-assert('Struct#[]', '15.2.18.4.2') do
- c = Struct.new(:m1, :m2)
- cc = c.new(1,2)
- cc[:m1] == 1 and cc["m2"] == 2
-end
+ assert('Struct#[]', '15.2.18.4.2') do
+ c = Struct.new(:m1, :m2)
+ cc = c.new(1,2)
+ cc[:m1] == 1 and cc["m2"] == 2
+ end
-assert('Struct#[]=', '15.2.18.4.3') do
- c = Struct.new(:m1, :m2)
- cc = c.new(1,2)
- cc[:m1] = 3
- cc[:m1] == 3
-end
+ assert('Struct#[]=', '15.2.18.4.3') do
+ c = Struct.new(:m1, :m2)
+ cc = c.new(1,2)
+ cc[:m1] = 3
+ cc[:m1] == 3
+ end
-assert('Struct#each', '15.2.18.4.4') do
- c = Struct.new(:m1, :m2)
- cc = c.new(1,2)
- a = []
- cc.each{|x|
- a << x
- }
- a[0] == 1 and a[1] == 2
-end
+ assert('Struct#each', '15.2.18.4.4') do
+ c = Struct.new(:m1, :m2)
+ cc = c.new(1,2)
+ a = []
+ cc.each{|x|
+ a << x
+ }
+ a[0] == 1 and a[1] == 2
+ end
-assert('Struct#each_pair', '15.2.18.4.5') do
- c = Struct.new(:m1, :m2)
- cc = c.new(1,2)
- a = []
- cc.each_pair{|k,v|
- a << [k,v]
- }
- a[0] == [:m1, 1] and a[1] == [:m2, 2]
-end
+ assert('Struct#each_pair', '15.2.18.4.5') do
+ c = Struct.new(:m1, :m2)
+ cc = c.new(1,2)
+ a = []
+ cc.each_pair{|k,v|
+ a << [k,v]
+ }
+ a[0] == [:m1, 1] and a[1] == [:m2, 2]
+ end
-assert('Struct#members', '15.2.18.4.6') do
- c = Struct.new(:m1, :m2)
- cc = c.new(1,2)
- cc.members == [:m1,:m2]
-end
+ assert('Struct#members', '15.2.18.4.6') do
+ c = Struct.new(:m1, :m2)
+ cc = c.new(1,2)
+ cc.members == [:m1,:m2]
+ end
-assert('Struct#select', '15.2.18.4.7') do
- c = Struct.new(:m1, :m2)
- cc = c.new(1,2)
- cc.select{|v| v % 2 == 0} == [2]
+ assert('Struct#select', '15.2.18.4.7') do
+ c = Struct.new(:m1, :m2)
+ cc = c.new(1,2)
+ cc.select{|v| v % 2 == 0} == [2]
+ end
end
+
diff --git a/test/t/time.rb b/test/t/time.rb
index 045c5b185..6140be1a8 100644
--- a/test/t/time.rb
+++ b/test/t/time.rb
@@ -1,189 +1,191 @@
##
# Time ISO Test
-assert('Time.new', '15.2.3.3.3') do
- Time.new.class == Time
-end
+if Object.const_defined?(:Time)
+ assert('Time.new', '15.2.3.3.3') do
+ Time.new.class == Time
+ end
-assert('Time', '15.2.19') do
- Time.class == Class
-end
+ assert('Time', '15.2.19') do
+ Time.class == Class
+ end
-assert('Time superclass', '15.2.19.2') do
- Time.superclass == Object
-end
+ assert('Time superclass', '15.2.19.2') do
+ Time.superclass == Object
+ end
-assert('Time.at', '15.2.19.6.1') do
- Time.at(1300000000.0)
-end
+ assert('Time.at', '15.2.19.6.1') do
+ Time.at(1300000000.0)
+ end
-assert('Time.gm', '15.2.19.6.2') do
- Time.gm(2012, 12, 23)
-end
+ assert('Time.gm', '15.2.19.6.2') do
+ Time.gm(2012, 12, 23)
+ end
-assert('Time.local', '15.2.19.6.3') do
- Time.local(2012, 12, 23)
-end
+ assert('Time.local', '15.2.19.6.3') do
+ Time.local(2012, 12, 23)
+ end
-assert('Time.mktime', '15.2.19.6.4') do
- Time.mktime(2012, 12, 23)
-end
+ assert('Time.mktime', '15.2.19.6.4') do
+ Time.mktime(2012, 12, 23)
+ end
-assert('Time.now', '15.2.19.6.5') do
- Time.now.class == Time
-end
+ assert('Time.now', '15.2.19.6.5') do
+ Time.now.class == Time
+ end
-assert('Time.utc', '15.2.19.6.6') do
- Time.utc(2012, 12, 23)
-end
+ assert('Time.utc', '15.2.19.6.6') do
+ Time.utc(2012, 12, 23)
+ end
-assert('Time#+', '15.2.19.7.1') do
- t1 = Time.at(1300000000.0)
- t2 = t1.+(60)
+ assert('Time#+', '15.2.19.7.1') do
+ t1 = Time.at(1300000000.0)
+ t2 = t1.+(60)
- t2.utc.asctime == "Sun Mar 13 07:07:40 UTC 2011"
-end
+ t2.utc.asctime == "Sun Mar 13 07:07:40 UTC 2011"
+ end
-assert('Time#-', '15.2.19.7.2') do
- t1 = Time.at(1300000000.0)
- t2 = t1.-(60)
+ assert('Time#-', '15.2.19.7.2') do
+ t1 = Time.at(1300000000.0)
+ t2 = t1.-(60)
- t2.utc.asctime == "Sun Mar 13 07:05:40 UTC 2011"
-end
+ t2.utc.asctime == "Sun Mar 13 07:05:40 UTC 2011"
+ end
-assert('Time#<=>', '15.2.19.7.3') do
- t1 = Time.at(1300000000.0)
- t2 = Time.at(1400000000.0)
- t3 = Time.at(1500000000.0)
+ assert('Time#<=>', '15.2.19.7.3') do
+ t1 = Time.at(1300000000.0)
+ t2 = Time.at(1400000000.0)
+ t3 = Time.at(1500000000.0)
- t2.<=>(t1) == 1 and
- t2.<=>(t2) == 0 and
- t2.<=>(t3) == -1 and
- t2.<=>(nil) == nil
-end
+ t2.<=>(t1) == 1 and
+ t2.<=>(t2) == 0 and
+ t2.<=>(t3) == -1 and
+ t2.<=>(nil) == nil
+ end
-assert('Time#asctime', '15.2.19.7.4') do
- Time.at(1300000000.0).utc.asctime == "Sun Mar 13 07:06:40 UTC 2011"
-end
+ assert('Time#asctime', '15.2.19.7.4') do
+ Time.at(1300000000.0).utc.asctime == "Sun Mar 13 07:06:40 UTC 2011"
+ end
-assert('Time#ctime', '15.2.19.7.5') do
- Time.at(1300000000.0).utc.ctime == "Sun Mar 13 07:06:40 UTC 2011"
-end
+ assert('Time#ctime', '15.2.19.7.5') do
+ Time.at(1300000000.0).utc.ctime == "Sun Mar 13 07:06:40 UTC 2011"
+ end
-assert('Time#day', '15.2.19.7.6') do
- Time.gm(2012, 12, 23).day == 23
-end
+ assert('Time#day', '15.2.19.7.6') do
+ Time.gm(2012, 12, 23).day == 23
+ end
-assert('Time#dst?', '15.2.19.7.7') do
- not Time.gm(2012, 12, 23).utc.dst?
-end
+ assert('Time#dst?', '15.2.19.7.7') do
+ not Time.gm(2012, 12, 23).utc.dst?
+ end
-assert('Time#getgm', '15.2.19.7.8') do
- Time.at(1300000000.0).getgm.asctime == "Sun Mar 13 07:06:40 UTC 2011"
-end
+ assert('Time#getgm', '15.2.19.7.8') do
+ Time.at(1300000000.0).getgm.asctime == "Sun Mar 13 07:06:40 UTC 2011"
+ end
-assert('Time#getlocal', '15.2.19.7.9') do
- t1 = Time.at(1300000000.0)
- t2 = Time.at(1300000000.0)
- t3 = t1.getlocal
+ assert('Time#getlocal', '15.2.19.7.9') do
+ t1 = Time.at(1300000000.0)
+ t2 = Time.at(1300000000.0)
+ t3 = t1.getlocal
- t1 == t3 and t3 == t2.getlocal
-end
+ t1 == t3 and t3 == t2.getlocal
+ end
-assert('Time#getutc', '15.2.19.7.10') do
- Time.at(1300000000.0).getutc.asctime == "Sun Mar 13 07:06:40 UTC 2011"
-end
+ assert('Time#getutc', '15.2.19.7.10') do
+ Time.at(1300000000.0).getutc.asctime == "Sun Mar 13 07:06:40 UTC 2011"
+ end
-assert('Time#gmt?', '15.2.19.7.11') do
- Time.at(1300000000.0).utc.gmt?
-end
+ assert('Time#gmt?', '15.2.19.7.11') do
+ Time.at(1300000000.0).utc.gmt?
+ end
-# ATM not implemented
-# assert('Time#gmt_offset', '15.2.19.7.12') do
+ # ATM not implemented
+ # assert('Time#gmt_offset', '15.2.19.7.12') do
-assert('Time#gmtime', '15.2.19.7.13') do
- Time.at(1300000000.0).gmtime
-end
+ assert('Time#gmtime', '15.2.19.7.13') do
+ Time.at(1300000000.0).gmtime
+ end
-# ATM not implemented
-# assert('Time#gmtoff', '15.2.19.7.14') do
+ # ATM not implemented
+ # assert('Time#gmtoff', '15.2.19.7.14') do
-assert('Time#hour', '15.2.19.7.15') do
- Time.gm(2012, 12, 23, 7, 6).hour == 7
-end
+ assert('Time#hour', '15.2.19.7.15') do
+ Time.gm(2012, 12, 23, 7, 6).hour == 7
+ end
-# ATM doesn't really work
-# assert('Time#initialize', '15.2.19.7.16') do
+ # ATM doesn't really work
+ # assert('Time#initialize', '15.2.19.7.16') do
-assert('Time#initialize_copy', '15.2.19.7.17') do
- time_tmp_2 = Time.at(7.0e6)
- time_tmp_2.clone == time_tmp_2
-end
+ assert('Time#initialize_copy', '15.2.19.7.17') do
+ time_tmp_2 = Time.at(7.0e6)
+ time_tmp_2.clone == time_tmp_2
+ end
-assert('Time#localtime', '15.2.19.7.18') do
- t1 = Time.at(1300000000.0)
- t2 = Time.at(1300000000.0)
+ assert('Time#localtime', '15.2.19.7.18') do
+ t1 = Time.at(1300000000.0)
+ t2 = Time.at(1300000000.0)
- t1.localtime
- t1 == t2.getlocal
-end
+ t1.localtime
+ t1 == t2.getlocal
+ end
-assert('Time#mday', '15.2.19.7.19') do
- Time.gm(2012, 12, 23).mday == 23
-end
+ assert('Time#mday', '15.2.19.7.19') do
+ Time.gm(2012, 12, 23).mday == 23
+ end
-assert('Time#min', '15.2.19.7.20') do
- Time.gm(2012, 12, 23, 7, 6).min == 6
-end
+ assert('Time#min', '15.2.19.7.20') do
+ Time.gm(2012, 12, 23, 7, 6).min == 6
+ end
-assert('Time#mon', '15.2.19.7.21') do
- Time.gm(2012, 12, 23).mon == 12
-end
+ assert('Time#mon', '15.2.19.7.21') do
+ Time.gm(2012, 12, 23).mon == 12
+ end
-assert('Time#month', '15.2.19.7.22') do
- Time.gm(2012, 12, 23).month == 12
-end
+ assert('Time#month', '15.2.19.7.22') do
+ Time.gm(2012, 12, 23).month == 12
+ end
-assert('Times#sec', '15.2.19.7.23') do
- Time.gm(2012, 12, 23, 7, 6, 40).sec == 40
-end
+ assert('Times#sec', '15.2.19.7.23') do
+ Time.gm(2012, 12, 23, 7, 6, 40).sec == 40
+ end
-assert('Time#to_f', '15.2.19.7.24') do
- Time.at(1300000000.0).to_f == 1300000000.0
-end
+ assert('Time#to_f', '15.2.19.7.24') do
+ Time.at(1300000000.0).to_f == 1300000000.0
+ end
-assert('Time#to_i', '15.2.19.7.25') do
- Time.at(1300000000.0).to_i == 1300000000
-end
+ assert('Time#to_i', '15.2.19.7.25') do
+ Time.at(1300000000.0).to_i == 1300000000
+ end
-assert('Time#usec', '15.2.19.7.26') do
- Time.at(1300000000.0).usec == 0
-end
+ assert('Time#usec', '15.2.19.7.26') do
+ Time.at(1300000000.0).usec == 0
+ end
-assert('Time#utc', '15.2.19.7.27') do
- Time.at(1300000000.0).utc
-end
+ assert('Time#utc', '15.2.19.7.27') do
+ Time.at(1300000000.0).utc
+ end
-assert('Time#utc?', '15.2.19.7.28') do
- Time.at(1300000000.0).utc.utc?
-end
+ assert('Time#utc?', '15.2.19.7.28') do
+ Time.at(1300000000.0).utc.utc?
+ end
-# ATM not implemented
-# assert('Time#utc_offset', '15.2.19.7.29') do
+ # ATM not implemented
+ # assert('Time#utc_offset', '15.2.19.7.29') do
-assert('Time#wday', '15.2.19.7.30') do
- Time.gm(2012, 12, 23).wday == 0
-end
+ assert('Time#wday', '15.2.19.7.30') do
+ Time.gm(2012, 12, 23).wday == 0
+ end
-assert('Time#yday', '15.2.19.7.31') do
- Time.gm(2012, 12, 23).yday == 357
-end
+ assert('Time#yday', '15.2.19.7.31') do
+ Time.gm(2012, 12, 23).yday == 357
+ end
-assert('Time#year', '15.2.19.7.32') do
- Time.gm(2012, 12, 23).year == 2012
-end
+ assert('Time#year', '15.2.19.7.32') do
+ Time.gm(2012, 12, 23).year == 2012
+ end
-assert('Time#zone', '15.2.19.7.33') do
- Time.at(1300000000.0).utc.zone == 'UTC'
+ assert('Time#zone', '15.2.19.7.33') do
+ Time.at(1300000000.0).utc.zone == 'UTC'
+ end
end