34 lines
1.5 KiB
Ruby
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 |