From 46f57bba5488ca21e81abab9adc1fb1ef6668745 Mon Sep 17 00:00:00 2001 From: Rajat Agarwal <rajatagarwal@alumni.purdue.edu> Date: Fri, 20 Sep 2024 19:34:35 -0700 Subject: [PATCH] Add quintals and ton aliases Add the quintal unit/aliases and also add two aliases for ton with the British spelling --- cache/weight.json | 230 +++++++++++++++++++++++++++++++++++ lib/measured/units/weight.rb | 3 +- test/units/weight_test.rb | 75 +++++++++++- 3 files changed, 306 insertions(+), 2 deletions(-) diff --git a/cache/weight.json b/cache/weight.json index f2e4ecc..321f50d 100644 --- a/cache/weight.json +++ b/cache/weight.json @@ -89,6 +89,10 @@ "numerator": 1, "denominator": 1000000 }, + "q": { + "numerator": 1, + "denominator": 100000 + }, "slug": { "numerator": 1000, "denominator": 14593903 @@ -203,6 +207,10 @@ "numerator": 1, "denominator": 1000000000000000000000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000000000000000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000000000000000000000 @@ -317,6 +325,10 @@ "numerator": 1, "denominator": 1000000000000000000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000000000000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000000000000000000 @@ -431,6 +443,10 @@ "numerator": 1, "denominator": 1000000000000000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000000000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000000000000000 @@ -545,6 +561,10 @@ "numerator": 1, "denominator": 1000000000000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000000000000 @@ -659,6 +679,10 @@ "numerator": 1, "denominator": 1000000000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000000000 @@ -773,6 +797,10 @@ "numerator": 1, "denominator": 1000000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000000 @@ -887,6 +915,10 @@ "numerator": 1, "denominator": 1000000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000000 + }, "slug": { "numerator": 1, "denominator": 14593903000 @@ -1001,6 +1033,10 @@ "numerator": 1, "denominator": 1000000000 }, + "q": { + "numerator": 1, + "denominator": 100000000 + }, "slug": { "numerator": 1, "denominator": 14593903 @@ -1115,6 +1151,10 @@ "numerator": 1, "denominator": 100000000 }, + "q": { + "numerator": 1, + "denominator": 10000000 + }, "slug": { "numerator": 10, "denominator": 14593903 @@ -1229,6 +1269,10 @@ "numerator": 1, "denominator": 10000000 }, + "q": { + "numerator": 1, + "denominator": 1000000 + }, "slug": { "numerator": 100, "denominator": 14593903 @@ -1343,6 +1387,10 @@ "numerator": 1, "denominator": 100000 }, + "q": { + "numerator": 1, + "denominator": 10000 + }, "slug": { "numerator": 10000, "denominator": 14593903 @@ -1457,6 +1505,10 @@ "numerator": 1, "denominator": 10000 }, + "q": { + "numerator": 1, + "denominator": 1000 + }, "slug": { "numerator": 100000, "denominator": 14593903 @@ -1571,6 +1623,10 @@ "numerator": 1, "denominator": 1000 }, + "q": { + "numerator": 1, + "denominator": 100 + }, "slug": { "numerator": 1000000, "denominator": 14593903 @@ -1685,6 +1741,10 @@ "numerator": 1, "denominator": 1 }, + "q": { + "numerator": 10, + "denominator": 1 + }, "slug": { "numerator": 1000000000, "denominator": 14593903 @@ -1799,6 +1859,10 @@ "numerator": 1000, "denominator": 1 }, + "q": { + "numerator": 10000, + "denominator": 1 + }, "slug": { "numerator": 1000000000000, "denominator": 14593903 @@ -1913,6 +1977,10 @@ "numerator": 1000000, "denominator": 1 }, + "q": { + "numerator": 10000000, + "denominator": 1 + }, "slug": { "numerator": 1000000000000000, "denominator": 14593903 @@ -2027,6 +2095,10 @@ "numerator": 1000000000, "denominator": 1 }, + "q": { + "numerator": 10000000000, + "denominator": 1 + }, "slug": { "numerator": 1000000000000000000, "denominator": 14593903 @@ -2141,6 +2213,10 @@ "numerator": 1000000000000, "denominator": 1 }, + "q": { + "numerator": 10000000000000, + "denominator": 1 + }, "slug": { "numerator": 1000000000000000000000, "denominator": 14593903 @@ -2255,6 +2331,10 @@ "numerator": 1000000000000000, "denominator": 1 }, + "q": { + "numerator": 10000000000000000, + "denominator": 1 + }, "slug": { "numerator": 1000000000000000000000000, "denominator": 14593903 @@ -2369,6 +2449,10 @@ "numerator": 1000000000000000000, "denominator": 1 }, + "q": { + "numerator": 10000000000000000000, + "denominator": 1 + }, "slug": { "numerator": 1000000000000000000000000000, "denominator": 14593903 @@ -2483,6 +2567,10 @@ "numerator": 1, "denominator": 1000000000000000000 }, + "q": { + "numerator": 10, + "denominator": 1 + }, "slug": { "numerator": 1000000000, "denominator": 14593903 @@ -2508,6 +2596,124 @@ "denominator": 45359237 } }, + "q": { + "q": { + "numerator": 1, + "denominator": 1 + }, + "g": { + "numerator": 100000, + "denominator": 1 + }, + "yg": { + "numerator": 100000000000000000000000000000, + "denominator": 1 + }, + "zg": { + "numerator": 100000000000000000000000000, + "denominator": 1 + }, + "ag": { + "numerator": 100000000000000000000000, + "denominator": 1 + }, + "fg": { + "numerator": 100000000000000000000, + "denominator": 1 + }, + "pg": { + "numerator": 100000000000000000, + "denominator": 1 + }, + "ng": { + "numerator": 100000000000000, + "denominator": 1 + }, + "μg": { + "numerator": 100000000000, + "denominator": 1 + }, + "mg": { + "numerator": 100000000, + "denominator": 1 + }, + "cg": { + "numerator": 10000000, + "denominator": 1 + }, + "dg": { + "numerator": 1000000, + "denominator": 1 + }, + "dag": { + "numerator": 10000, + "denominator": 1 + }, + "hg": { + "numerator": 1000, + "denominator": 1 + }, + "kg": { + "numerator": 100, + "denominator": 1 + }, + "Mg": { + "numerator": 1, + "denominator": 10 + }, + "Gg": { + "numerator": 1, + "denominator": 10000 + }, + "Tg": { + "numerator": 1, + "denominator": 10000000 + }, + "Pg": { + "numerator": 1, + "denominator": 10000000000 + }, + "Eg": { + "numerator": 1, + "denominator": 10000000000000 + }, + "Zg": { + "numerator": 1, + "denominator": 10000000000000000 + }, + "Yg": { + "numerator": 1, + "denominator": 10000000000000000000 + }, + "t": { + "numerator": 1, + "denominator": 10 + }, + "slug": { + "numerator": 100000000, + "denominator": 14593903 + }, + "N": { + "numerator": 10000000000000000000, + "denominator": 10197162129779283 + }, + "long_ton": { + "numerator": 31250000, + "denominator": 317514659 + }, + "short_ton": { + "numerator": 5000000, + "denominator": 45359237 + }, + "lb": { + "numerator": 10000000000, + "denominator": 45359237 + }, + "oz": { + "numerator": 160000000000, + "denominator": 45359237 + } + }, "slug": { "slug": { "numerator": 1, @@ -2601,6 +2807,10 @@ "numerator": 14593903, "denominator": 1000000000 }, + "q": { + "numerator": 14593903, + "denominator": 100000000 + }, "N": { "numerator": 1459390300000000000, "denominator": 10197162129779283 @@ -2715,6 +2925,10 @@ "numerator": 10197162129779283, "denominator": 100000000000000000000 }, + "q": { + "numerator": 10197162129779283, + "denominator": 10000000000000000000 + }, "slug": { "numerator": 10197162129779283, "denominator": 1459390300000000000 @@ -2829,6 +3043,10 @@ "numerator": 317514659, "denominator": 312500000 }, + "q": { + "numerator": 317514659, + "denominator": 31250000 + }, "slug": { "numerator": 5080234544, "denominator": 72969515 @@ -2943,6 +3161,10 @@ "numerator": 45359237, "denominator": 50000000 }, + "q": { + "numerator": 45359237, + "denominator": 5000000 + }, "slug": { "numerator": 907184740, "denominator": 14593903 @@ -3057,6 +3279,10 @@ "numerator": 45359237, "denominator": 100000000000 }, + "q": { + "numerator": 45359237, + "denominator": 10000000000 + }, "slug": { "numerator": 45359237, "denominator": 1459390300 @@ -3171,6 +3397,10 @@ "numerator": 45359237, "denominator": 1600000000000 }, + "q": { + "numerator": 45359237, + "denominator": 160000000000 + }, "slug": { "numerator": 45359237, "denominator": 23350244800 diff --git a/lib/measured/units/weight.rb b/lib/measured/units/weight.rb index 23f66f5..663a1b4 100644 --- a/lib/measured/units/weight.rb +++ b/lib/measured/units/weight.rb @@ -2,7 +2,8 @@ Measured::Weight = Measured.build do si_unit :g, aliases: [:gram, :grams, :gm, :gms] - unit :t, value: "1000 kg", aliases: [:metric_ton, :metric_tons] + unit :t, value: "1000 kg", aliases: [:metric_ton, :metric_tons, :tonne, :tonnes] + unit :q, value: "100 kg", aliases: [:quintal, :quintals] unit :slug, value: "14.593903 kg", aliases: [:slugs] unit :N, value: "0.10197162129779283 kg", aliases: [:newtons, :newton] unit :long_ton, value: "2240 lb", aliases: [:long_tons, :weight_ton, :weight_tons, 'W/T', :imperial_ton, :imperial_tons, :displacement_ton, :displacement_tons] diff --git a/test/units/weight_test.rb b/test/units/weight_test.rb index 2ef5a83..583bf0d 100644 --- a/test/units/weight_test.rb +++ b/test/units/weight_test.rb @@ -25,6 +25,11 @@ class Measured::WeightTest < ActiveSupport::TestCase long_tons metric_ton metric_tons + tonne + tonnes + q + quintal + quintals newton newtons ounce @@ -48,7 +53,7 @@ class Measured::WeightTest < ActiveSupport::TestCase end test ".unit_names should be the list of base unit names" do - expected_units = %w(N g lb long_ton oz short_ton slug t) + expected_units = %w(N g lb long_ton oz short_ton slug t q) expected_units += Measured::UnitSystemBuilder::SI_PREFIXES.map { |short, _, _| "#{short}g" } assert_equal expected_units.sort, Measured::Weight.unit_names end @@ -98,6 +103,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_exact_conversion Measured::Weight, "2000 g", "0.002 t" end + test ".convert_to from g to q" do + assert_exact_conversion Measured::Weight, "2000 g", "0.02 q" + end + test ".convert_to from kg to g" do assert_exact_conversion Measured::Weight, "2000 kg", "2000000 g" end @@ -134,6 +143,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_exact_conversion Measured::Weight, "2000 kg", "2 t" end + test ".convert_to from kg to q" do + assert_exact_conversion Measured::Weight, "2000 kg", "20 q" + end + test ".convert_to from lb to g" do assert_exact_conversion Measured::Weight, "2000 lb", "907184.74 g" end @@ -170,6 +183,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_conversion Measured::Weight, "2000 lb", "0.90718474 t" end + test ".convert_to from lb to q" do + assert_conversion Measured::Weight, "2000 lb", "9.0718474 q" + end + test ".convert_to from oz to g" do assert_conversion Measured::Weight, "2000 oz", "56699.04625 g" end @@ -206,6 +223,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_conversion Measured::Weight, "2000 oz", "0.05669904625 t" end + test ".convert_to from oz to q" do + assert_conversion Measured::Weight, "2000 oz", "0.5669904625 q" + end + test ".convert_to from slug to g" do assert_conversion Measured::Weight, "2000 slug", "29187806 g" end @@ -242,6 +263,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_conversion Measured::Weight, "2000 slug", "29.187806 t" end + test ".convert_to from slug to q" do + assert_conversion Measured::Weight, "2000 slug", "291.87806 q" + end + test ".convert_to from short_ton to g" do assert_conversion Measured::Weight, "2000 short_ton", "1814369480 g" end @@ -278,6 +303,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_conversion Measured::Weight, "2000 short_ton", "1814.36948 t" end + test ".convert_to from short_ton to q" do + assert_conversion Measured::Weight, "2000 short_ton", "18143.6948 q" + end + test ".convert_to from long_ton to g" do assert_conversion Measured::Weight, "2000 long_ton", "2032093817.6 g" end @@ -314,6 +343,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_conversion Measured::Weight, "2000 long_ton", "2032.0938176 t" end + test ".convert_to from long_ton to q" do + assert_conversion Measured::Weight, "2000 long_ton", "20320.938176 q" + end + test ".convert_to from N to g" do assert_conversion Measured::Weight, "2000 N", "203943.24259558567 g" end @@ -350,6 +383,10 @@ class Measured::WeightTest < ActiveSupport::TestCase assert_conversion Measured::Weight, "2000 N", "0.2039432425955857 t" end + test ".convert_to from N to q" do + assert_conversion Measured::Weight, "2000 N", "2.039432425955857 q" + end + test ".convert_to from t to g" do assert_exact_conversion Measured::Weight, "2000 t", "2000000000 g" end @@ -377,4 +414,40 @@ class Measured::WeightTest < ActiveSupport::TestCase test ".convert_to from t to t" do assert_conversion Measured::Weight, "2000 t", "2000 t" end + + test ".convert_to from t to q" do + assert_conversion Measured::Weight, "2000 t", "20000 q" + end + + test ".convert_to from q to g" do + assert_exact_conversion Measured::Weight, "2000 q", "200000000 g" + end + + test ".convert_to from q to kg" do + assert_exact_conversion Measured::Weight, "2000 q", "200000 kg" + end + + test ".convert_to from q to lb" do + assert_conversion Measured::Weight, "2000 q", "440924.5243697552 lb" + end + + test ".convert_to from q to oz" do + assert_conversion Measured::Weight, "2000 q", "7054792.389916082 oz" + end + + test ".convert_to from q to slug" do + assert_conversion Measured::Weight, "2000 q", "13704.35311239221 slug" + end + + test ".convert_to from q to short_ton" do + assert_conversion Measured::Weight, "2000 q", "220.4622621848 short_ton" + end + + test ".convert_to from q to t" do + assert_conversion Measured::Weight, "2000 q", "200 t" + end + + test ".convert_to from q to q" do + assert_conversion Measured::Weight, "2000 q", "2000 q" + end end