rpl.rb/spec/language_trig_spec.rb
2022-02-28 11:40:47 +01:00

74 lines
1.9 KiB
Ruby

# coding: utf-8
# frozen_string_literal: true
require 'minitest/autorun'
require 'rpl'
require 'rpl/types'
class TesttLanguageOperations < MiniTest::Test
include Types
def test_pi
interpreter = Rpl.new
interpreter.run 'pi'
assert_equal [Types.new_object( RplNumeric, BigMath.PI( RplNumeric.precision ) )],
interpreter.stack
end
def test_sin
interpreter = Rpl.new
interpreter.run '3 sin'
assert_equal [Types.new_object( RplNumeric, BigMath.sin( BigDecimal( 3 ), RplNumeric.precision ) )],
interpreter.stack
end
def test_asin
interpreter = Rpl.new
interpreter.run '1 asin pi 2 / =='
assert_equal [Types.new_object( RplBoolean, true )],
interpreter.stack
end
def test_cos
interpreter = Rpl.new
interpreter.run '3 cos'
assert_equal [Types.new_object( RplNumeric, BigMath.cos( BigDecimal( 3 ), RplNumeric.precision ) )],
interpreter.stack
end
def test_acos
interpreter = Rpl.new
interpreter.run '0 acos pi 2 / =='
assert_equal [Types.new_object( RplBoolean, true )],
interpreter.stack
end
def test_tan
interpreter = Rpl.new
interpreter.run '0 tan 0 =='
assert_equal [Types.new_object( RplBoolean, true )],
interpreter.stack
end
def test_atan
interpreter = Rpl.new
interpreter.run '1 atan'
assert_equal [Types.new_object( RplNumeric, BigMath.atan( BigDecimal( 1 ), RplNumeric.precision ) )],
interpreter.stack
end
def test_d2r
interpreter = Rpl.new
interpreter.run '90 d→r'
assert_equal [Types.new_object( RplNumeric, BigMath.PI( RplNumeric.precision ) / 2 )],
interpreter.stack
end
def test_r2d
interpreter = Rpl.new
interpreter.run 'pi r→d'
assert_equal [Types.new_object( RplNumeric, 180 )],
interpreter.stack
end
end