parsley/spec/lib/unit_conversion/parsed_number_spec.rb
2019-03-23 13:54:21 -05:00

34 lines
1.5 KiB
Ruby

require 'rails_helper'
RSpec.describe UnitConversion::ParsedNumber do
it 'converts integers' do
expect(UnitConversion::ParsedNumber.new('1').value).to eq 1
expect(UnitConversion::ParsedNumber.new('-1').value).to eq -1
expect(UnitConversion::ParsedNumber.new('0').value).to eq 0
expect(UnitConversion::ParsedNumber.new('20').value).to eq 20
expect(UnitConversion::ParsedNumber.new('103').value).to eq 103
end
it 'converts decimal numbers' do
expect(UnitConversion::ParsedNumber.new('1.0').value).to eq BigDecimal("1")
expect(UnitConversion::ParsedNumber.new('-1.0').value).to eq BigDecimal("-1")
expect(UnitConversion::ParsedNumber.new('54.33').value).to eq BigDecimal("54.33")
expect(UnitConversion::ParsedNumber.new('-54.33').value).to eq BigDecimal("-54.33")
expect(UnitConversion::ParsedNumber.new('.33').value).to eq BigDecimal("0.33")
end
it 'converts simple fractions' do
expect(UnitConversion::ParsedNumber.new('1/2').value).to eq Rational(1, 2)
expect(UnitConversion::ParsedNumber.new('-1/2').value).to eq Rational(-1, 2)
expect(UnitConversion::ParsedNumber.new('3/16').value).to eq Rational(3, 16)
end
it 'converts fractions with whole numbers' do
expect(UnitConversion::ParsedNumber.new('1 1/2').value).to eq Rational(3, 2)
expect(UnitConversion::ParsedNumber.new('-1 1/2').value).to eq Rational(-3, 2)
expect(UnitConversion::ParsedNumber.new('4 3/4').value).to eq Rational(19, 4)
expect(UnitConversion::ParsedNumber.new('18 9/10').value).to eq Rational(189, 10)
end
end