34 lines
1.6 KiB
Ruby
34 lines
1.6 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.new("1")
|
||
|
expect(UnitConversion::ParsedNumber.new('-1.0').value).to eq BigDecimal.new("-1")
|
||
|
expect(UnitConversion::ParsedNumber.new('54.33').value).to eq BigDecimal.new("54.33")
|
||
|
expect(UnitConversion::ParsedNumber.new('-54.33').value).to eq BigDecimal.new("-54.33")
|
||
|
expect(UnitConversion::ParsedNumber.new('.33').value).to eq BigDecimal.new("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
|