From 06af4e1a2adedf00e72d861e50d8f065e8b9b68a Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Thu, 23 Mar 2023 19:13:25 +0300 Subject: [PATCH] Added torque (#29) --- core/base/src/main/res/values/strings.xml | 37 ++++++++++++++ .../sadellie/unitto/data/model/UnitGroup.kt | 1 + .../unitto/data/units/AllUnitsRepository.kt | 2 + .../sadellie/unitto/data/units/MyUnitIDS.kt | 19 ++++++++ .../unitto/data/units/collections/Torque.kt | 48 +++++++++++++++++++ .../unitto/data/units/AllUnitsTest.kt | 21 ++++++++ 6 files changed, 128 insertions(+) create mode 100644 data/units/src/main/java/com/sadellie/unitto/data/units/collections/Torque.kt diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index 11b31333..5f0d9e45 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -1081,6 +1081,42 @@ Kilopond kp + + Newton meter + N*m + Newton centimeter + N*cm + Newton millimeter + N*mm + Kilonewton meter + kN*m + Dyne meter + dyn*m + Dyne centimeter + dyn*cm + Dyne millimeter + dyn*mm + Kilogram-force meter + kgf*m + Kilogram-force centimeter + kgf*cm + Kilogram-force millimeter + kgf*mm + Gram-force meter + gf*m + Gram-force centimeter + gf*cm + Gram-force millimeter + gf*mm + Ounce-force foot + ozf*ft + Ounce-force inch + ozf*in + Pound-force foot + lbf*ft + Pound-force inch + lbf*in + Length Time @@ -1102,6 +1138,7 @@ Capacitance Prefix Force + Torque Convert from diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt index 452e3d40..ebc7000f 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt @@ -51,4 +51,5 @@ enum class UnitGroup( ELECTROSTATIC_CAPACITANCE(res = R.string.electrostatic_capacitance), PREFIX(res = R.string.prefix), FORCE(res = R.string.force), + TORQUE(res = R.string.torque), } diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt index 20a3c9cd..d1df129b 100644 --- a/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt +++ b/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt @@ -43,6 +43,7 @@ import com.sadellie.unitto.data.units.collections.pressureCollection import com.sadellie.unitto.data.units.collections.speedCollection import com.sadellie.unitto.data.units.collections.temperatureCollection import com.sadellie.unitto.data.units.collections.timeCollection +import com.sadellie.unitto.data.units.collections.torqueCollection import com.sadellie.unitto.data.units.collections.volumeCollection import java.math.BigDecimal import javax.inject.Inject @@ -85,6 +86,7 @@ class AllUnitsRepository @Inject constructor() { UnitGroup.ELECTROSTATIC_CAPACITANCE to electrostaticCapacitance, UnitGroup.PREFIX to prefixCollection, UnitGroup.FORCE to forceCollection, + UnitGroup.TORQUE to torqueCollection ) } diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt index fc9ba7c9..cd9e5ed4 100644 --- a/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt +++ b/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt @@ -574,4 +574,23 @@ object MyUnitIDS { const val ounce_force = "ounce_force" const val pond = "pond" const val kilopond = "kilopond" + + // TORQUE + const val newton_meter = "newton_meter" + const val newton_centimeter = "newton_centimeter" + const val newton_millimeter = "newton_millimeter" + const val kilonewton_meter = "kilonewton_meter" + const val dyne_meter = "dyne_meter" + const val dyne_centimeter = "dyne_centimeter" + const val dyne_millimeter = "dyne_millimeter" + const val kilogram_force_meter = "kilogram_force_meter" + const val kilogram_force_centimeter = "kilogram_force_centimeter" + const val kilogram_force_millimeter = "kilogram_force_millimeter" + const val gram_force_meter = "gram_force_meter" + const val gram_force_centimeter = "gram_force_centimeter" + const val gram_force_millimeter = "gram_force_millimeter" + const val ounce_force_foot = "ounce_force_foot" + const val ounce_force_inch = "ounce_force_inch" + const val pound_force_foot = "pound_force_foot" + const val pound_force_inch = "pound_force_inch" } diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/collections/Torque.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/collections/Torque.kt new file mode 100644 index 00000000..cb945d03 --- /dev/null +++ b/data/units/src/main/java/com/sadellie/unitto/data/units/collections/Torque.kt @@ -0,0 +1,48 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2023 Elshan Agaev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sadellie.unitto.data.units.collections + +import com.sadellie.unitto.data.model.AbstractUnit +import com.sadellie.unitto.data.model.MyUnit +import com.sadellie.unitto.data.model.UnitGroup +import com.sadellie.unitto.data.units.MyUnitIDS +import com.sadellie.unitto.data.units.R +import java.math.BigDecimal + +val torqueCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.dyne_millimeter, BigDecimal.valueOf(1), UnitGroup.TORQUE, R.string.dyne_millimeter, R.string.dyne_millimeter_short), + MyUnit(MyUnitIDS.dyne_centimeter, BigDecimal.valueOf(10), UnitGroup.TORQUE, R.string.dyne_centimeter, R.string.dyne_centimeter_short), + MyUnit(MyUnitIDS.dyne_meter, BigDecimal.valueOf(1000), UnitGroup.TORQUE, R.string.dyne_meter, R.string.dyne_meter_short), + MyUnit(MyUnitIDS.newton_millimeter, BigDecimal.valueOf(100000), UnitGroup.TORQUE, R.string.newton_millimeter, R.string.newton_millimeter_short), + MyUnit(MyUnitIDS.newton_centimeter, BigDecimal.valueOf(1000000), UnitGroup.TORQUE, R.string.newton_centimeter, R.string.newton_centimeter_short), + MyUnit(MyUnitIDS.newton_meter, BigDecimal.valueOf(100000000), UnitGroup.TORQUE, R.string.newton_meter, R.string.newton_meter_short), + MyUnit(MyUnitIDS.kilonewton_meter, BigDecimal.valueOf(100000000000), UnitGroup.TORQUE, R.string.kilonewton_meter, R.string.kilonewton_meter_short), + MyUnit(MyUnitIDS.gram_force_millimeter, BigDecimal.valueOf(980.665), UnitGroup.TORQUE, R.string.gram_force_millimeter, R.string.gram_force_millimeter_short), + MyUnit(MyUnitIDS.gram_force_centimeter, BigDecimal.valueOf(9806.65), UnitGroup.TORQUE, R.string.gram_force_centimeter, R.string.gram_force_centimeter_short), + MyUnit(MyUnitIDS.kilogram_force_millimeter, BigDecimal.valueOf(980665), UnitGroup.TORQUE, R.string.kilogram_force_millimeter, R.string.kilogram_force_millimeter_short), + MyUnit(MyUnitIDS.gram_force_meter, BigDecimal.valueOf(980665), UnitGroup.TORQUE, R.string.gram_force_meter, R.string.gram_force_meter_short), + MyUnit(MyUnitIDS.kilogram_force_centimeter, BigDecimal.valueOf(9806650), UnitGroup.TORQUE, R.string.kilogram_force_centimeter, R.string.kilogram_force_centimeter_short), + MyUnit(MyUnitIDS.kilogram_force_meter, BigDecimal.valueOf(980665000), UnitGroup.TORQUE, R.string.kilogram_force_meter, R.string.kilogram_force_meter_short), + MyUnit(MyUnitIDS.ounce_force_foot, BigDecimal.valueOf(8473862.4), UnitGroup.TORQUE, R.string.ounce_force_foot, R.string.ounce_force_foot_short), + MyUnit(MyUnitIDS.ounce_force_inch, BigDecimal.valueOf(706155.2), UnitGroup.TORQUE, R.string.ounce_force_inch, R.string.ounce_force_inch_short), + MyUnit(MyUnitIDS.pound_force_foot, BigDecimal.valueOf(135581800), UnitGroup.TORQUE, R.string.pound_force_foot, R.string.pound_force_foot_short), + MyUnit(MyUnitIDS.pound_force_inch, BigDecimal.valueOf(1.1298483333333334E7), UnitGroup.TORQUE, R.string.pound_force_inch, R.string.pound_force_inch_short), + ) +} diff --git a/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt b/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt index 29087877..3bd3347e 100644 --- a/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt +++ b/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt @@ -439,6 +439,27 @@ class AllUnitsTest { kilopond.checkWith(kilonewton, "6553", "64.26298") } + @Test + fun testTorque() = testWithUnits { + newton_meter.checkWith(dyne_meter, "2134", "213400000") + newton_centimeter.checkWith(kilogram_force_millimeter, "2345", "2391.23452") + newton_millimeter.checkWith(pound_force_inch, "2345", "20.755") + kilonewton_meter.checkWith(kilogram_force_meter, "2134", "217607.43985") + dyne_meter.checkWith(newton_centimeter, "2134", "2.134") + dyne_centimeter.checkWith(gram_force_centimeter, "2134", "2.17607") + dyne_millimeter.checkWith(gram_force_millimeter, "2134", "2.17607") + kilogram_force_meter.checkWith(dyne_millimeter, "2134", "2092739110000") + kilogram_force_centimeter.checkWith(gram_force_meter, "2134", "21340") + kilogram_force_millimeter.checkWith(ounce_force_inch, "2134", "2963.56822") + gram_force_meter.checkWith(newton_millimeter, "2134", "20927.3911") + gram_force_centimeter.checkWith(kilogram_force_centimeter, "2134", "2.134") + gram_force_millimeter.checkWith(kilonewton_meter, "2134", "0.00002") + ounce_force_foot.checkWith(kilogram_force_millimeter, "2134", "18439.75503") + ounce_force_inch.checkWith(dyne_meter, "2134", "1506935.1968") + pound_force_foot.checkWith(newton_millimeter, "2134", "2893315.612") + pound_force_inch.checkWith(ounce_force_foot, "2134", "2845.33337") + } + private fun String.checkWith(checkingId: String, value: String, expected: String) { val unitFrom = allUnitsRepository.getById(this) val unitTo = allUnitsRepository.getById(checkingId)