From 839954ce8533407cbb581821b46205fa030730e6 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Wed, 3 Jan 2024 19:06:21 +0300 Subject: [PATCH] Update UnitsRepository - Refactor Unit classes - Add grain - Add pace units closes #143 #144 squashed commit --- core/base/src/main/res/values/strings.xml | 21 ++++- .../unitto/data/converter/MyUnitIDS.kt | 5 ++ .../converter/collections/FuelConsumption.kt | 26 +++---- .../unitto/data/converter/collections/Mass.kt | 3 +- .../data/converter/collections/Speed.kt | 65 ++++++++-------- .../unitto/data/converter/AllUnitsTest.kt | 5 ++ .../unit/{FuelBackward.kt => BackwardUnit.kt} | 12 +-- .../unitto/data/model/unit/FuelForward.kt | 76 ------------------- .../unitto/data/model/unit/NormalUnit.kt | 20 +++-- 9 files changed, 100 insertions(+), 133 deletions(-) rename data/model/src/main/java/com/sadellie/unitto/data/model/unit/{FuelBackward.kt => BackwardUnit.kt} (93%) delete mode 100644 data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index 337f9d35..e10b7ee5 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -92,10 +92,12 @@ Used in this dialog window. Should be short --> AMOLED Dark Use black background for dark themes Auto + + + Back up History view Clear cache - Clear input - Start new expression when clicking \"=\" and any button Color scheme Color theme Pick a theming mode @@ -138,6 +140,9 @@ Maybe this can be labeled better? Let me know. It should be something that can d Privacy Policy Rate this app Reorder unit group + + + Restore Selected color Selected style Separator @@ -828,6 +833,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d Gt Gigaweber GWb + + + Grain + gr Gram Gram-force Gram-force centimeter @@ -875,6 +884,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d Horsepower hp Hour + Hour/kilometer + h/km + Hour/mile + h/mi h Imperial cup cup @@ -1133,6 +1146,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d Milliweber mWb Minute + Minute/kilometer + m/km + Minute/mile + m/mi m m Nanofarad diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt index b3a8b660..cfacf6b4 100644 --- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt +++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt @@ -57,6 +57,7 @@ object MyUnitIDS { const val atomic_mass_unit = "atomic_mass_unit" const val microgram = "microgram" const val milligram = "milligram" + const val grain = "grain" const val gram = "gram" const val kilogram = "kilogram" const val metric_ton = "metric_ton" @@ -101,6 +102,10 @@ object MyUnitIDS { const val mile_per_hour = "mile_per_hour" const val mile_per_minute = "mile_per_minute" const val mile_per_second = "mile_per_second" + const val minute_per_kilometer = "minute_per_kilometer" + const val minute_per_mile = "minute_per_mile" + const val hour_per_kilometer = "hour_per_kilometer" + const val hour_per_mile = "hour_per_mile" const val knot = "knot" const val velocity_of_light_in_vacuum = "velocity_of_light_in_vacuum" const val cosmic_velocity_first = "cosmic_velocity_first" diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt index 7690b2b9..9e6a8f56 100644 --- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt +++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt @@ -19,24 +19,24 @@ package com.sadellie.unitto.data.converter.collections import com.sadellie.unitto.core.base.R +import com.sadellie.unitto.data.converter.MyUnitIDS import com.sadellie.unitto.data.model.UnitGroup import com.sadellie.unitto.data.model.unit.AbstractUnit -import com.sadellie.unitto.data.model.unit.FuelBackward -import com.sadellie.unitto.data.model.unit.FuelForward -import com.sadellie.unitto.data.converter.MyUnitIDS +import com.sadellie.unitto.data.model.unit.BackwardUnit +import com.sadellie.unitto.data.model.unit.NormalUnit import java.math.BigDecimal val fuelConsumptionCollection: List by lazy { listOf( - FuelForward(MyUnitIDS.kilometer_per_liter, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_km_per_l, R.string.unit_km_per_l_short), - FuelBackward(MyUnitIDS.liter_per_kilometer, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_km, R.string.unit_l_per_km_short), - FuelBackward(MyUnitIDS.liter_per_100_kilometer, BigDecimal.valueOf(100), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_100_km, R.string.unit_l_per_100_km_short), - FuelForward(MyUnitIDS.mile_per_gallon_uk, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_uk, R.string.unit_mi_per_gallon_uk_short), - FuelForward(MyUnitIDS.mile_per_gallon_us, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_us, R.string.unit_mi_per_gallon_us_short), - FuelForward(MyUnitIDS.mile_us_per_liter, BigDecimal.valueOf(1.609344), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_us_per_l, R.string.unit_mi_us_per_l_short), - FuelBackward(MyUnitIDS.gallon_us_per_mile, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_mile, R.string.unit_gallon_us_per_mile_short), - FuelBackward(MyUnitIDS.gallon_uk_per_mile, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_mile, R.string.unit_gallon_uk_per_mile_short), - FuelBackward(MyUnitIDS.gallon_us_per_100_mile, BigDecimal.valueOf(42.51437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_100_mile, R.string.unit_gallon_us_per_100_mile_short), - FuelBackward(MyUnitIDS.gallon_uk_per_100_mile, BigDecimal.valueOf(35.400618996), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_100_mile, R.string.unit_gallon_uk_per_100_mile_short), + NormalUnit( MyUnitIDS.kilometer_per_liter, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_km_per_l, R.string.unit_km_per_l_short), + BackwardUnit(MyUnitIDS.liter_per_kilometer, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_km, R.string.unit_l_per_km_short), + BackwardUnit(MyUnitIDS.liter_per_100_kilometer, BigDecimal.valueOf(100), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_100_km, R.string.unit_l_per_100_km_short), + NormalUnit( MyUnitIDS.mile_per_gallon_uk, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_uk, R.string.unit_mi_per_gallon_uk_short), + NormalUnit( MyUnitIDS.mile_per_gallon_us, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_us, R.string.unit_mi_per_gallon_us_short), + NormalUnit( MyUnitIDS.mile_us_per_liter, BigDecimal.valueOf(1.609344), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_us_per_l, R.string.unit_mi_us_per_l_short), + BackwardUnit(MyUnitIDS.gallon_us_per_mile, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_mile, R.string.unit_gallon_us_per_mile_short), + BackwardUnit(MyUnitIDS.gallon_uk_per_mile, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_mile, R.string.unit_gallon_uk_per_mile_short), + BackwardUnit(MyUnitIDS.gallon_us_per_100_mile, BigDecimal.valueOf(42.51437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_100_mile, R.string.unit_gallon_us_per_100_mile_short), + BackwardUnit(MyUnitIDS.gallon_uk_per_100_mile, BigDecimal.valueOf(35.400618996), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_100_mile, R.string.unit_gallon_uk_per_100_mile_short), ) } diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt index c311378c..cb5a098c 100644 --- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt +++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt @@ -19,10 +19,10 @@ package com.sadellie.unitto.data.converter.collections import com.sadellie.unitto.core.base.R +import com.sadellie.unitto.data.converter.MyUnitIDS import com.sadellie.unitto.data.model.UnitGroup import com.sadellie.unitto.data.model.unit.AbstractUnit import com.sadellie.unitto.data.model.unit.NormalUnit -import com.sadellie.unitto.data.converter.MyUnitIDS import java.math.BigDecimal internal val massCollection: List by lazy { @@ -31,6 +31,7 @@ internal val massCollection: List by lazy { NormalUnit(MyUnitIDS.atomic_mass_unit, BigDecimal.valueOf(1.6605402E-24), UnitGroup.MASS, R.string.unit_atomic_mass_unit, R.string.unit_atomic_mass_unit_short), NormalUnit(MyUnitIDS.microgram, BigDecimal(1E-6), UnitGroup.MASS, R.string.unit_microgram, R.string.unit_microgram_short), NormalUnit(MyUnitIDS.milligram, BigDecimal.valueOf(1E-3), UnitGroup.MASS, R.string.unit_milligram, R.string.unit_milligram_short), + NormalUnit(MyUnitIDS.grain, BigDecimal.valueOf(0.06479891), UnitGroup.MASS, R.string.unit_grain, R.string.unit_grain_short), NormalUnit(MyUnitIDS.gram, BigDecimal.valueOf(1), UnitGroup.MASS, R.string.unit_gram, R.string.unit_gram_short), NormalUnit(MyUnitIDS.kilogram, BigDecimal.valueOf(1E+3), UnitGroup.MASS, R.string.unit_kilogram, R.string.unit_kilogram_short), NormalUnit(MyUnitIDS.metric_ton, BigDecimal.valueOf(1E+6), UnitGroup.MASS, R.string.unit_metric_ton, R.string.unit_metric_ton_short), diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt index cf0d682d..f09f3267 100644 --- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt +++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt @@ -19,42 +19,47 @@ package com.sadellie.unitto.data.converter.collections import com.sadellie.unitto.core.base.R +import com.sadellie.unitto.data.converter.MyUnitIDS import com.sadellie.unitto.data.model.UnitGroup import com.sadellie.unitto.data.model.unit.AbstractUnit +import com.sadellie.unitto.data.model.unit.BackwardUnit import com.sadellie.unitto.data.model.unit.NormalUnit -import com.sadellie.unitto.data.converter.MyUnitIDS import java.math.BigDecimal internal val speedCollection: List by lazy { listOf( - NormalUnit(MyUnitIDS.millimeter_per_hour, BigDecimal.valueOf(1), UnitGroup.SPEED, R.string.unit_millimeter_per_hour, R.string.unit_millimeter_per_hour_short), - NormalUnit(MyUnitIDS.millimeter_per_minute, BigDecimal.valueOf(60), UnitGroup.SPEED, R.string.unit_millimeter_per_minute, R.string.unit_millimeter_per_minute_short), - NormalUnit(MyUnitIDS.millimeter_per_second, BigDecimal.valueOf(3_600), UnitGroup.SPEED, R.string.unit_millimeter_per_second, R.string.unit_millimeter_per_second_short), - NormalUnit(MyUnitIDS.centimeter_per_hour, BigDecimal.valueOf(10), UnitGroup.SPEED, R.string.unit_centimeter_per_hour, R.string.unit_centimeter_per_hour_short), - NormalUnit(MyUnitIDS.centimeter_per_minute, BigDecimal.valueOf(600), UnitGroup.SPEED, R.string.unit_centimeter_per_minute, R.string.unit_centimeter_per_minute_short), - NormalUnit(MyUnitIDS.centimeter_per_second, BigDecimal.valueOf(36_000), UnitGroup.SPEED, R.string.unit_centimeter_per_second, R.string.unit_centimeter_per_second_short), - NormalUnit(MyUnitIDS.meter_per_hour, BigDecimal.valueOf(1_000), UnitGroup.SPEED, R.string.unit_meter_per_hour, R.string.unit_meter_per_hour_short), - NormalUnit(MyUnitIDS.meter_per_minute, BigDecimal.valueOf(60_000), UnitGroup.SPEED, R.string.unit_meter_per_minute, R.string.unit_meter_per_minute_short), - NormalUnit(MyUnitIDS.meter_per_second, BigDecimal.valueOf(3_600_000), UnitGroup.SPEED, R.string.unit_meter_per_second, R.string.unit_meter_per_second_short), - NormalUnit(MyUnitIDS.kilometer_per_hour, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_hour, R.string.unit_kilometer_per_hour_short), - NormalUnit(MyUnitIDS.kilometer_per_minute, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_minute, R.string.unit_kilometer_per_minute_short), - NormalUnit(MyUnitIDS.kilometer_per_second, BigDecimal.valueOf(3_600_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_second, R.string.unit_kilometer_per_second_short), - NormalUnit(MyUnitIDS.foot_per_hour, BigDecimal.valueOf(304.8), UnitGroup.SPEED, R.string.unit_foot_per_hour, R.string.unit_foot_per_hour_short), - NormalUnit(MyUnitIDS.foot_per_minute, BigDecimal.valueOf(18_288), UnitGroup.SPEED, R.string.unit_foot_per_minute, R.string.unit_foot_per_minute_short), - NormalUnit(MyUnitIDS.foot_per_second, BigDecimal.valueOf(1_097_280), UnitGroup.SPEED, R.string.unit_foot_per_second, R.string.unit_foot_per_second_short), - NormalUnit(MyUnitIDS.yard_per_hour, BigDecimal.valueOf(914.4), UnitGroup.SPEED, R.string.unit_yard_per_hour, R.string.unit_yard_per_hour_short), - NormalUnit(MyUnitIDS.yard_per_minute, BigDecimal.valueOf(54_864), UnitGroup.SPEED, R.string.unit_yard_per_minute, R.string.unit_yard_per_minute_short), - NormalUnit(MyUnitIDS.yard_per_second, BigDecimal.valueOf(3_291_840), UnitGroup.SPEED, R.string.unit_yard_per_second, R.string.unit_yard_per_second_short), - NormalUnit(MyUnitIDS.mile_per_hour, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.unit_mile_per_hour, R.string.unit_mile_per_hour_short), - NormalUnit(MyUnitIDS.mile_per_minute, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.unit_mile_per_minute, R.string.unit_mile_per_minute_short), - NormalUnit(MyUnitIDS.mile_per_second, BigDecimal.valueOf(5_793_638_400), UnitGroup.SPEED, R.string.unit_mile_per_second, R.string.unit_mile_per_second_short), - NormalUnit(MyUnitIDS.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.unit_knot, R.string.unit_knot_short), - NormalUnit(MyUnitIDS.velocity_of_light_in_vacuum, BigDecimal.valueOf(1_079_252_848_799_998), UnitGroup.SPEED, R.string.unit_velocity_of_light_in_vacuum, R.string.unit_velocity_of_light_in_vacuum_short), - NormalUnit(MyUnitIDS.cosmic_velocity_first, BigDecimal.valueOf(28_440_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_first, R.string.unit_cosmic_velocity_first_short), - NormalUnit(MyUnitIDS.cosmic_velocity_second, BigDecimal.valueOf(40_320_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_second, R.string.unit_cosmic_velocity_second_short), - NormalUnit(MyUnitIDS.cosmic_velocity_third, BigDecimal.valueOf(60_012_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_third, R.string.unit_cosmic_velocity_third_short), - NormalUnit(MyUnitIDS.earths_orbital_speed, BigDecimal.valueOf(107_154_000_000), UnitGroup.SPEED, R.string.unit_earths_orbital_speed, R.string.unit_earths_orbital_speed_short), - NormalUnit(MyUnitIDS.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.unit_mach, R.string.unit_mach_short), - NormalUnit(MyUnitIDS.mach_si_standard, BigDecimal.valueOf(1_062_167_040), UnitGroup.SPEED, R.string.unit_mach_si_standard, R.string.unit_mach_si_standard_short), + NormalUnit( MyUnitIDS.millimeter_per_hour, BigDecimal.valueOf(1), UnitGroup.SPEED, R.string.unit_millimeter_per_hour, R.string.unit_millimeter_per_hour_short), + NormalUnit( MyUnitIDS.millimeter_per_minute, BigDecimal.valueOf(60), UnitGroup.SPEED, R.string.unit_millimeter_per_minute, R.string.unit_millimeter_per_minute_short), + NormalUnit( MyUnitIDS.millimeter_per_second, BigDecimal.valueOf(3_600), UnitGroup.SPEED, R.string.unit_millimeter_per_second, R.string.unit_millimeter_per_second_short), + NormalUnit( MyUnitIDS.centimeter_per_hour, BigDecimal.valueOf(10), UnitGroup.SPEED, R.string.unit_centimeter_per_hour, R.string.unit_centimeter_per_hour_short), + NormalUnit( MyUnitIDS.centimeter_per_minute, BigDecimal.valueOf(600), UnitGroup.SPEED, R.string.unit_centimeter_per_minute, R.string.unit_centimeter_per_minute_short), + NormalUnit( MyUnitIDS.centimeter_per_second, BigDecimal.valueOf(36_000), UnitGroup.SPEED, R.string.unit_centimeter_per_second, R.string.unit_centimeter_per_second_short), + NormalUnit( MyUnitIDS.meter_per_hour, BigDecimal.valueOf(1_000), UnitGroup.SPEED, R.string.unit_meter_per_hour, R.string.unit_meter_per_hour_short), + NormalUnit( MyUnitIDS.meter_per_minute, BigDecimal.valueOf(60_000), UnitGroup.SPEED, R.string.unit_meter_per_minute, R.string.unit_meter_per_minute_short), + NormalUnit( MyUnitIDS.meter_per_second, BigDecimal.valueOf(3_600_000), UnitGroup.SPEED, R.string.unit_meter_per_second, R.string.unit_meter_per_second_short), + NormalUnit( MyUnitIDS.kilometer_per_hour, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_hour, R.string.unit_kilometer_per_hour_short), + NormalUnit( MyUnitIDS.kilometer_per_minute, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_minute, R.string.unit_kilometer_per_minute_short), + NormalUnit( MyUnitIDS.kilometer_per_second, BigDecimal.valueOf(3_600_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_second, R.string.unit_kilometer_per_second_short), + NormalUnit( MyUnitIDS.foot_per_hour, BigDecimal.valueOf(304.8), UnitGroup.SPEED, R.string.unit_foot_per_hour, R.string.unit_foot_per_hour_short), + NormalUnit( MyUnitIDS.foot_per_minute, BigDecimal.valueOf(18_288), UnitGroup.SPEED, R.string.unit_foot_per_minute, R.string.unit_foot_per_minute_short), + NormalUnit( MyUnitIDS.foot_per_second, BigDecimal.valueOf(1_097_280), UnitGroup.SPEED, R.string.unit_foot_per_second, R.string.unit_foot_per_second_short), + NormalUnit( MyUnitIDS.yard_per_hour, BigDecimal.valueOf(914.4), UnitGroup.SPEED, R.string.unit_yard_per_hour, R.string.unit_yard_per_hour_short), + NormalUnit( MyUnitIDS.yard_per_minute, BigDecimal.valueOf(54_864), UnitGroup.SPEED, R.string.unit_yard_per_minute, R.string.unit_yard_per_minute_short), + NormalUnit( MyUnitIDS.yard_per_second, BigDecimal.valueOf(3_291_840), UnitGroup.SPEED, R.string.unit_yard_per_second, R.string.unit_yard_per_second_short), + NormalUnit( MyUnitIDS.mile_per_hour, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.unit_mile_per_hour, R.string.unit_mile_per_hour_short), + NormalUnit( MyUnitIDS.mile_per_minute, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.unit_mile_per_minute, R.string.unit_mile_per_minute_short), + NormalUnit( MyUnitIDS.mile_per_second, BigDecimal.valueOf(5_793_638_400), UnitGroup.SPEED, R.string.unit_mile_per_second, R.string.unit_mile_per_second_short), + BackwardUnit(MyUnitIDS.minute_per_kilometer, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.unit_minute_per_kilometer, R.string.unit_minute_per_kilometer_short), + BackwardUnit(MyUnitIDS.minute_per_mile, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.unit_minute_per_mile, R.string.unit_minute_per_mile_short), + BackwardUnit(MyUnitIDS.hour_per_kilometer, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.unit_hour_per_kilometer, R.string.unit_hour_per_kilometer_short), + BackwardUnit(MyUnitIDS.hour_per_mile, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.unit_hour_per_mile, R.string.unit_hour_per_mile_short), + NormalUnit( MyUnitIDS.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.unit_knot, R.string.unit_knot_short), + NormalUnit( MyUnitIDS.velocity_of_light_in_vacuum, BigDecimal.valueOf(1_079_252_848_799_998), UnitGroup.SPEED, R.string.unit_velocity_of_light_in_vacuum, R.string.unit_velocity_of_light_in_vacuum_short), + NormalUnit( MyUnitIDS.cosmic_velocity_first, BigDecimal.valueOf(28_440_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_first, R.string.unit_cosmic_velocity_first_short), + NormalUnit( MyUnitIDS.cosmic_velocity_second, BigDecimal.valueOf(40_320_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_second, R.string.unit_cosmic_velocity_second_short), + NormalUnit( MyUnitIDS.cosmic_velocity_third, BigDecimal.valueOf(60_012_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_third, R.string.unit_cosmic_velocity_third_short), + NormalUnit( MyUnitIDS.earths_orbital_speed, BigDecimal.valueOf(107_154_000_000), UnitGroup.SPEED, R.string.unit_earths_orbital_speed, R.string.unit_earths_orbital_speed_short), + NormalUnit( MyUnitIDS.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.unit_mach, R.string.unit_mach_short), + NormalUnit( MyUnitIDS.mach_si_standard, BigDecimal.valueOf(1_062_167_040), UnitGroup.SPEED, R.string.unit_mach_si_standard, R.string.unit_mach_si_standard_short), ) } diff --git a/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt b/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt index 59f6bfb3..83b4f1da 100644 --- a/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt +++ b/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt @@ -235,6 +235,7 @@ class AllUnitsTest { fun testMass() = testWithUnits { electron_mass_rest.checkWith(milligram, "1500000000000000000", "0.000001") atomic_mass_unit.checkWith(electron_mass_rest, "150", "273433.27951") + grain.checkWith(milligram, "1500", "97198.365") microgram.checkWith(gram, "1500", "0.0015") milligram.checkWith(ounce, "1500", "0.05291") gram.checkWith(ounce, "1500", "52.91094") @@ -321,6 +322,10 @@ class AllUnitsTest { mile_per_hour.checkWith(foot_per_hour, "396", "2090880") mile_per_minute.checkWith(foot_per_hour, "396", "125452800") mile_per_second.checkWith(foot_per_hour, "396", "7527168000") + minute_per_kilometer.checkWith(kilometer_per_minute, "396", "0.00253") + minute_per_mile.checkWith(mile_per_minute, "396", "0.00253") + hour_per_kilometer.checkWith(kilometer_per_hour, "396", "0.00253") + hour_per_mile.checkWith(mile_per_hour, "396", "0.00253") knot.checkWith(meter_per_hour, "396", "733392") velocity_of_light_in_vacuum.checkWith(meter_per_second, "1", "299792458") cosmic_velocity_first.checkWith(meter_per_second, "1", "7900") diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelBackward.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt similarity index 93% rename from data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelBackward.kt rename to data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt index e349de33..e249018a 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelBackward.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt @@ -1,6 +1,6 @@ /* * Unitto is a unit converter for Android - * Copyright (c) 2023 Elshan Agaev + * Copyright (c) 2024 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 @@ -24,7 +24,7 @@ import com.sadellie.unitto.data.model.UnitGroup import java.math.BigDecimal import java.math.RoundingMode -data class FuelBackward( +data class BackwardUnit( override val id: String, override val basicUnit: BigDecimal, override val group: UnitGroup, @@ -39,17 +39,17 @@ data class FuelBackward( if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO return when (unitTo) { - is FuelForward -> this + is NormalUnit -> this .basicUnit .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) .div(unitTo.basicUnit) .div(value) - is FuelBackward -> unitTo + is BackwardUnit -> unitTo .basicUnit .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .div(this.basicUnit) .multiply(value) + .div(this.basicUnit) else -> BigDecimal.ZERO } @@ -64,7 +64,7 @@ data class FuelBackward( isFavorite: Boolean, pairId: String?, counter: Int, - ): FuelBackward = copy( + ): BackwardUnit = copy( id = id, basicUnit = basicUnit, group = group, diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt deleted file mode 100644 index 19278567..00000000 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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.model.unit - -import com.sadellie.unitto.core.base.MAX_PRECISION -import com.sadellie.unitto.data.common.isEqualTo -import com.sadellie.unitto.data.model.UnitGroup -import java.math.BigDecimal -import java.math.RoundingMode - -data class FuelForward( - override val id: String, - override val basicUnit: BigDecimal, - override val group: UnitGroup, - override val displayName: Int, - override val shortName: Int, - override val isFavorite: Boolean = false, - override val pairId: String? = null, - override val counter: Int = 0, -) : DefaultUnit { - override fun convert(unitTo: DefaultUnit, value: BigDecimal): BigDecimal { - // Avoid division by zero - if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO - - return when (unitTo) { - is FuelForward -> this - .basicUnit - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .div(unitTo.basicUnit).multiply(value) - - is FuelBackward -> unitTo - .basicUnit - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .div(this.basicUnit) - .div(value) - - else -> BigDecimal.ZERO - } - } - - override fun clone( - id: String, - basicUnit: BigDecimal, - group: UnitGroup, - displayName: Int, - shortName: Int, - isFavorite: Boolean, - pairId: String?, - counter: Int, - ): FuelForward = copy( - id = id, - basicUnit = basicUnit, - group = group, - displayName = displayName, - shortName = shortName, - isFavorite = isFavorite, - pairId = pairId, - counter = counter, - ) -} diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt index 4554b58d..061b8577 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt @@ -38,11 +38,21 @@ data class NormalUnit( // Avoid division by zero if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO - return this - .basicUnit - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .multiply(value) - .div(unitTo.basicUnit) + return when (unitTo) { + is NormalUnit -> this + .basicUnit + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .multiply(value) + .div(unitTo.basicUnit) + + is BackwardUnit -> unitTo + .basicUnit + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .div(this.basicUnit) + .div(value) + + else -> BigDecimal.ZERO + } } override fun clone(