Update UnitsRepository

- Refactor Unit classes
- Add grain
- Add pace units

closes #143 #144

squashed commit
This commit is contained in:
Sad Ellie 2024-01-03 19:06:21 +03:00
parent 95b12cf1f8
commit 839954ce85
9 changed files with 100 additions and 133 deletions

View File

@ -92,10 +92,12 @@ Used in this dialog window. Should be short -->
<string name="settings_amoled_dark">AMOLED Dark</string> <string name="settings_amoled_dark">AMOLED Dark</string>
<string name="settings_amoled_dark_support">Use black background for dark themes</string> <string name="settings_amoled_dark_support">Use black background for dark themes</string>
<string name="settings_auto">Auto</string> <string name="settings_auto">Auto</string>
<!-- Option in menu. Here it is used as a verb (action) - "back up", don't confuse with "backup".
Alternatively you can use "Export" -->
<string name="settings_back_up">Back up</string>
<string name="settings_calculator_support">History view</string> <string name="settings_calculator_support">History view</string>
<string name="settings_clear_cache">Clear cache</string> <string name="settings_clear_cache">Clear cache</string>
<string name="settings_clear_input">Clear input</string>
<string name="settings_clear_input_support">Start new expression when clicking \"=\" and any button</string>
<string name="settings_color_scheme">Color scheme</string> <string name="settings_color_scheme">Color scheme</string>
<string name="settings_color_theme">Color theme</string> <string name="settings_color_theme">Color theme</string>
<string name="settings_color_theme_support">Pick a theming mode</string> <string name="settings_color_theme_support">Pick a theming mode</string>
@ -138,6 +140,9 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="settings_privacy_policy">Privacy Policy</string> <string name="settings_privacy_policy">Privacy Policy</string>
<string name="settings_rate_this_app">Rate this app</string> <string name="settings_rate_this_app">Rate this app</string>
<string name="settings_reorder_unit_group_description">Reorder unit group</string> <string name="settings_reorder_unit_group_description">Reorder unit group</string>
<!-- Option in menu. Verb (action). Alternatively you can use "Import" -->
<string name="settings_restore">Restore</string>
<string name="settings_selected_color">Selected color</string> <string name="settings_selected_color">Selected color</string>
<string name="settings_selected_style">Selected style</string> <string name="settings_selected_style">Selected style</string>
<string name="settings_separator">Separator</string> <string name="settings_separator">Separator</string>
@ -828,6 +833,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_gigaton_short">Gt</string> <string name="unit_gigaton_short">Gt</string>
<string name="unit_gigaweber">Gigaweber</string> <string name="unit_gigaweber">Gigaweber</string>
<string name="unit_gigaweber_short">GWb</string> <string name="unit_gigaweber_short">GWb</string>
<!-- Unit of mass -->
<string name="unit_grain">Grain</string>
<string name="unit_grain_short">gr</string>
<string name="unit_gram">Gram</string> <string name="unit_gram">Gram</string>
<string name="unit_gram_force">Gram-force</string> <string name="unit_gram_force">Gram-force</string>
<string name="unit_gram_force_centimeter">Gram-force centimeter</string> <string name="unit_gram_force_centimeter">Gram-force centimeter</string>
@ -875,6 +884,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_horse_power_mechanical">Horsepower</string> <string name="unit_horse_power_mechanical">Horsepower</string>
<string name="unit_horse_power_mechanical_short">hp</string> <string name="unit_horse_power_mechanical_short">hp</string>
<string name="unit_hour">Hour</string> <string name="unit_hour">Hour</string>
<string name="unit_hour_per_kilometer">Hour/kilometer</string>
<string name="unit_hour_per_kilometer_short">h/km</string>
<string name="unit_hour_per_mile">Hour/mile</string>
<string name="unit_hour_per_mile_short">h/mi</string>
<string name="unit_hour_short">h</string> <string name="unit_hour_short">h</string>
<string name="unit_imperial_cup">Imperial cup</string> <string name="unit_imperial_cup">Imperial cup</string>
<string name="unit_imperial_cup_short">cup</string> <string name="unit_imperial_cup_short">cup</string>
@ -1133,6 +1146,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_milliweber">Milliweber</string> <string name="unit_milliweber">Milliweber</string>
<string name="unit_milliweber_short">mWb</string> <string name="unit_milliweber_short">mWb</string>
<string name="unit_minute">Minute</string> <string name="unit_minute">Minute</string>
<string name="unit_minute_per_kilometer">Minute/kilometer</string>
<string name="unit_minute_per_kilometer_short">m/km</string>
<string name="unit_minute_per_mile">Minute/mile</string>
<string name="unit_minute_per_mile_short">m/mi</string>
<string name="unit_minute_short">m</string> <string name="unit_minute_short">m</string>
<string name="unit_month_short">m</string> <string name="unit_month_short">m</string>
<string name="unit_nanofarad">Nanofarad</string> <string name="unit_nanofarad">Nanofarad</string>

View File

@ -57,6 +57,7 @@ object MyUnitIDS {
const val atomic_mass_unit = "atomic_mass_unit" const val atomic_mass_unit = "atomic_mass_unit"
const val microgram = "microgram" const val microgram = "microgram"
const val milligram = "milligram" const val milligram = "milligram"
const val grain = "grain"
const val gram = "gram" const val gram = "gram"
const val kilogram = "kilogram" const val kilogram = "kilogram"
const val metric_ton = "metric_ton" const val metric_ton = "metric_ton"
@ -101,6 +102,10 @@ object MyUnitIDS {
const val mile_per_hour = "mile_per_hour" const val mile_per_hour = "mile_per_hour"
const val mile_per_minute = "mile_per_minute" const val mile_per_minute = "mile_per_minute"
const val mile_per_second = "mile_per_second" 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 knot = "knot"
const val velocity_of_light_in_vacuum = "velocity_of_light_in_vacuum" const val velocity_of_light_in_vacuum = "velocity_of_light_in_vacuum"
const val cosmic_velocity_first = "cosmic_velocity_first" const val cosmic_velocity_first = "cosmic_velocity_first"

View File

@ -19,24 +19,24 @@
package com.sadellie.unitto.data.converter.collections package com.sadellie.unitto.data.converter.collections
import com.sadellie.unitto.core.base.R 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.UnitGroup
import com.sadellie.unitto.data.model.unit.AbstractUnit import com.sadellie.unitto.data.model.unit.AbstractUnit
import com.sadellie.unitto.data.model.unit.FuelBackward import com.sadellie.unitto.data.model.unit.BackwardUnit
import com.sadellie.unitto.data.model.unit.FuelForward import com.sadellie.unitto.data.model.unit.NormalUnit
import com.sadellie.unitto.data.converter.MyUnitIDS
import java.math.BigDecimal import java.math.BigDecimal
val fuelConsumptionCollection: List<AbstractUnit> by lazy { val fuelConsumptionCollection: List<AbstractUnit> by lazy {
listOf( 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), NormalUnit( 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), BackwardUnit(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), 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),
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), 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),
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), 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),
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), 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),
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), 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),
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), 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),
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), 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),
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), 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),
) )
} }

View File

@ -19,10 +19,10 @@
package com.sadellie.unitto.data.converter.collections package com.sadellie.unitto.data.converter.collections
import com.sadellie.unitto.core.base.R 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.UnitGroup
import com.sadellie.unitto.data.model.unit.AbstractUnit import com.sadellie.unitto.data.model.unit.AbstractUnit
import com.sadellie.unitto.data.model.unit.NormalUnit import com.sadellie.unitto.data.model.unit.NormalUnit
import com.sadellie.unitto.data.converter.MyUnitIDS
import java.math.BigDecimal import java.math.BigDecimal
internal val massCollection: List<AbstractUnit> by lazy { internal val massCollection: List<AbstractUnit> by lazy {
@ -31,6 +31,7 @@ internal val massCollection: List<AbstractUnit> 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.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.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.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.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.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), NormalUnit(MyUnitIDS.metric_ton, BigDecimal.valueOf(1E+6), UnitGroup.MASS, R.string.unit_metric_ton, R.string.unit_metric_ton_short),

View File

@ -19,42 +19,47 @@
package com.sadellie.unitto.data.converter.collections package com.sadellie.unitto.data.converter.collections
import com.sadellie.unitto.core.base.R 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.UnitGroup
import com.sadellie.unitto.data.model.unit.AbstractUnit 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.model.unit.NormalUnit
import com.sadellie.unitto.data.converter.MyUnitIDS
import java.math.BigDecimal import java.math.BigDecimal
internal val speedCollection: List<AbstractUnit> by lazy { internal val speedCollection: List<AbstractUnit> by lazy {
listOf( 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_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_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.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_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_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.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_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_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.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_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_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.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_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_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.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_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_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.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_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_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.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), 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),
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), 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),
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), 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),
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), 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.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.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.unit_knot, R.string.unit_knot_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.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.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.unit_mach, R.string.unit_mach_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.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.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),
) )
} }

View File

@ -235,6 +235,7 @@ class AllUnitsTest {
fun testMass() = testWithUnits { fun testMass() = testWithUnits {
electron_mass_rest.checkWith(milligram, "1500000000000000000", "0.000001") electron_mass_rest.checkWith(milligram, "1500000000000000000", "0.000001")
atomic_mass_unit.checkWith(electron_mass_rest, "150", "273433.27951") atomic_mass_unit.checkWith(electron_mass_rest, "150", "273433.27951")
grain.checkWith(milligram, "1500", "97198.365")
microgram.checkWith(gram, "1500", "0.0015") microgram.checkWith(gram, "1500", "0.0015")
milligram.checkWith(ounce, "1500", "0.05291") milligram.checkWith(ounce, "1500", "0.05291")
gram.checkWith(ounce, "1500", "52.91094") gram.checkWith(ounce, "1500", "52.91094")
@ -321,6 +322,10 @@ class AllUnitsTest {
mile_per_hour.checkWith(foot_per_hour, "396", "2090880") mile_per_hour.checkWith(foot_per_hour, "396", "2090880")
mile_per_minute.checkWith(foot_per_hour, "396", "125452800") mile_per_minute.checkWith(foot_per_hour, "396", "125452800")
mile_per_second.checkWith(foot_per_hour, "396", "7527168000") 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") knot.checkWith(meter_per_hour, "396", "733392")
velocity_of_light_in_vacuum.checkWith(meter_per_second, "1", "299792458") velocity_of_light_in_vacuum.checkWith(meter_per_second, "1", "299792458")
cosmic_velocity_first.checkWith(meter_per_second, "1", "7900") cosmic_velocity_first.checkWith(meter_per_second, "1", "7900")

View File

@ -1,6 +1,6 @@
/* /*
* Unitto is a unit converter for Android * 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 * 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 * 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.BigDecimal
import java.math.RoundingMode import java.math.RoundingMode
data class FuelBackward( data class BackwardUnit(
override val id: String, override val id: String,
override val basicUnit: BigDecimal, override val basicUnit: BigDecimal,
override val group: UnitGroup, override val group: UnitGroup,
@ -39,17 +39,17 @@ data class FuelBackward(
if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
return when (unitTo) { return when (unitTo) {
is FuelForward -> this is NormalUnit -> this
.basicUnit .basicUnit
.setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
.div(unitTo.basicUnit) .div(unitTo.basicUnit)
.div(value) .div(value)
is FuelBackward -> unitTo is BackwardUnit -> unitTo
.basicUnit .basicUnit
.setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
.div(this.basicUnit)
.multiply(value) .multiply(value)
.div(this.basicUnit)
else -> BigDecimal.ZERO else -> BigDecimal.ZERO
} }
@ -64,7 +64,7 @@ data class FuelBackward(
isFavorite: Boolean, isFavorite: Boolean,
pairId: String?, pairId: String?,
counter: Int, counter: Int,
): FuelBackward = copy( ): BackwardUnit = copy(
id = id, id = id,
basicUnit = basicUnit, basicUnit = basicUnit,
group = group, group = group,

View File

@ -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 <https://www.gnu.org/licenses/>.
*/
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,
)
}

View File

@ -38,11 +38,21 @@ data class NormalUnit(
// Avoid division by zero // Avoid division by zero
if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
return this return when (unitTo) {
.basicUnit is NormalUnit -> this
.setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) .basicUnit
.multiply(value) .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
.div(unitTo.basicUnit) .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( override fun clone(