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