test/measurable_test.rb in measured-2.0.0.pre3 vs test/measurable_test.rb in measured-2.0.0.pre4
- old
+ new
@@ -80,23 +80,23 @@
test "#value allows you to read the numeric value" do
assert_equal 10, @magic.value
end
test ".unit_system is set and cached" do
- unit_system = CaseSensitiveMagic.unit_system
+ unit_system = Magic.unit_system
assert_instance_of Measured::UnitSystem, unit_system
- assert_equal unit_system.__id__, CaseSensitiveMagic.unit_system.__id__
+ assert_equal unit_system.__id__, Magic.unit_system.__id__
end
test ".unit_names returns just the base unit names" do
assert_equal %w(arcane fireball ice magic_missile ultima), Magic.unit_names
end
test ".unit_names_with_aliases returns all units" do
assert_equal(
- %w(arcane fire fireball fireballs ice magic_missile magic_missiles ultima),
+ %w(arcane fire fireball fireballs ice magic\ missile magic_missile magic_missiles ultima),
Magic.unit_names_with_aliases
)
end
test ".unit_or_alias? looks at the list of units and aliases" do
@@ -113,10 +113,80 @@
assert_equal "magic", Magic.name
assert_equal "very complex thing", Example::VeryComplexThing.name
end
+ test ".parse raises on nil input" do
+ exception = assert_raises(Measured::UnitError) do
+ Magic.parse(nil)
+ end
+ assert_equal "Cannot parse blank measurement", exception.message
+ end
+
+ test ".parse raises on blank string input" do
+ exception = assert_raises(Measured::UnitError) do
+ Magic.parse("")
+ end
+ assert_equal "Cannot parse blank measurement", exception.message
+ end
+
+ test ".parse raises on a single incorrect string" do
+ exception = assert_raises(Measured::UnitError) do
+ Magic.parse("arcane")
+ end
+ assert_equal "Cannot parse measurement from 'arcane'", exception.message
+ end
+
+ test ".parse raises on a single incorrect number" do
+ exception = assert_raises(Measured::UnitError) do
+ Magic.parse("1234")
+ end
+ assert_equal "Cannot parse measurement from '1234'", exception.message
+ end
+
+ test ".parse takes input with a space between" do
+ assert_equal Magic.new(1, :arcane), Magic.parse("1 arcane")
+ end
+
+ test ".parse takes input without a space" do
+ assert_equal Magic.new(99, :ice), Magic.parse("99ice")
+ end
+
+ test ".parse takes float with a space" do
+ assert_equal Magic.new(12.345, :arcane), Magic.parse("12.345 arcane")
+ end
+
+ test ".parse takes float without a space" do
+ assert_equal Magic.new(9.9, :magic_missile), Magic.parse("9.9magic_missile")
+ end
+
+ test ".parse truncates any space before and after" do
+ assert_equal Magic.new(8765, :arcane), Magic.parse(" 8765 arcane ")
+ end
+
+ test ".parse raises with multiple periods in fractional numbers" do
+ exception = assert_raises(Measured::UnitError) do
+ Magic.parse("12.34.56 ice")
+ end
+ assert_equal "Cannot parse measurement from '12.34.56 ice'", exception.message
+ end
+
+ test ".parse parses negative numbers" do
+ assert_equal Magic.new(-12.34, :arcane), Magic.parse("-12.34 arcane")
+ end
+
+ test ".parse parses rational numbers" do
+ assert_equal Magic.new(1.5, :magic_missile), Magic.parse("3/2magic missile")
+ end
+
+ test ".parse raises on unknown unit" do
+ exception = assert_raises(Measured::UnitError) do
+ Magic.parse("1 fake")
+ end
+ assert_equal "Unit 'fake' does not exist", exception.message
+ end
+
test "#convert_to raises on an invalid unit" do
assert_raises Measured::UnitError do
@magic.convert_to(Measured::Unit.new(:punch))
end
end
@@ -154,12 +224,12 @@
assert_equal "0.375 magic_missiles", Magic.new(Rational(3, 8), :magic_missile).humanize
assert_equal "5 fireballs", Magic.new(Rational(5, 1), :fire).humanize
end
test "#inspect shows the number and the unit" do
- assert_equal "#<Magic: 10 #<Measured::CaseInsensitiveUnit: fireball (fire, fireballs) 2/3 magic_missile>>", Magic.new(10, :fire).inspect
- assert_equal "#<Magic: 1.234 #<Measured::CaseInsensitiveUnit: magic_missile (magic_missiles)>>", Magic.new(1.234, :magic_missile).inspect
+ assert_equal "#<Magic: 10 #<Measured::Unit: fireball (fire, fireballs) 2/3 magic_missile>>", Magic.new(10, :fire).inspect
+ assert_equal "#<Magic: 1.234 #<Measured::Unit: magic_missile (magic_missiles, magic missile)>>", Magic.new(1.234, :magic_missile).inspect
end
test "#zero? always returns false" do
refute_predicate Magic.new(0, :fire), :zero?
refute_predicate Magic.new(0.0, :fire), :zero?
@@ -213,7 +283,6 @@
assert_raises(ArgumentError) { @magic > 0.00 }
assert_raises(ArgumentError) { @magic < 0 }
assert_raises(ArgumentError) { @magic < BigDecimal.new(0) }
assert_raises(ArgumentError) { @magic < 0.00 }
end
-
end