Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

5.18.0 #71

Merged
merged 4 commits into from
Dec 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## [5.18.0](https://github.com/shivam091/unit_measurements/compare/v5.17.0...v5.18.0) - 2023-12-16

### What's new

- Added unit group for `mass flow rate` units.
- Added unit group for `volumetric flow rate` units.

----------

## [5.17.0](https://github.com/shivam091/unit_measurements/compare/v5.16.0...v5.17.0) - 2023-12-15

### What's new
Expand Down
2 changes: 2 additions & 0 deletions lib/unit_measurements/unit_groups/all.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@
require_relative "radiation_absorbed_dose"
require_relative "radiation_equivalent_dose"
require_relative "information_entropy"
require_relative "mass_flow_rate"
require_relative "volumetric_flow_rate"

require_relative "sound_level"
require_relative "plane_angle"
Expand Down
49 changes: 49 additions & 0 deletions lib/unit_measurements/unit_groups/mass_flow_rate.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# -*- encoding: utf-8 -*-
# -*- frozen_string_literal: true -*-
# -*- warn_indent: true -*-

UnitMeasurements::MassFlowRate = UnitMeasurements.build do
primitive "kg/s"

system :metric do
unit "kg/s", aliases: ["kilogramme per second", "kilogrammes per second", "kilogram per second", "kilograms per second"]
unit "kg/min", value: "1/60 kg/s", aliases: ["kilogramme per minute", "kilogrammes per minute", "kilogram per minute", "kilograms per minute"]
unit "kg/h", value: "1/60 kg/min", aliases: ["kilogramme per hour", "kilogrammes per hour", "kilogram per hour", "kilograms per hour"]

unit "g/s", value: "1/1000 kg/s", aliases: ["gramme per second", "grammes per second", "gram per second", "grams per second"]
unit "g/min", value: "1/60 g/s", aliases: ["gramme per minute", "grammes per minute", "gram per minute", "grams per minute"]
unit "g/h", value: "1/60 g/min", aliases: ["gramme per hour", "grammes per hour", "gram per hour", "grams per hour"]

unit "t/s", value: "1000 kg/s", aliases: ["tonne per second", "tonnes per second", "metric tonne per second", "metric tonnes per second"]
unit "t/min", value: "1/60 t/s", aliases: ["tonne per minute", "tonnes per minute", "metric tonne per minute", "metric tonnes per minute"]
unit "t/h", value: "1/60 t/min", aliases: ["tonne per hour", "tonnes per hour", "metric tonne per hour", "metric tonnes per hour"]
end

system :us_customary do
unit "lb/s", value: "0.45359237 kg/s", aliases: ["pound per second", "pounds per second"]
unit "lb/min", value: "1/60 lb/s", aliases: ["pound per minute", "pounds per minute"]
unit "lb/h", value: "1/60 lb/min", aliases: ["pound per hour", "pounds per hour"]

unit "tn/s", value: "2000 lb/s", aliases: ["ton per second", "tons per second", "short ton per second", "short tons per second"]
unit "tn/min", value: "1/60 tn/s", aliases: ["ton per minute", "tons per minute", "short ton per minute", "short tons per minute"]
unit "tn/h", value: "1/60 tn/min", aliases: ["ton per hour", "tons per hour", "short ton per hour", "short tons per hour"]

unit "slug/s", value: "14.5939 kg/s", aliases: ["slug per second", "slugs per second"]
unit "slug/min", value: "1/60 slug/s", aliases: ["slug per minute", "slugs per minute"]
unit "slug/h", value: "1/60 slug/min", aliases: ["slug per hour", "slugs per hour"]
end

system :imperial do
unit "oz/s", value: "1/16 lb/s", aliases: ["ounce per second", "ounces per second"]
unit "oz/min", value: "1/60 oz/s", aliases: ["ounce per minute", "ounces per minute"]
unit "oz/h", value: "1/60 oz/min", aliases: ["ounce per hour", "ounces per hour"]

unit "gr/s", value: "1/7000 lb/s", aliases: ["grain per second", "grains per second"]
unit "gr/min", value: "1/60 gr/s", aliases: ["grain per minute", "grains per minute"]
unit "gr/h", value: "1/60 gr/min", aliases: ["grain per hour", "grains per hour"]

unit "LT/s", value: "2240 lb/s", aliases: ["long ton per second", "long tons per second"]
unit "LT/min", value: "1/60 LT/s", aliases: ["long ton per minute", "long tons per minute"]
unit "LT/h", value: "1/60 LT/min", aliases: ["long ton per hour", "long tons per hour"]
end
end
35 changes: 35 additions & 0 deletions lib/unit_measurements/unit_groups/volumetric_flow_rate.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# -*- encoding: utf-8 -*-
# -*- frozen_string_literal: true -*-
# -*- warn_indent: true -*-

UnitMeasurements::VolumetricFlowRate = UnitMeasurements.build do
primitive "m³/s"

system :metric do
unit "m³/s", aliases: ["m^3/s", "cubic metre per second", "cubic metres per second", "cubic meter per second", "cubic meters per second"]
unit "m³/min", value: "1/60 m³/s", aliases: ["m^3/min", "cubic metre per minute", "cubic metres per minute", "cubic meter per minute", "cubic meters per minute"]
unit "m³/h", value: "1/60 m³/min", aliases: ["m^3/h", "cubic metre per hour", "cubic metres per hour", "cubic meter per hour", "cubic meters per hour"]

unit "l/s", value: "1/1000 m³/s", aliases: ["L/s", "litre per second", "litres per second", "liter per second", "liters per second"]
unit "l/min", value: "1/60 l/s", aliases: ["L/min", "litre per minute", "litres per minute", "liter per minute", "liters per minute"]
unit "l/h", value: "1/60 l/min", aliases: ["L/h", "litre per hour", "litres per hour", "liter per hour", "liters per hour"]
end

system :imperial do
unit "ft³/s", value: "0.028316846592 m³/s", aliases: ["ft^3/s", "cubic foot per second", "cubic feet per second"]
unit "ft³/min", value: "1/60 ft³/s", aliases: ["ft^3/min", "cubic foot per minute", "cubic feet per minute"]
unit "ft³/h", value: "1/60 ft³/min", aliases: ["ft^3/h", "cubic foot per hour", "cubic feet per hour"]

unit "in³/s", value: "1.6387064e-5 m³/s", aliases: ["in^3/s", "cubic inch per second", "cubic inches per second"]
unit "in³/min", value: "1/60 in³/s", aliases: ["in^3/min", "cubic inch per minute", "cubic inches per minute"]
unit "in³/h", value: "1/60 in³/min", aliases: ["in^3/h", "cubic inch per hour", "cubic inches per hour"]

unit "yd³/s", value: "0.764554857984 m³/s", aliases: ["yd^3/s", "cubic yard per second", "cubic yards per second"]
unit "yd³/min", value: "1/60 yd³/s", aliases: ["yd^3/min", "cubic yard per minute", "cubic yards per minute"]
unit "yd³/h", value: "1/60 yd³/min", aliases: ["yd^3/h", "cubic yard per hour", "cubic yards per hour"]

unit "gal/s", value: "0.00454609 m³/s", aliases: ["gallon per second", "gallons per second"]
unit "gal/min", value: "1/60 gal/s", aliases: ["gallon per minute", "gallons per minute"]
unit "gal/h", value: "1/60 gal/min", aliases: ["gallon per hour", "gallons per hour"]
end
end
6 changes: 0 additions & 6 deletions spec/unit_measurements/comparison_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,5 @@
expect(length1.between?(length2, length3)).to be_falsy
end
end

describe "#between?" do
it "returns true" do
expect(length1.between?(length2, length3)).to be_falsy
end
end
end
end
115 changes: 115 additions & 0 deletions spec/unit_measurements/unit_groups/mass_flow_rate_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# -*- encoding: utf-8 -*-
# -*- frozen_string_literal: true -*-
# -*- warn_indent: true -*-

# spec/unit_measurements/unit_groups/mass_flow_rate_spec.rb

RSpec.describe UnitMeasurements::MassFlowRate do
describe "kg/s" do
subject { described_class.new(5, "kg/s") }

it "converts to kg/min" do
expect(subject.convert_to("kg/min").quantity).to eq(300)
end

it "converts to kg/h" do
expect(subject.convert_to("kg/h").quantity).to eq(18000)
end

it "converts to g/s" do
expect(subject.convert_to("g/s").quantity).to eq(5000)
end

it "converts to g/min" do
expect(subject.convert_to("g/min").quantity).to eq(300000)
end

it "converts to g/h" do
expect(subject.convert_to("g/h").quantity).to eq(18000000)
end

it "converts to t/s" do
expect(subject.convert_to("t/s").quantity).to eq(0.005)
end

it "converts to t/min" do
expect(subject.convert_to("t/min").quantity).to eq(0.3)
end

it "converts to t/h" do
expect(subject.convert_to("t/h").quantity).to eq(18)
end

it "converts to lb/s" do
expect(subject.convert_to("lb/s").quantity).to eq(11.0231131092439)
end

it "converts to lb/min" do
expect(subject.convert_to("lb/min").quantity).to eq(661.386786554633)
end

it "converts to lb/h" do
expect(subject.convert_to("lb/h").quantity).to eq(39683.207193278)
end

it "converts to tn/s" do
expect(subject.convert_to("tn/s").quantity).to eq(0.00551155655462194)
end

it "converts to tn/min" do
expect(subject.convert_to("tn/min").quantity).to eq(0.330693393277316)
end

it "converts to tn/h" do
expect(subject.convert_to("tn/h").quantity).to eq(19.841603596639)
end

it "converts to slug/s" do
expect(subject.convert_to("slug/s").quantity).to eq(0.342608898238305)
end

it "converts to slug/min" do
expect(subject.convert_to("slug/min").quantity).to eq(20.5565338942983)
end

it "converts to slug/h" do
expect(subject.convert_to("slug/h").quantity).to eq(1233.3920336579)
end

it "converts to oz/s" do
expect(subject.convert_to("oz/s").quantity).to eq(176.369809747902)
end

it "converts to oz/min" do
expect(subject.convert_to("oz/min").quantity).to eq(10582.1885848741)
end

it "converts to oz/h" do
expect(subject.convert_to("oz/h").quantity).to eq(634931.315092447)
end

it "converts to gr/s" do
expect(subject.convert_to("gr/s").quantity).to eq(77161.7917647071)
end

it "converts to gr/min" do
expect(subject.convert_to("gr/min").quantity).to eq(4.62970750588243e+6)
end

it "converts to gr/h" do
expect(subject.convert_to("gr/h").quantity).to eq(2.77782450352946e+8)
end

it "converts to LT/s" do
expect(subject.convert_to("LT/s").quantity).to eq(0.0049210326380553)
end

it "converts to LT/min" do
expect(subject.convert_to("LT/min").quantity).to eq(0.295261958283318)
end

it "converts to LT/h" do
expect(subject.convert_to("LT/h").quantity).to eq(17.7157174969991)
end
end
end
79 changes: 79 additions & 0 deletions spec/unit_measurements/unit_groups/volumetric_flow_rate_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# -*- encoding: utf-8 -*-
# -*- frozen_string_literal: true -*-
# -*- warn_indent: true -*-

# spec/unit_measurements/unit_groups/volumetric_flow_rate_spec.rb

RSpec.describe UnitMeasurements::VolumetricFlowRate do
describe "m³/s" do
subject { described_class.new(5, "m³/s") }

it "converts to m³/min" do
expect(subject.convert_to("m³/min").quantity).to eq(300)
end

it "converts to m³/h" do
expect(subject.convert_to("m³/h").quantity).to eq(18000)
end

it "converts to l/s" do
expect(subject.convert_to("l/s").quantity).to eq(5000)
end

it "converts to l/min" do
expect(subject.convert_to("l/min").quantity).to eq(3e+5)
end

it "converts to l/h" do
expect(subject.convert_to("l/h").quantity).to eq(1.8e+7)
end

it "converts to ft³/s" do
expect(subject.convert_to("ft³/s").quantity).to eq(176.573333607443)
end

it "converts to ft³/min" do
expect(subject.convert_to("ft³/min").quantity).to eq(10594.4000164466)
end

it "converts to ft³/h" do
expect(subject.convert_to("ft³/h").quantity).to eq(635664.000986795)
end

it "converts to in³/s" do
expect(subject.convert_to("in³/s").quantity).to eq(305118.720473661)
end

it "converts to in³/min" do
expect(subject.convert_to("in³/min").quantity).to eq(1.83071232284197e+7)
end

it "converts to in³/h" do
expect(subject.convert_to("in³/h").quantity).to eq(1.09842739370518e+9)
end

it "converts to yd³/s" do
expect(subject.convert_to("yd³/s").quantity).to eq(6.53975309657196)
end

it "converts to yd³/min" do
expect(subject.convert_to("yd³/min").quantity).to eq(392.385185794318)
end

it "converts to yd³/h" do
expect(subject.convert_to("yd³/h").quantity).to eq(23543.1111476591)
end

it "converts to gal/s" do
expect(subject.convert_to("gal/s").quantity).to eq(1099.84624149544)
end

it "converts to gal/min" do
expect(subject.convert_to("gal/min").quantity).to eq(65990.7744897263)
end

it "converts to gal/h" do
expect(subject.convert_to("gal/h").quantity).to eq(3.95944646938358e+6)
end
end
end
Loading