quantitymanager 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/doc/classes/Array.html +159 -0
- data/doc/classes/Array.src/M000001.html +21 -0
- data/doc/classes/Array.src/M000002.html +19 -0
- data/doc/classes/Array.src/M000040.html +21 -0
- data/doc/classes/Array.src/M000041.html +19 -0
- data/doc/classes/CalculatorTest.html +332 -0
- data/doc/classes/CalculatorTest.src/M000022.html +33 -0
- data/doc/classes/CalculatorTest.src/M000023.html +28 -0
- data/doc/classes/CalculatorTest.src/M000024.html +25 -0
- data/doc/classes/CalculatorTest.src/M000025.html +34 -0
- data/doc/classes/CalculatorTest.src/M000026.html +27 -0
- data/doc/classes/CalculatorTest.src/M000027.html +28 -0
- data/doc/classes/CalculatorTest.src/M000028.html +26 -0
- data/doc/classes/CalculatorTest.src/M000029.html +25 -0
- data/doc/classes/CalculatorTest.src/M000030.html +26 -0
- data/doc/classes/CalculatorTest.src/M000031.html +31 -0
- data/doc/classes/CalculatorTest.src/M000032.html +23 -0
- data/doc/classes/CalculatorTest.src/M000033.html +23 -0
- data/doc/classes/CalculatorTest.src/M000034.html +32 -0
- data/doc/classes/CalculatorTest.src/M000035.html +20 -0
- data/doc/classes/CompasedUnitTest.html +279 -0
- data/doc/classes/CompasedUnitTest.src/M000001.html +32 -0
- data/doc/classes/CompasedUnitTest.src/M000002.html +31 -0
- data/doc/classes/CompasedUnitTest.src/M000003.html +28 -0
- data/doc/classes/CompasedUnitTest.src/M000004.html +28 -0
- data/doc/classes/CompasedUnitTest.src/M000005.html +31 -0
- data/doc/classes/CompasedUnitTest.src/M000006.html +23 -0
- data/doc/classes/CompasedUnitTest.src/M000007.html +30 -0
- data/doc/classes/CompasedUnitTest.src/M000008.html +24 -0
- data/doc/classes/CompasedUnitTest.src/M000009.html +27 -0
- data/doc/classes/CompasedUnitTest.src/M000010.html +24 -0
- data/doc/classes/Configuration.html +184 -0
- data/doc/classes/Configuration.src/M000003.html +19 -0
- data/doc/classes/Configuration.src/M000004.html +18 -0
- data/doc/classes/Configuration.src/M000005.html +18 -0
- data/doc/classes/Configuration.src/M000006.html +24 -0
- data/doc/classes/Configuration.src/M000042.html +19 -0
- data/doc/classes/Configuration.src/M000043.html +18 -0
- data/doc/classes/Configuration.src/M000044.html +18 -0
- data/doc/classes/Configuration.src/M000045.html +24 -0
- data/doc/classes/ConfigurationTest.html +182 -0
- data/doc/classes/ConfigurationTest.src/M000065.html +31 -0
- data/doc/classes/ConfigurationTest.src/M000066.html +27 -0
- data/doc/classes/ConfigurationTest.src/M000067.html +35 -0
- data/doc/classes/ConfigurationTest.src/M000068.html +24 -0
- data/doc/classes/CustomUnitConversionTest.html +212 -0
- data/doc/classes/CustomUnitConversionTest.src/M000052.html +31 -0
- data/doc/classes/CustomUnitConversionTest.src/M000053.html +25 -0
- data/doc/classes/CustomUnitConversionTest.src/M000054.html +20 -0
- data/doc/classes/CustomUnitConversionTest.src/M000055.html +26 -0
- data/doc/classes/CustomUnitConversionTest.src/M000056.html +26 -0
- data/doc/classes/CustomUnitConversionTest.src/M000057.html +24 -0
- data/doc/classes/Numeric.html +125 -0
- data/doc/classes/QuantifiableTest.html +189 -0
- data/doc/classes/QuantifiableTest.src/M000036.html +24 -0
- data/doc/classes/QuantifiableTest.src/M000037.html +26 -0
- data/doc/classes/QuantifiableTest.src/M000038.html +41 -0
- data/doc/classes/QuantifiableTest.src/M000039.html +23 -0
- data/doc/classes/Quantity/Calculable.html +213 -0
- data/doc/classes/Quantity/Calculable.src/M000010.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000011.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000012.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000013.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000014.html +21 -0
- data/doc/classes/Quantity/Calculable.src/M000015.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000072.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000073.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000074.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000075.html +18 -0
- data/doc/classes/Quantity/Calculable.src/M000076.html +21 -0
- data/doc/classes/Quantity/Calculable.src/M000077.html +18 -0
- data/doc/classes/Quantity/Calculator.html +240 -0
- data/doc/classes/Quantity/Calculator.src/M000021.html +20 -0
- data/doc/classes/Quantity/Calculator.src/M000022.html +18 -0
- data/doc/classes/Quantity/Calculator.src/M000023.html +26 -0
- data/doc/classes/Quantity/Calculator.src/M000024.html +23 -0
- data/doc/classes/Quantity/Calculator.src/M000025.html +31 -0
- data/doc/classes/Quantity/Calculator.src/M000026.html +25 -0
- data/doc/classes/Quantity/Calculator.src/M000083.html +20 -0
- data/doc/classes/Quantity/Calculator.src/M000084.html +18 -0
- data/doc/classes/Quantity/Calculator.src/M000085.html +26 -0
- data/doc/classes/Quantity/Calculator.src/M000086.html +23 -0
- data/doc/classes/Quantity/Calculator.src/M000087.html +31 -0
- data/doc/classes/Quantity/Calculator.src/M000088.html +25 -0
- data/doc/classes/Quantity/Measurable.html +153 -0
- data/doc/classes/Quantity/Measurable.src/M000008.html +18 -0
- data/doc/classes/Quantity/Measurable.src/M000009.html +18 -0
- data/doc/classes/Quantity/Measurable.src/M000070.html +18 -0
- data/doc/classes/Quantity/Measurable.src/M000071.html +18 -0
- data/doc/classes/Quantity/OperationInfo.html +184 -0
- data/doc/classes/Quantity/OperationInfo.src/M000027.html +24 -0
- data/doc/classes/Quantity/OperationInfo.src/M000028.html +21 -0
- data/doc/classes/Quantity/OperationInfo.src/M000089.html +24 -0
- data/doc/classes/Quantity/OperationInfo.src/M000090.html +21 -0
- data/doc/classes/Quantity/Quantifiable.html +131 -0
- data/doc/classes/Quantity/Quantifiable.src/M000007.html +18 -0
- data/doc/classes/Quantity/Quantifiable.src/M000069.html +18 -0
- data/doc/classes/Quantity/Quantity.html +211 -0
- data/doc/classes/Quantity/Quantity.src/M000016.html +20 -0
- data/doc/classes/Quantity/Quantity.src/M000017.html +20 -0
- data/doc/classes/Quantity/Quantity.src/M000018.html +20 -0
- data/doc/classes/Quantity/Quantity.src/M000078.html +20 -0
- data/doc/classes/Quantity/Quantity.src/M000079.html +20 -0
- data/doc/classes/Quantity/Quantity.src/M000080.html +20 -0
- data/doc/classes/Quantity/QuantityInfo.html +179 -0
- data/doc/classes/Quantity/QuantityInfo.src/M000019.html +19 -0
- data/doc/classes/Quantity/QuantityInfo.src/M000020.html +18 -0
- data/doc/classes/Quantity/QuantityInfo.src/M000081.html +19 -0
- data/doc/classes/Quantity/QuantityInfo.src/M000082.html +18 -0
- data/doc/classes/Quantity.html +121 -0
- data/doc/classes/QuantityTest.html +220 -0
- data/doc/classes/QuantityTest.src/M000046.html +32 -0
- data/doc/classes/QuantityTest.src/M000047.html +33 -0
- data/doc/classes/QuantityTest.src/M000048.html +27 -0
- data/doc/classes/QuantityTest.src/M000049.html +20 -0
- data/doc/classes/QuantityTest.src/M000050.html +22 -0
- data/doc/classes/QuantityTest.src/M000051.html +20 -0
- data/doc/classes/SimpleUnitTest.html +234 -0
- data/doc/classes/SimpleUnitTest.src/M000058.html +24 -0
- data/doc/classes/SimpleUnitTest.src/M000059.html +25 -0
- data/doc/classes/SimpleUnitTest.src/M000060.html +21 -0
- data/doc/classes/SimpleUnitTest.src/M000061.html +20 -0
- data/doc/classes/SimpleUnitTest.src/M000062.html +26 -0
- data/doc/classes/SimpleUnitTest.src/M000063.html +21 -0
- data/doc/classes/SimpleUnitTest.src/M000064.html +18 -0
- data/doc/classes/SpecParserTest.html +174 -0
- data/doc/classes/SpecParserTest.src/M000019.html +25 -0
- data/doc/classes/SpecParserTest.src/M000020.html +32 -0
- data/doc/classes/SpecParserTest.src/M000021.html +31 -0
- data/doc/classes/Test.html +101 -0
- data/doc/classes/Unit/Comparable.html +156 -0
- data/doc/classes/Unit/Comparable.src/M000030.html +22 -0
- data/doc/classes/Unit/Comparable.src/M000031.html +22 -0
- data/doc/classes/Unit/Comparable.src/M000092.html +22 -0
- data/doc/classes/Unit/Comparable.src/M000093.html +22 -0
- data/doc/classes/Unit/ComposedUnit.html +301 -0
- data/doc/classes/Unit/ComposedUnit.src/M000044.html +22 -0
- data/doc/classes/Unit/ComposedUnit.src/M000045.html +25 -0
- data/doc/classes/Unit/ComposedUnit.src/M000046.html +25 -0
- data/doc/classes/Unit/ComposedUnit.src/M000047.html +22 -0
- data/doc/classes/Unit/ComposedUnit.src/M000048.html +29 -0
- data/doc/classes/Unit/ComposedUnit.src/M000049.html +24 -0
- data/doc/classes/Unit/ComposedUnit.src/M000050.html +25 -0
- data/doc/classes/Unit/ComposedUnit.src/M000051.html +18 -0
- data/doc/classes/Unit/ComposedUnit.src/M000107.html +22 -0
- data/doc/classes/Unit/ComposedUnit.src/M000108.html +25 -0
- data/doc/classes/Unit/ComposedUnit.src/M000109.html +25 -0
- data/doc/classes/Unit/ComposedUnit.src/M000110.html +22 -0
- data/doc/classes/Unit/ComposedUnit.src/M000111.html +29 -0
- data/doc/classes/Unit/ComposedUnit.src/M000112.html +24 -0
- data/doc/classes/Unit/ComposedUnit.src/M000113.html +25 -0
- data/doc/classes/Unit/ComposedUnit.src/M000114.html +18 -0
- data/doc/classes/Unit/Optimizer.html +152 -0
- data/doc/classes/Unit/Optimizer.src/M000042.html +44 -0
- data/doc/classes/Unit/Optimizer.src/M000043.html +18 -0
- data/doc/classes/Unit/Optimizer.src/M000105.html +44 -0
- data/doc/classes/Unit/Optimizer.src/M000106.html +18 -0
- data/doc/classes/Unit/Parser.html +176 -0
- data/doc/classes/Unit/Parser.src/M000039.html +18 -0
- data/doc/classes/Unit/Parser.src/M000040.html +25 -0
- data/doc/classes/Unit/Parser.src/M000041.html +19 -0
- data/doc/classes/Unit/Parser.src/M000102.html +18 -0
- data/doc/classes/Unit/Parser.src/M000103.html +25 -0
- data/doc/classes/Unit/Parser.src/M000104.html +19 -0
- data/doc/classes/Unit/SimpleUnit.html +287 -0
- data/doc/classes/Unit/SimpleUnit.src/M000032.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000033.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000034.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000035.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000036.html +18 -0
- data/doc/classes/Unit/SimpleUnit.src/M000037.html +21 -0
- data/doc/classes/Unit/SimpleUnit.src/M000038.html +18 -0
- data/doc/classes/Unit/SimpleUnit.src/M000094.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000095.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000096.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000097.html +20 -0
- data/doc/classes/Unit/SimpleUnit.src/M000098.html +18 -0
- data/doc/classes/Unit/SimpleUnit.src/M000099.html +21 -0
- data/doc/classes/Unit/SimpleUnit.src/M000100.html +18 -0
- data/doc/classes/Unit/SymbolConverter.html +131 -0
- data/doc/classes/Unit/SymbolConverter.src/M000029.html +24 -0
- data/doc/classes/Unit/SymbolConverter.src/M000091.html +24 -0
- data/doc/classes/Unit/TestCase.html +146 -0
- data/doc/classes/Unit/TestCase.src/M000101.html +24 -0
- data/doc/classes/Unit.html +120 -0
- data/doc/classes/UnitOptemizerTest.html +249 -0
- data/doc/classes/UnitOptemizerTest.src/M000011.html +31 -0
- data/doc/classes/UnitOptemizerTest.src/M000012.html +25 -0
- data/doc/classes/UnitOptemizerTest.src/M000013.html +27 -0
- data/doc/classes/UnitOptemizerTest.src/M000014.html +27 -0
- data/doc/classes/UnitOptemizerTest.src/M000015.html +27 -0
- data/doc/classes/UnitOptemizerTest.src/M000016.html +26 -0
- data/doc/classes/UnitOptemizerTest.src/M000017.html +23 -0
- data/doc/classes/UnitOptemizerTest.src/M000018.html +22 -0
- data/doc/created.rid +1 -0
- data/doc/files/config/default_configuration_rb.html +108 -0
- data/doc/files/quantity_rb.html +113 -0
- data/doc/files/test/all_tests_rb.html +108 -0
- data/doc/files/test/test_helper_rb.html +110 -0
- data/doc/files/test/unit/calculator_test_rb.html +109 -0
- data/doc/files/test/unit/composed_unit_test_rb.html +101 -0
- data/doc/files/test/unit/configuration_test_rb.html +109 -0
- data/doc/files/test/unit/custom_conversion_test_rb.html +109 -0
- data/doc/files/test/unit/quantifiable_test_rb.html +101 -0
- data/doc/files/test/unit/quantity_test_rb.html +101 -0
- data/doc/files/test/unit/simple_unit_test_rb.html +101 -0
- data/doc/files/test/unit/unit_optimizer_test_rb.html +101 -0
- data/doc/files/test/unit/unit_spec_parser_test_rb.html +101 -0
- data/doc/files/unitmanager/calculator_rb.html +101 -0
- data/doc/files/unitmanager/configuration_rb.html +101 -0
- data/doc/files/unitmanager/quantity_rb.html +101 -0
- data/doc/files/unitmanager/simple_unit_rb.html +108 -0
- data/doc/files/unitmanager/unit_composition_rb.html +101 -0
- data/doc/fr_class_index.html +44 -0
- data/doc/fr_file_index.html +33 -0
- data/doc/fr_method_index.html +77 -0
- data/doc/index.html +24 -0
- data/lib/config/default_configuration.rb +115 -0
- data/lib/quantity.rb +34 -0
- data/lib/unitmanager/calculator.rb +195 -0
- data/lib/unitmanager/configuration.rb +26 -0
- data/lib/unitmanager/quantity.rb +167 -0
- data/lib/unitmanager/simple_unit.rb +155 -0
- data/lib/unitmanager/unit_composition.rb +217 -0
- data/test/all_tests.rb +8 -0
- data/test/calculator_test.rb +194 -0
- data/test/composed_unit_test.rb +169 -0
- data/test/configuration_test.rb +70 -0
- data/test/custom_conversion_test.rb +90 -0
- data/test/quantifiable_test.rb +73 -0
- data/test/quantity_test.rb +79 -0
- data/test/simple_unit_test.rb +59 -0
- data/test/test_helper.rb +18 -0
- data/test/unit_optimizer_test.rb +104 -0
- data/test/unit_spec_parser_test.rb +50 -0
- metadata +307 -0
@@ -0,0 +1,169 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class CompasedUnitTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include Unit
|
7
|
+
|
8
|
+
def setup
|
9
|
+
|
10
|
+
@units = {}
|
11
|
+
@units[:mm] = SimpleUnit.new(:unit => :mm)
|
12
|
+
@units[:cm] = SimpleUnit.new(:unit => :cm, :based_on => @units[:mm], :coefficient => 10)
|
13
|
+
@units[:m] = SimpleUnit.new(:unit => :m, :based_on => @units[:cm], :coefficient => 100)
|
14
|
+
|
15
|
+
@units[:g] = SimpleUnit.new(:unit => :g)
|
16
|
+
@units[:kg] = SimpleUnit.new(:unit => :kg, :based_on => @units[:g], :coefficient => 1000.0)
|
17
|
+
@units[:oz] = SimpleUnit.new(:unit => :oz, :based_on => @units[:g], :coefficient => 28.349523125)
|
18
|
+
@units[:lb] = SimpleUnit.new(:unit => :lb, :based_on => @units[:oz], :coefficient => 16)
|
19
|
+
@units[:mg] = SimpleUnit.new(:unit => :mg, :based_on => @units[:g], :coefficient => 0.001)
|
20
|
+
|
21
|
+
@units[:sec] = SimpleUnit.new(:unit => :sec)
|
22
|
+
@units[:A] = SimpleUnit.new(:unit => :A)
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def test_to_base_conversion
|
28
|
+
|
29
|
+
unit = ComposedUnit.new({
|
30
|
+
:dividends => [@units[:oz]]
|
31
|
+
})
|
32
|
+
|
33
|
+
assert_in_delta(2834.9523125, unit.to_base(100), 0.0001)
|
34
|
+
|
35
|
+
unit = ComposedUnit.new({
|
36
|
+
:dividends => [@units[:lb]],
|
37
|
+
:divisors => [@units[:m]]
|
38
|
+
})
|
39
|
+
|
40
|
+
assert_in_delta(45.359237, unit.to_base(100), 0.0001)
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_from_base_conversion
|
45
|
+
unit = ComposedUnit.new({ :dividends => [@units[:oz]] })
|
46
|
+
|
47
|
+
assert_in_delta(100, unit.from_base(2834.9523125), 0.0001)
|
48
|
+
|
49
|
+
unit = ComposedUnit.new({
|
50
|
+
:dividends => [@units[:lb]],
|
51
|
+
:divisors => [@units[:m]]
|
52
|
+
})
|
53
|
+
|
54
|
+
assert_in_delta(100, unit.from_base(45.359237), 0.0001)
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_equal_units
|
59
|
+
oz = ComposedUnit.new( { :dividends => [@units[:oz]] } )
|
60
|
+
|
61
|
+
lb = ComposedUnit.new( { :dividends => [@units[:lb]] })
|
62
|
+
|
63
|
+
assert_not_equal(oz, lb)
|
64
|
+
|
65
|
+
ozee = ComposedUnit.new({ :dividends => [@units[:oz], @units[:mm]] })
|
66
|
+
|
67
|
+
mmee = ComposedUnit.new({ :dividends => [@units[:mm], @units[:oz]] })
|
68
|
+
|
69
|
+
assert_equal(ozee, mmee)
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_compatible_units
|
73
|
+
oz = ComposedUnit.new( { :dividends => [@units[:oz]] } )
|
74
|
+
lb = ComposedUnit.new( { :dividends => [@units[:lb]] })
|
75
|
+
|
76
|
+
assert_equal(true, oz.compatible?(lb))
|
77
|
+
|
78
|
+
ozee = ComposedUnit.new({ :dividends => [@units[:oz], @units[:mm]] })
|
79
|
+
mmee = ComposedUnit.new({ :dividends => [@units[:mm], @units[:oz]] })
|
80
|
+
|
81
|
+
assert_equal(true, ozee.compatible?(mmee))
|
82
|
+
|
83
|
+
ozee = ComposedUnit.new({ :dividends => [@units[:oz], @units[:sec]] })
|
84
|
+
mmee = ComposedUnit.new({ :dividends => [@units[:mm], @units[:oz]] })
|
85
|
+
|
86
|
+
assert_equal(false, ozee.compatible?(mmee))
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_get_unit
|
90
|
+
unit = ComposedUnit.new({
|
91
|
+
:dividends => [@units[:oz], @units[:sec]],
|
92
|
+
:divisors => [@units[:mm]]})
|
93
|
+
|
94
|
+
assert_equal([:oz, :sec], unit[:dividends])
|
95
|
+
assert_equal([:mm], unit[:divisors])
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_get_unit_string
|
99
|
+
|
100
|
+
dividend = ComposedUnit.new({
|
101
|
+
:dividends => [@units[:oz]],
|
102
|
+
:divisors => [@units[:mm]]})
|
103
|
+
|
104
|
+
divisor = ComposedUnit.new({
|
105
|
+
:dividends => [@units[:sec]],
|
106
|
+
:divisors => [@units[:A]]})
|
107
|
+
|
108
|
+
sample = ComposedUnit.new({:dividends => [dividend], :divisors => [divisor]})
|
109
|
+
|
110
|
+
assert_equal("oz*A/mm*sec", sample[:string])
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_hierarchy_base
|
115
|
+
unit = ComposedUnit.new({ :dividends => [@units[:lb]] })
|
116
|
+
|
117
|
+
base_unit = unit.h_base
|
118
|
+
|
119
|
+
assert_equal([@units[:g]], base_unit.dividends)
|
120
|
+
assert_equal([], base_unit.divisors)
|
121
|
+
assert_in_delta(1.0, base_unit.coefficient, 0.0001)
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_reverse_unit
|
125
|
+
unit = ComposedUnit.new({
|
126
|
+
:coefficient => 20.0,
|
127
|
+
:dividends => [@units[:oz], @units[:sec]],
|
128
|
+
:divisors => [@units[:mm]]})
|
129
|
+
|
130
|
+
reversed_unit = unit.reverse
|
131
|
+
|
132
|
+
assert_equal(0.05, reversed_unit.coefficient)
|
133
|
+
assert_equal([@units[:mm]], reversed_unit.dividends)
|
134
|
+
assert_equal([@units[:oz], @units[:sec]], reversed_unit.divisors)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_symbol_array_operations
|
138
|
+
sample = [:mm, :cm, :mm] + [:cm, :lb]
|
139
|
+
|
140
|
+
assert_equal([:mm, :cm, :mm, :cm, :lb], sample)
|
141
|
+
|
142
|
+
sample += (nil || [])
|
143
|
+
|
144
|
+
assert_equal([:mm, :cm, :mm, :cm, :lb], sample)
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_array_contains
|
148
|
+
assert_equal(false, [:mm, :sq_cm].contains?([:mm, :mm]))
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_contains
|
152
|
+
@units[:L] = SimpleUnit.new(:unit => :L)
|
153
|
+
@units[:cu_in] = SimpleUnit.new(:unit => :cu_in, :based_on => @units[:L], :coefficient => 0.016387064)
|
154
|
+
|
155
|
+
@units[:sq_mm] = SimpleUnit.new(:unit => :sq_mm)
|
156
|
+
@units[:sq_cm] = SimpleUnit.new(:unit => :sq_cm, :based_on => @units[:sq_mm], :coefficient => 100)
|
157
|
+
|
158
|
+
unit = ComposedUnit.new(
|
159
|
+
:dividends => [@units[:mm], @units[:sq_cm]],
|
160
|
+
:divisors => [@units[:cu_in]]
|
161
|
+
)
|
162
|
+
|
163
|
+
other = ComposedUnit.new(:dividends => [@units[:mm], @units[:mm]] )
|
164
|
+
|
165
|
+
assert_equal(false, unit.contains?(other))
|
166
|
+
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
include Unit
|
4
|
+
include Quantity
|
5
|
+
|
6
|
+
class ConfigurationTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
#Sinse now we can add units tocalculator, lets try it here...
|
10
|
+
@config = Configuration.new
|
11
|
+
|
12
|
+
@config.unit :unit => :mm
|
13
|
+
@config.unit :unit => :cm, :based_on => :mm, :coefficient => 10
|
14
|
+
@config.unit :unit => :m, :based_on => :cm, :coefficient => 100
|
15
|
+
|
16
|
+
@config.unit :unit => :g
|
17
|
+
@config.unit :unit => :kg, :based_on => :g, :coefficient => 1000.0
|
18
|
+
@config.unit :unit => :oz, :based_on => :g, :coefficient => 28.349523125
|
19
|
+
@config.unit :unit => :lb, :based_on => :oz, :coefficient => 16
|
20
|
+
@config.unit :unit => :mg, :based_on => :g, :coefficient => 0.001
|
21
|
+
|
22
|
+
@config.unit :unit => :sec
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def test_create_calculator
|
27
|
+
|
28
|
+
calc = @config.calc
|
29
|
+
|
30
|
+
assert_not_nil calc
|
31
|
+
assert_nothing_raised(RuntimeError){ calc.add_conversion 1.m => 10.lb }
|
32
|
+
assert_equal(0, @config.calc.conversions.length)
|
33
|
+
assert_nothing_raised(RuntimeError){@config.conversion 1.m => 5.lb}
|
34
|
+
|
35
|
+
qty = calc.exp(:lb){1.m}
|
36
|
+
assert_in_delta(10.0, qty.value, 0.0001)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_block_initialization
|
40
|
+
|
41
|
+
config = Configuration.new(){|conf|
|
42
|
+
conf.unit :unit => :mm
|
43
|
+
conf.unit :unit => :cm, :based_on => :mm, :coefficient => 10
|
44
|
+
conf.unit :unit => :m, :based_on => :cm, :coefficient => 100
|
45
|
+
|
46
|
+
conf.unit :unit => :g
|
47
|
+
conf.unit :unit => :oz, :based_on => :g, :coefficient => 28.349523125
|
48
|
+
conf.unit :unit => :lb, :based_on => :oz, :coefficient => 16
|
49
|
+
|
50
|
+
conf.conversion 1.m => 5.lb
|
51
|
+
|
52
|
+
}
|
53
|
+
|
54
|
+
calc = config.calc
|
55
|
+
|
56
|
+
qty = calc.exp(:lb){1.m}
|
57
|
+
assert_in_delta(5.0, qty.value, 0.0001)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_default_configuration
|
61
|
+
assert_not_nil($configuration)
|
62
|
+
|
63
|
+
calc = $configuration.calc
|
64
|
+
|
65
|
+
qty = calc.exp(:m){20.cm + 600.mm}
|
66
|
+
|
67
|
+
assert_in_delta(0.8, qty.value, 0.0001)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
include Unit
|
4
|
+
include Quantity
|
5
|
+
|
6
|
+
class CustomUnitConversionTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
#Sinse now we can add units tocalculator, lets try it here...
|
10
|
+
@calc = Calculator.new
|
11
|
+
|
12
|
+
@calc.add_unit :unit => :mm
|
13
|
+
@calc.add_unit :unit => :cm, :based_on => :mm, :coefficient => 10
|
14
|
+
@calc.add_unit :unit => :m, :based_on => :cm, :coefficient => 100
|
15
|
+
|
16
|
+
@calc.add_unit :unit => :g
|
17
|
+
@calc.add_unit :unit => :kg, :based_on => :g, :coefficient => 1000.0
|
18
|
+
@calc.add_unit :unit => :oz, :based_on => :g, :coefficient => 28.349523125
|
19
|
+
@calc.add_unit :unit => :lb, :based_on => :oz, :coefficient => 16
|
20
|
+
@calc.add_unit :unit => :mg, :based_on => :g, :coefficient => 0.001
|
21
|
+
|
22
|
+
@calc.add_unit :unit => :sec
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_add_custom_unit_conversion
|
26
|
+
@calc.add_unit :unit => :PA
|
27
|
+
@calc.add_unit :unit => :sq_in
|
28
|
+
|
29
|
+
@calc.add_conversion 1.PA => 6894.757.lb / 1.sq_in
|
30
|
+
assert_equal(2, @calc.conversions.length)
|
31
|
+
|
32
|
+
@calc.add_conversion 1.m => 10.lb
|
33
|
+
assert_equal(4, @calc.conversions.length)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_add_unknown_unit_conversion
|
37
|
+
|
38
|
+
assert_raise(RuntimeError) { @calc.add_conversion 1.PA => 6894.757.lb / 1.sq_in }
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_conversion_usage
|
43
|
+
@calc.add_conversion 1.m => 10.lb
|
44
|
+
|
45
|
+
qty = @calc.exp(:m) {50.cm + 1.lb}
|
46
|
+
assert_in_delta(0.6, qty.value, 0.0001)
|
47
|
+
assert_equal([:m], qty.unit[:dividends])
|
48
|
+
|
49
|
+
qty = @calc.exp(:m){10.lb}
|
50
|
+
assert_in_delta(1, qty.value, 0.0001)
|
51
|
+
assert_equal([:m], qty.unit[:dividends])
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_composed_conversion_usage
|
55
|
+
|
56
|
+
@calc.add_unit :unit =>:t
|
57
|
+
@calc.add_conversion 1.m => 10.lb
|
58
|
+
@calc.add_conversion 1.lb => 10.t
|
59
|
+
|
60
|
+
qty = @calc.exp(:m) {200.cm + 300.t}
|
61
|
+
|
62
|
+
assert_in_delta(5, qty.value, 0.0001)
|
63
|
+
assert_equal([:m], qty.unit[:dividends])
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
def test_numeric_coerce
|
68
|
+
@calc.add_unit :unit => :Hz
|
69
|
+
@calc.add_conversion 1.Hz => 1.0 / 1.sec
|
70
|
+
|
71
|
+
qty = @calc.exp(:sec) {60.Hz}
|
72
|
+
|
73
|
+
assert_in_delta(0.016666667, qty.value, 0.0001)
|
74
|
+
assert_equal([:sec], qty[:dividends])
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
def test_default_configuration_conversions
|
79
|
+
calc = $configuration.calc
|
80
|
+
|
81
|
+
assert_nothing_raised(RuntimeError) {
|
82
|
+
qty = calc.exp(:mm) {1.cu_in / 1.sq_cm}
|
83
|
+
|
84
|
+
assert_in_delta(163.8706, qty.value, 0.0001)
|
85
|
+
assert_equal("mm", qty[:string])
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class QuantifiableTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include Quantity
|
6
|
+
|
7
|
+
def test_quantifiable_validation
|
8
|
+
|
9
|
+
info = QuantityInfo.new(14, :mm)
|
10
|
+
|
11
|
+
assert_raise(RuntimeError){ info + "Alex" }
|
12
|
+
|
13
|
+
assert_nothing_raised(RuntimeError) {info + QuantityInfo.new(10, :mm)}
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_numeric_mixin
|
18
|
+
info = 12.mm
|
19
|
+
assert(info.kind_of?(QuantityInfo))
|
20
|
+
assert_equal(12, info.value)
|
21
|
+
assert_equal(:mm, info.unit_sym)
|
22
|
+
|
23
|
+
info = 12.566.mm
|
24
|
+
assert(info.kind_of?(QuantityInfo))
|
25
|
+
assert_in_delta(12.566, info.value, 0.0001)
|
26
|
+
assert_equal(:mm, info.unit_sym)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_operation_mixin
|
30
|
+
|
31
|
+
operation = 10.mm + 23.cm
|
32
|
+
|
33
|
+
assert(operation.kind_of?(OperationInfo))
|
34
|
+
assert(operation.first_operand.kind_of?(QuantityInfo))
|
35
|
+
assert(operation.second_operand.kind_of?(QuantityInfo))
|
36
|
+
assert_equal(:+, operation.operation)
|
37
|
+
|
38
|
+
assert_raise(RuntimeError){ 17.lb + "Alex" }
|
39
|
+
|
40
|
+
operation = (24.lb + 15.8.kg) / (3.cm - 6.mm)
|
41
|
+
|
42
|
+
assert(operation.kind_of?(OperationInfo))
|
43
|
+
assert(operation.first_operand.kind_of?(OperationInfo))
|
44
|
+
assert(operation.second_operand.kind_of?(OperationInfo))
|
45
|
+
assert_equal(:/, operation.operation)
|
46
|
+
|
47
|
+
assert(operation.first_operand.first_operand.kind_of?(QuantityInfo))
|
48
|
+
assert(operation.first_operand.second_operand.kind_of?(QuantityInfo))
|
49
|
+
assert_equal(:+, operation.first_operand.operation)
|
50
|
+
|
51
|
+
assert(operation.second_operand.first_operand.kind_of?(QuantityInfo))
|
52
|
+
assert(operation.second_operand.second_operand.kind_of?(QuantityInfo))
|
53
|
+
assert_equal(:-, operation.second_operand.operation)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_mixed_operation
|
57
|
+
|
58
|
+
assert_nothing_raised(RuntimeError) {
|
59
|
+
|
60
|
+
info = 10.mm * 10
|
61
|
+
assert(info.kind_of?(OperationInfo))
|
62
|
+
|
63
|
+
info = 10.mm + 10
|
64
|
+
assert(info.kind_of?(OperationInfo))
|
65
|
+
|
66
|
+
info = 10 + 34.mm
|
67
|
+
assert(info.kind_of?(OperationInfo))
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class QuantityTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include Unit
|
6
|
+
include Quantity
|
7
|
+
|
8
|
+
def setup
|
9
|
+
|
10
|
+
@units = {}
|
11
|
+
@units[:mm] = SimpleUnit.new(:unit => :mm)
|
12
|
+
@units[:cm] = SimpleUnit.new(:unit => :cm, :based_on => @units[:mm], :coefficient => 10)
|
13
|
+
@units[:m] = SimpleUnit.new(:unit => :m, :based_on => @units[:cm], :coefficient => 100)
|
14
|
+
|
15
|
+
@units[:g] = SimpleUnit.new(:unit => :g)
|
16
|
+
@units[:kg] = SimpleUnit.new(:unit => :kg, :based_on => @units[:g], :coefficient => 1000.0)
|
17
|
+
@units[:oz] = SimpleUnit.new(:unit => :oz, :based_on => @units[:g], :coefficient => 28.349523125)
|
18
|
+
@units[:lb] = SimpleUnit.new(:unit => :lb, :based_on => @units[:oz], :coefficient => 16)
|
19
|
+
@units[:mg] = SimpleUnit.new(:unit => :mg, :based_on => @units[:g], :coefficient => 0.001)
|
20
|
+
|
21
|
+
@units[:sec] = SimpleUnit.new(:unit => :sec)
|
22
|
+
|
23
|
+
@calc = Calculator.new(@units)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def test_simple_operation
|
28
|
+
q = @calc.quantity(10, :mm)
|
29
|
+
|
30
|
+
assert_nothing_raised(RuntimeError){ q + 10.cm}
|
31
|
+
|
32
|
+
assert_raise(RuntimeError){ 15.lb - q}
|
33
|
+
|
34
|
+
assert_raise(RuntimeError) { (14.mm + 34.7.ft) - q}
|
35
|
+
|
36
|
+
qty = (14.mm + 4.9.cm) * q
|
37
|
+
|
38
|
+
assert_not_nil(qty)
|
39
|
+
assert_in_delta(630, qty.value, 0.001)
|
40
|
+
assert_equal([:mm,:mm], qty[:dividends])
|
41
|
+
|
42
|
+
qty = 14.m * q
|
43
|
+
assert_not_nil(qty)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_quantity_info_conversion
|
47
|
+
|
48
|
+
qty = 14.m.to_quantity(@calc)
|
49
|
+
assert_not_nil(qty)
|
50
|
+
assert_equal(14, qty.value)
|
51
|
+
assert_equal([:m], qty[:dividends])
|
52
|
+
|
53
|
+
qty = qty * @calc.quantity(5, :lb)
|
54
|
+
assert(qty)
|
55
|
+
assert_equal(14 * 5, qty.value)
|
56
|
+
assert_equal([:m, :lb], qty[:dividends])
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_quantity_value
|
60
|
+
q = @calc.quantity(10, :mm)
|
61
|
+
|
62
|
+
assert_equal(10.0, q.value)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_quantity_unit
|
66
|
+
|
67
|
+
q = @calc.quantity(10, :mm)
|
68
|
+
|
69
|
+
assert_equal([:mm], q[:dividends])
|
70
|
+
assert_equal([], q[:divisors])
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_string_unit
|
74
|
+
q = @calc.quantity(10, :mm) * @calc.quantity(5, :lb)
|
75
|
+
|
76
|
+
assert_equal("mm*lb", q[:string])
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class SimpleUnitTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include Unit
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@millimeter = SimpleUnit.new(:unit => :mm)
|
9
|
+
@centimeter = SimpleUnit.new(:unit => :cm, :based_on => @millimeter, :coefficient => 10)
|
10
|
+
@meter = SimpleUnit.new(:unit => :m, :based_on => @centimeter, :coefficient => 100)
|
11
|
+
|
12
|
+
@g = SimpleUnit.new(:unit => :g)
|
13
|
+
@oz = SimpleUnit.new(:unit => :oz, :based_on => @g, :coefficient => 28.349523125)
|
14
|
+
@lb = SimpleUnit.new(:unit => :lb, :based_on => @oz, :coefficient => 16)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_to_base_conversion
|
18
|
+
|
19
|
+
assert_equal(@centimeter, @meter.based_on)
|
20
|
+
assert_equal( 10000.0, @meter.to_base(10))
|
21
|
+
assert_equal( 100.0, @centimeter.to_base(10))
|
22
|
+
assert_equal( @meter.to_base(1), @centimeter.to_base(100))
|
23
|
+
|
24
|
+
assert_in_delta(28.349523125 * 16, @lb.to_base(1), 0.0001)
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_from_base_conversion
|
29
|
+
|
30
|
+
assert_equal(10.0, @meter.from_base(10000))
|
31
|
+
assert_equal(10.0, @centimeter.from_base(100))
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_hierarchy_base
|
36
|
+
|
37
|
+
assert_equal(@g, @lb.h_base)
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_compatible_units
|
42
|
+
|
43
|
+
assert_equal(true, @millimeter.compatible?(@meter))
|
44
|
+
assert_equal(true, @millimeter.compatible?(@centimeter))
|
45
|
+
|
46
|
+
assert_equal(false, @millimeter.compatible?(@g))
|
47
|
+
assert_equal(false, @millimeter.compatible?(@lb))
|
48
|
+
|
49
|
+
assert_equal(true, @lb.compatible?(@oz))
|
50
|
+
assert_equal(true, @oz.compatible?(@g))
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_string_unit
|
54
|
+
|
55
|
+
assert_equal("mm", @millimeter[:string])
|
56
|
+
assert_equal("cm", @centimeter[:string])
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
require File.dirname(__FILE__) + '/../lib/quantity'
|
5
|
+
|
6
|
+
class Test::Unit::TestCase
|
7
|
+
# Add more helper methods to be used by all tests here...
|
8
|
+
|
9
|
+
def logger
|
10
|
+
unless @log
|
11
|
+
@log = Logger.new(STDOUT)
|
12
|
+
@log.level = Logger::DEBUG
|
13
|
+
@log.datetime_format = '%a %b %d %H:%M:%S %Z %Y'
|
14
|
+
end
|
15
|
+
|
16
|
+
@log
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class UnitOptemizerTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
include Unit
|
6
|
+
|
7
|
+
def setup
|
8
|
+
|
9
|
+
@units = {}
|
10
|
+
@units[:mm] = SimpleUnit.new(:unit => :mm)
|
11
|
+
@units[:cm] = SimpleUnit.new(:unit => :cm, :based_on => @units[:mm], :coefficient => 10)
|
12
|
+
@units[:m] = SimpleUnit.new(:unit => :m, :based_on => @units[:cm], :coefficient => 100)
|
13
|
+
|
14
|
+
@units[:g] = SimpleUnit.new(:unit => :g)
|
15
|
+
@units[:kg] = SimpleUnit.new(:unit => :kg, :based_on => @units[:g], :coefficient => 1000.0)
|
16
|
+
@units[:oz] = SimpleUnit.new(:unit => :oz, :based_on => @units[:g], :coefficient => 28.349523125)
|
17
|
+
@units[:lb] = SimpleUnit.new(:unit => :lb, :based_on => @units[:oz], :coefficient => 16)
|
18
|
+
@units[:mg] = SimpleUnit.new(:unit => :mg, :based_on => @units[:g], :coefficient => 0.001)
|
19
|
+
|
20
|
+
@units[:sec] = SimpleUnit.new(:unit => :sec)
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_no_units
|
25
|
+
results = Optimizer.process({
|
26
|
+
:dividends => [], :divisors => []
|
27
|
+
})
|
28
|
+
|
29
|
+
assert_equal(true, results.kind_of?(Hash))
|
30
|
+
assert_equal(1.0, results[:coefficient])
|
31
|
+
assert_equal([], results[:dividends])
|
32
|
+
assert_equal([], results[:divisors])
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_no_optimization_needed
|
36
|
+
|
37
|
+
results = Optimizer.process({
|
38
|
+
:dividends => [@units[:mm], @units[:sec]], :divisors => [@units[:g]]
|
39
|
+
})
|
40
|
+
|
41
|
+
assert_equal(true, results.kind_of?(Hash))
|
42
|
+
assert_equal(1.0, results[:coefficient])
|
43
|
+
assert_equal([@units[:mm], @units[:sec]], results[:dividends])
|
44
|
+
assert_equal([@units[:g]], results[:divisors])
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_simple_optimization
|
49
|
+
|
50
|
+
results = Optimizer.process({
|
51
|
+
:dividends => [@units[:mm], @units[:kg]], :divisors => [@units[:g]]
|
52
|
+
})
|
53
|
+
|
54
|
+
assert_equal(true, results.kind_of?(Hash))
|
55
|
+
assert_equal(1000.0, results[:coefficient])
|
56
|
+
assert_equal([@units[:mm]], results[:dividends])
|
57
|
+
assert_equal([], results[:divisors])
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_existing_coefficient_optimization
|
62
|
+
results = Optimizer.process({
|
63
|
+
:coefficient => 7,
|
64
|
+
:dividends => [@units[:mm], @units[:kg]],
|
65
|
+
:divisors => [@units[:g]]
|
66
|
+
})
|
67
|
+
|
68
|
+
assert_equal(true, results.kind_of?(Hash))
|
69
|
+
assert_in_delta(7000.0, results[:coefficient], 0.001)
|
70
|
+
assert_equal([@units[:mm]], results[:dividends])
|
71
|
+
assert_equal([], results[:divisors])
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_multiple_step_optimization
|
75
|
+
|
76
|
+
results = Optimizer.process({
|
77
|
+
:dividends => [@units[:mm], @units[:kg]], :divisors => [@units[:lb]]
|
78
|
+
})
|
79
|
+
|
80
|
+
assert_equal(true, results.kind_of?(Hash))
|
81
|
+
assert_in_delta(2.204622622, results[:coefficient], 0.00001)
|
82
|
+
assert_equal([@units[:mm]], results[:dividends])
|
83
|
+
assert_equal([], results[:divisors])
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_full_unit_optimization
|
87
|
+
results = Optimizer.process({
|
88
|
+
:dividends => [@units[:mm], @units[:kg]], :divisors => [@units[:lb], @units[:cm] ]
|
89
|
+
})
|
90
|
+
|
91
|
+
assert_equal([], results[:dividends])
|
92
|
+
assert_equal([], results[:divisors])
|
93
|
+
end
|
94
|
+
|
95
|
+
# Just to make sure it is Ok to use.
|
96
|
+
def test_array_intersection
|
97
|
+
intersection = [@units[:g], @units[:mm]] & [@units[:g]]
|
98
|
+
assert_equal([@units[:g]], intersection)
|
99
|
+
|
100
|
+
intersection = [@units[:g], @units[:g], @units[:mm]] & [@units[:g], @units[:g],]
|
101
|
+
assert_equal([@units[:g]], intersection)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|