Skip to content

Commit f01b652

Browse files
committed
Add Temperature acceptance test
1 parent 66142d6 commit f01b652

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

test/units/temperature_test.rb

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# frozen_string_literal: true
2+
Measured::Temperature = Measured.build do
3+
unit :C, aliases: [:c, :celsius]
4+
5+
unit :K, value: [
6+
{
7+
conversion: ->(k) { k - BigDecimal('273.15') },
8+
reverse_conversion: ->(c) { c + BigDecimal('273.15') },
9+
description: 'celsius + 273.15'
10+
}, 'C'], aliases: [:k, :kelvin]
11+
12+
unit :F, value: [
13+
{
14+
conversion: ->(f) { (f-32) * Rational(5,9) },
15+
reverse_conversion: ->(c) { c * Rational(9,5) + 32 },
16+
description: '9 * celsius / 5 + 32'
17+
}, 'C'], aliases: [:f, :farenheit]
18+
end
19+
20+
require "test_helper"
21+
22+
class Measured::TemperatureTest < ActiveSupport::TestCase
23+
test ".unit_names should be the list of base unit names" do
24+
expected_units = %w(C F K)
25+
assert_equal expected_units.sort, Measured::Temperature.unit_names
26+
end
27+
28+
test ".name" do
29+
assert_equal "temperature", Measured::Temperature.name
30+
end
31+
32+
test "Measured::Temperature() delegates automatically to .new" do
33+
assert_equal Measured::Temperature.new(1, :C), Measured::Temperature(1, :C)
34+
end
35+
36+
test ".convert_to from C to K" do
37+
assert_exact_conversion Measured::Temperature, "0 C", "273.15 K"
38+
assert_exact_conversion Measured::Temperature, "10 C", "283.15 K"
39+
end
40+
41+
test ".convert_to from C to F" do
42+
assert_exact_conversion Measured::Temperature, "45 C", "113 F"
43+
assert_exact_conversion Measured::Temperature, "0 C", "32 F"
44+
end
45+
46+
test ".convert_to from F to C" do
47+
assert_exact_conversion Measured::Temperature, "113 F", "45 C"
48+
assert_exact_conversion Measured::Temperature, "32 F", "0 C"
49+
end
50+
51+
test ".convert_to from F to K" do
52+
assert_exact_conversion Measured::Temperature, "32 F", "273.15 K"
53+
end
54+
55+
test ".convert_to from K to C" do
56+
assert_exact_conversion Measured::Temperature, "273.15 K", "0 C"
57+
assert_exact_conversion Measured::Temperature, "0 K", "-273.15 C"
58+
end
59+
60+
test ".convert_to from K to F" do
61+
assert_exact_conversion Measured::Temperature, "0 K", "-459.67 F"
62+
end
63+
end

0 commit comments

Comments
 (0)