| ## |
| # Numeric ISO Test |
| |
| assert('Numeric', '15.2.7') do |
| assert_equal Class, Numeric.class |
| end |
| |
| assert('Numeric#+@', '15.2.7.4.1') do |
| assert_equal(+1, +1) |
| end |
| |
| assert('Numeric#-@', '15.2.7.4.2') do |
| assert_equal(-1, -1) |
| end |
| |
| assert('Numeric#abs', '15.2.7.4.3') do |
| assert_equal(1, 1.abs) |
| assert_equal(1.0, -1.abs) |
| end |
| |
| assert('Numeric#pow') do |
| assert_equal(8, 2 ** 3) |
| assert_equal(-8, -2 ** 3) |
| assert_equal(1, 2 ** 0) |
| assert_equal(1, 2.2 ** 0) |
| assert_equal(0.5, 2 ** -1) |
| end |
| |
| assert('Numeric#/', '15.2.8.3.4') do |
| n = Class.new(Numeric){ def /(x); 15.1;end }.new |
| |
| assert_equal(2, 10/5) |
| assert_equal(0.0625, 1/16) |
| assert_equal(15.1, n/10) |
| assert_raise(TypeError){ 1/n } |
| assert_raise(TypeError){ 1/nil } |
| end |
| |
| # Not ISO specified |
| |
| assert('Numeric#**') do |
| assert_equal 8.0, 2.0**3 |
| end |