Update UnitsRepository

closes: #118 #135 #136
This commit is contained in:
Sad Ellie 2023-12-06 21:54:49 +03:00
parent 2d78ab05bd
commit 49f94588ac
9 changed files with 122 additions and 182 deletions

View File

@ -95,7 +95,7 @@ Used in this dialog window. Should be short -->
<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">Clear input</string>
<string name="settings_clear_input_support">Start new expression when clicking \"=\" and clicking any button</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>
@ -257,31 +257,39 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_cosmic_velocity_third">Third Cosmic Velocity</string> <string name="unit_cosmic_velocity_third">Third Cosmic Velocity</string>
<string name="unit_cosmic_velocity_third_short" translatable="false">v3</string> <string name="unit_cosmic_velocity_third_short" translatable="false">v3</string>
<string name="unit_cubic_centimeter">Cubic centimeter</string> <string name="unit_cubic_centimeter">Cubic centimeter</string>
<string name="unit_cubic_centimeter_short">cm^3</string> <string name="unit_cubic_centimeter_short">cm³</string>
<string name="unit_cubic_foot">Cubic foot</string>
<string name="unit_cubic_foot_per_hour">Cubic Foot/hour</string> <string name="unit_cubic_foot_per_hour">Cubic Foot/hour</string>
<string name="unit_cubic_foot_per_hour_short">ft3/h</string> <string name="unit_cubic_foot_per_hour_short">ft³/h</string>
<string name="unit_cubic_foot_per_minute">Cubic Foot/minute</string> <string name="unit_cubic_foot_per_minute">Cubic Foot/minute</string>
<string name="unit_cubic_foot_per_minute_short">ft3/m</string> <string name="unit_cubic_foot_per_minute_short">ft³/m</string>
<string name="unit_cubic_foot_per_second">Cubic Foot/second</string> <string name="unit_cubic_foot_per_second">Cubic Foot/second</string>
<string name="unit_cubic_foot_per_second_short">ft3/s</string> <string name="unit_cubic_foot_per_second_short">ft³/s</string>
<string name="unit_cubic_foot_short">ft³</string>
<string name="unit_cubic_inch">Cubic inch</string>
<string name="unit_cubic_inch_short">in³</string>
<string name="unit_cubic_kilometer">Cubic kilometer</string> <string name="unit_cubic_kilometer">Cubic kilometer</string>
<string name="unit_cubic_kilometer_short">km^3</string> <string name="unit_cubic_kilometer_short">km³</string>
<string name="unit_cubic_meter">Cubic meter</string> <string name="unit_cubic_meter">Cubic meter</string>
<string name="unit_cubic_meter_per_hour">Cubic Meter/hour</string> <string name="unit_cubic_meter_per_hour">Cubic Meter/hour</string>
<string name="unit_cubic_meter_per_hour_short">m3/h</string> <string name="unit_cubic_meter_per_hour_short">m³/h</string>
<string name="unit_cubic_meter_per_minute">Cubic Meter/minute</string> <string name="unit_cubic_meter_per_minute">Cubic Meter/minute</string>
<string name="unit_cubic_meter_per_minute_short">m3/m</string> <string name="unit_cubic_meter_per_minute_short">m³/m</string>
<string name="unit_cubic_meter_per_second">Cubic Meter/second</string> <string name="unit_cubic_meter_per_second">Cubic Meter/second</string>
<string name="unit_cubic_meter_per_second_short">m3/s</string> <string name="unit_cubic_meter_per_second_short">m³/s</string>
<string name="unit_cubic_meter_short">m^3</string> <string name="unit_cubic_meter_short"></string>
<string name="unit_cubic_mile">Cubic mile</string>
<string name="unit_cubic_mile_short">mi³</string>
<string name="unit_cubic_millimeter">Cubic millimeter</string> <string name="unit_cubic_millimeter">Cubic millimeter</string>
<string name="unit_cubic_millimeter_per_hour">Cubic Millimeter/hour</string> <string name="unit_cubic_millimeter_per_hour">Cubic Millimeter/hour</string>
<string name="unit_cubic_millimeter_per_hour_short">mm3/h</string> <string name="unit_cubic_millimeter_per_hour_short">mm³/h</string>
<string name="unit_cubic_millimeter_per_minute">Cubic Millimeter/minute</string> <string name="unit_cubic_millimeter_per_minute">Cubic Millimeter/minute</string>
<string name="unit_cubic_millimeter_per_minute_short">mm3/m</string> <string name="unit_cubic_millimeter_per_minute_short">mm³/m</string>
<string name="unit_cubic_millimeter_per_second">Cubic Millimeter/second</string> <string name="unit_cubic_millimeter_per_second">Cubic Millimeter/second</string>
<string name="unit_cubic_millimeter_per_second_short">mm3/s</string> <string name="unit_cubic_millimeter_per_second_short">mm³/s</string>
<string name="unit_cubic_millimeter_short">mm^3</string> <string name="unit_cubic_millimeter_short">mm³</string>
<string name="unit_cubic_yard">Cubic yard</string>
<string name="unit_cubic_yard_short">yd³</string>
<string name="unit_currency_1inch" translatable="false">1inch Network</string> <string name="unit_currency_1inch" translatable="false">1inch Network</string>
<string name="unit_currency_1inch_short" translatable="false">NCH</string> <string name="unit_currency_1inch_short" translatable="false">NCH</string>
<string name="unit_currency_ada">Cardano</string> <string name="unit_currency_ada">Cardano</string>
@ -787,13 +795,13 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_gallon_per_second_us">Gallon/second (US)</string> <string name="unit_gallon_per_second_us">Gallon/second (US)</string>
<string name="unit_gallon_per_second_us_short">gal/s</string> <string name="unit_gallon_per_second_us_short">gal/s</string>
<string name="unit_gallon_uk_per_100_mile">Gallon/100 mile (UK)</string> <string name="unit_gallon_uk_per_100_mile">Gallon/100 mile (UK)</string>
<string name="unit_gallon_uk_per_100_mile_short">gal/100 mi (UK)</string> <string name="unit_gallon_uk_per_100_mile_short">gal/100 mi</string>
<string name="unit_gallon_uk_per_mile">Gallon/mile (UK)</string> <string name="unit_gallon_uk_per_mile">Gallon/mile (UK)</string>
<string name="unit_gallon_uk_per_mile_short">gal/mi (UK)</string> <string name="unit_gallon_uk_per_mile_short">gal/mi</string>
<string name="unit_gallon_us_per_100_mile">Gallon/100 mile (US)</string> <string name="unit_gallon_us_per_100_mile">Gallon/100 mile (US)</string>
<string name="unit_gallon_us_per_100_mile_short">gal/100 mi (US)</string> <string name="unit_gallon_us_per_100_mile_short">gal/100 mi</string>
<string name="unit_gallon_us_per_mile">Gallon/mile (US)</string> <string name="unit_gallon_us_per_mile">Gallon/mile (US)</string>
<string name="unit_gallon_us_per_mile_short">gal/mi (US)</string> <string name="unit_gallon_us_per_mile_short">gal/mi </string>
<string name="unit_gibibit">Gibibit</string> <string name="unit_gibibit">Gibibit</string>
<string name="unit_gibibit_per_second">Gibibit/second</string> <string name="unit_gibibit_per_second">Gibibit/second</string>
<string name="unit_gibibit_per_second_short">Gib/s</string> <string name="unit_gibibit_per_second_short">Gib/s</string>
@ -828,6 +836,8 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_gram_force_meter_short">gf*m</string> <string name="unit_gram_force_meter_short">gf*m</string>
<string name="unit_gram_force_millimeter">Gram-force millimeter</string> <string name="unit_gram_force_millimeter">Gram-force millimeter</string>
<string name="unit_gram_force_millimeter_short">gf*mm</string> <string name="unit_gram_force_millimeter_short">gf*mm</string>
<string name="unit_gram_force_per_square_centimeter">Gram-force/square centimeter</string>
<string name="unit_gram_force_per_square_centimeter_short">gf/cm²</string>
<string name="unit_gram_force_short">gf</string> <string name="unit_gram_force_short">gf</string>
<string name="unit_gram_short">g</string> <string name="unit_gram_short">g</string>
<string name="unit_group_acceleration">Acceleration</string> <string name="unit_group_acceleration">Acceleration</string>
@ -867,21 +877,21 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_hour">Hour</string> <string name="unit_hour">Hour</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 (UK)</string> <string name="unit_imperial_cup_short">cup</string>
<string name="unit_imperial_fluid_ounce">Imperial fluid ounce</string> <string name="unit_imperial_fluid_ounce">Imperial fluid ounce</string>
<string name="unit_imperial_fluid_ounce_short">fl oz (UK)</string> <string name="unit_imperial_fluid_ounce_short">fl oz</string>
<string name="unit_imperial_gallon">Imperial gallon</string> <string name="unit_imperial_gallon">Imperial gallon</string>
<string name="unit_imperial_gallon_short">gal (UK)</string> <string name="unit_imperial_gallon_short">gal</string>
<string name="unit_imperial_pint">Imperial pint</string> <string name="unit_imperial_pint">Imperial pint</string>
<string name="unit_imperial_pint_short">pt (UK)</string> <string name="unit_imperial_pint_short">pt</string>
<string name="unit_imperial_quart">Imperial quart</string> <string name="unit_imperial_quart">Imperial quart</string>
<string name="unit_imperial_quart_short">qt (UK)</string> <string name="unit_imperial_quart_short">qt</string>
<string name="unit_imperial_tablespoon">Imperial tablespoon</string> <string name="unit_imperial_tablespoon">Imperial tablespoon</string>
<string name="unit_imperial_tablespoon_short">tablespoon (UK)</string> <string name="unit_imperial_tablespoon_short">tablespoon</string>
<string name="unit_imperial_teaspoon">Imperial teaspoon</string> <string name="unit_imperial_teaspoon">Imperial teaspoon</string>
<string name="unit_imperial_teaspoon_short">teaspoon (UK)</string> <string name="unit_imperial_teaspoon_short">teaspoon</string>
<string name="unit_imperial_ton">Imperial ton</string> <string name="unit_imperial_ton">Imperial ton</string>
<string name="unit_imperial_ton_short">t (UK)</string> <string name="unit_imperial_ton_short">t</string>
<string name="unit_inch">Inch</string> <string name="unit_inch">Inch</string>
<string name="unit_inch_short">in</string> <string name="unit_inch_short">in</string>
<string name="unit_jiffy">Jiffy</string> <string name="unit_jiffy">Jiffy</string>
@ -930,6 +940,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_kilogram_force_meter_short">kgf*m</string> <string name="unit_kilogram_force_meter_short">kgf*m</string>
<string name="unit_kilogram_force_millimeter">Kilogram-force millimeter</string> <string name="unit_kilogram_force_millimeter">Kilogram-force millimeter</string>
<string name="unit_kilogram_force_millimeter_short">kgf*mm</string> <string name="unit_kilogram_force_millimeter_short">kgf*mm</string>
<string name="unit_kilogram_force_per_square_centimeter">Kilogram-force/square centimeter</string>
<string name="unit_kilogram_force_per_square_centimeter_short">kgf/cm²</string>
<string name="unit_kilogram_force_per_square_meter">Kilogram-force/square meter</string>
<string name="unit_kilogram_force_per_square_meter_short">kgf/m²</string>
<string name="unit_kilogram_force_short">kgf</string> <string name="unit_kilogram_force_short">kgf</string>
<string name="unit_kilogram_short">kg</string> <string name="unit_kilogram_short">kg</string>
<string name="unit_kilojoule">Kilojoule</string> <string name="unit_kilojoule">Kilojoule</string>
@ -1051,11 +1065,11 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_metric_ton">Metric ton</string> <string name="unit_metric_ton">Metric ton</string>
<string name="unit_metric_ton_short">t</string> <string name="unit_metric_ton_short">t</string>
<string name="unit_mi_per_gallon_uk">Mile/gallon (UK)</string> <string name="unit_mi_per_gallon_uk">Mile/gallon (UK)</string>
<string name="unit_mi_per_gallon_uk_short">mpg (UK)</string> <string name="unit_mi_per_gallon_uk_short">mpg</string>
<string name="unit_mi_per_gallon_us">Mile/gallon (US)</string> <string name="unit_mi_per_gallon_us">Mile/gallon (US)</string>
<string name="unit_mi_per_gallon_us_short">mpg (US)</string> <string name="unit_mi_per_gallon_us_short">mpg</string>
<string name="unit_mi_us_per_l">Mile/liter (US)</string> <string name="unit_mi_us_per_l">Mile/liter (US)</string>
<string name="unit_mi_us_per_l_short">mi/L (US)</string> <string name="unit_mi_us_per_l_short">mi/L</string>
<string name="unit_microfarad">Microfarad</string> <string name="unit_microfarad">Microfarad</string>
<string name="unit_microfarad_short">µF</string> <string name="unit_microfarad_short">µF</string>
<string name="unit_microgram">Microgram</string> <string name="unit_microgram">Microgram</string>
@ -1193,6 +1207,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_pound_force_foot_short">lbf*ft</string> <string name="unit_pound_force_foot_short">lbf*ft</string>
<string name="unit_pound_force_inch">Pound-force inch</string> <string name="unit_pound_force_inch">Pound-force inch</string>
<string name="unit_pound_force_inch_short">lbf*in</string> <string name="unit_pound_force_inch_short">lbf*in</string>
<string name="unit_pound_force_per_square_foot">Pound-force/square foot</string>
<string name="unit_pound_force_per_square_foot_short">pf/f²</string>
<string name="unit_pound_force_per_square_inch">Pound-force/square inch</string>
<string name="unit_pound_force_per_square_inch_short">pf/in²</string>
<string name="unit_pound_force_short">lbf</string> <string name="unit_pound_force_short">lbf</string>
<string name="unit_pound_short">lbs</string> <string name="unit_pound_short">lbs</string>
<string name="unit_prefix_atto">Atto</string> <string name="unit_prefix_atto">Atto</string>
@ -1332,19 +1350,19 @@ Maybe this can be labeled better? Let me know. It should be something that can d
<string name="unit_uranus_surface_gravity">Uranus surface gravity</string> <string name="unit_uranus_surface_gravity">Uranus surface gravity</string>
<string name="unit_uranus_surface_gravity_short">Uranus g</string> <string name="unit_uranus_surface_gravity_short">Uranus g</string>
<string name="unit_us_fluid_ounce">US fluid ounce</string> <string name="unit_us_fluid_ounce">US fluid ounce</string>
<string name="unit_us_fluid_ounce_short">fl oz (US)</string> <string name="unit_us_fluid_ounce_short">fl oz</string>
<string name="unit_us_legal_cup">US legal cup</string> <string name="unit_us_legal_cup">US legal cup</string>
<string name="unit_us_legal_cup_short">cup (US)</string> <string name="unit_us_legal_cup_short">cup</string>
<string name="unit_us_liquid_gallon">US liquid gallon</string> <string name="unit_us_liquid_gallon">US liquid gallon</string>
<string name="unit_us_liquid_gallon_short">gal (US)</string> <string name="unit_us_liquid_gallon_short">gal</string>
<string name="unit_us_liquid_pint">US liquid pint</string> <string name="unit_us_liquid_pint">US liquid pint</string>
<string name="unit_us_liquid_pint_short">pt (US)</string> <string name="unit_us_liquid_pint_short">pt</string>
<string name="unit_us_liquid_quart">US liquid quart</string> <string name="unit_us_liquid_quart">US liquid quart</string>
<string name="unit_us_liquid_quart_short">qt (US)</string> <string name="unit_us_liquid_quart_short">qt</string>
<string name="unit_us_tablespoon">US tablespoon</string> <string name="unit_us_tablespoon">US tablespoon</string>
<string name="unit_us_tablespoon_short">tablespoon (US)</string> <string name="unit_us_tablespoon_short">tablespoon</string>
<string name="unit_us_teaspoon">US teaspoon</string> <string name="unit_us_teaspoon">US teaspoon</string>
<string name="unit_us_teaspoon_short">teaspoon (US)</string> <string name="unit_us_teaspoon_short">teaspoon</string>
<string name="unit_velocity_of_light_in_vacuum">Speed of light in vacuum</string> <string name="unit_velocity_of_light_in_vacuum">Speed of light in vacuum</string>
<string name="unit_velocity_of_light_in_vacuum_short" translatable="false">c</string> <string name="unit_velocity_of_light_in_vacuum_short" translatable="false">c</string>
<string name="unit_venus_equatorial_radius">Venus equatorial radius</string> <string name="unit_venus_equatorial_radius">Venus equatorial radius</string>

View File

@ -35,8 +35,6 @@ android {
} }
dependencies { dependencies {
testImplementation(libs.org.robolectric.robolectric)
implementation(libs.androidx.lifecycle.lifecycle.runtime.compose) implementation(libs.androidx.lifecycle.lifecycle.runtime.compose)
implementation(libs.androidx.datastore.datastore.preferences) implementation(libs.androidx.datastore.datastore.preferences)

View File

@ -20,6 +20,8 @@ package com.sadellie.unitto.data.converter
import android.content.Context import android.content.Context
import androidx.room.Room import androidx.room.Room
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import com.sadellie.unitto.core.base.OutputFormat import com.sadellie.unitto.core.base.OutputFormat
import com.sadellie.unitto.data.common.format import com.sadellie.unitto.data.common.format
import com.sadellie.unitto.data.database.UnittoDatabase import com.sadellie.unitto.data.database.UnittoDatabase
@ -32,15 +34,13 @@ import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import java.math.BigDecimal import java.math.BigDecimal
@RunWith(RobolectricTestRunner::class) @RunWith(AndroidJUnit4::class)
class AllUnitsTest { class AllUnitsTest {
private var history: MutableMap<UnitGroup, Set<String>> = mutableMapOf() private var history: MutableMap<UnitGroup, Set<String>> = mutableMapOf()
private val mContext: Context = RuntimeEnvironment.getApplication().applicationContext private val mContext: Context = InstrumentationRegistry.getInstrumentation().targetContext
private val database = Room.inMemoryDatabaseBuilder(mContext, UnittoDatabase::class.java).build() private val database = Room.inMemoryDatabaseBuilder(mContext, UnittoDatabase::class.java).build()
private val allUnitsRepository = UnitsRepositoryImpl( private val allUnitsRepository = UnitsRepositoryImpl(
unitsDao = database.unitsDao(), unitsDao = database.unitsDao(),
@ -257,6 +257,11 @@ class AllUnitsTest {
torr.checkWith(hectopascal, "456", "607.95") torr.checkWith(hectopascal, "456", "607.95")
micron_of_mercury.checkWith(hectopascal, "456", "0.60795") micron_of_mercury.checkWith(hectopascal, "456", "0.60795")
millimeter_of_mercury.checkWith(hectopascal, "456", "607.95") millimeter_of_mercury.checkWith(hectopascal, "456", "607.95")
kilogram_force_per_square_meter.checkWith(dekapascal, "456", "447.18324")
kilogram_force_per_square_centimeter.checkWith(dekapascal, "456", "4471832.4")
gram_force_per_square_centimeter.checkWith(dekapascal, "456", "4471.8324")
pound_force_per_square_foot.checkWith(dekapascal, "456", "2183.33981")
pound_force_per_square_inch.checkWith(dekapascal, "456", "314400.93257")
} }
@Test @Test
@ -362,6 +367,10 @@ class AllUnitsTest {
cubic_centimeter.checkWith(us_liquid_gallon, "1507", "0.39811") cubic_centimeter.checkWith(us_liquid_gallon, "1507", "0.39811")
cubic_meter.checkWith(us_liquid_gallon, "1507", "398107.2829") cubic_meter.checkWith(us_liquid_gallon, "1507", "398107.2829")
cubic_kilometer.checkWith(us_liquid_gallon, "0.0000001507", "39810.72829") cubic_kilometer.checkWith(us_liquid_gallon, "0.0000001507", "39810.72829")
cubic_inch.checkWith(us_liquid_gallon, "1507", "6.52381")
cubic_foot.checkWith(us_liquid_gallon, "1507", "11273.14286")
cubic_yard.checkWith(us_liquid_gallon, "1507", "304374.85714")
cubic_mile.checkWith(us_liquid_gallon, "0.00001507", "16593835.41175")
} }
@Test @Test

View File

@ -154,6 +154,10 @@ object MyUnitIDS {
const val cubic_centimeter = "cubic_centimeter" const val cubic_centimeter = "cubic_centimeter"
const val cubic_meter = "cubic_meter" const val cubic_meter = "cubic_meter"
const val cubic_kilometer = "cubic_kilometer" const val cubic_kilometer = "cubic_kilometer"
const val cubic_inch = "cubic_inch"
const val cubic_foot = "cubic_foot"
const val cubic_yard = "cubic_yard"
const val cubic_mile = "cubic_mile"
// TIME // TIME
const val attosecond = "attosecond" const val attosecond = "attosecond"
@ -261,6 +265,11 @@ object MyUnitIDS {
const val torr = "torr" const val torr = "torr"
const val micron_of_mercury = "micron_of_mercury" const val micron_of_mercury = "micron_of_mercury"
const val millimeter_of_mercury = "millimeter_of_mercury" const val millimeter_of_mercury = "millimeter_of_mercury"
const val kilogram_force_per_square_meter = "kilogram_force_per_square_meter"
const val kilogram_force_per_square_centimeter = "kilogram_force_per_square_centimeter"
const val gram_force_per_square_centimeter = "gram_force_per_square_centimeter"
const val pound_force_per_square_foot = "pound_force_per_square_foot"
const val pound_force_per_square_inch = "pound_force_per_square_inch"
// ACCELERATION // ACCELERATION
const val attometer_per_square_second = "attometer_per_square_second" const val attometer_per_square_second = "attometer_per_square_second"

View File

@ -20,16 +20,6 @@ package com.sadellie.unitto.data.converter
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import com.sadellie.unitto.data.database.CurrencyRatesDao
import com.sadellie.unitto.data.database.CurrencyRatesEntity
import com.sadellie.unitto.data.database.UnitsDao
import com.sadellie.unitto.data.database.UnitsEntity
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.UnitsListSorting
import com.sadellie.unitto.data.model.repository.UnitsRepository
import com.sadellie.unitto.data.model.unit.AbstractUnit
import com.sadellie.unitto.data.model.unit.ReverseUnit
import com.sadellie.unitto.data.model.unit.filterByLev
import com.sadellie.unitto.data.converter.collections.accelerationCollection import com.sadellie.unitto.data.converter.collections.accelerationCollection
import com.sadellie.unitto.data.converter.collections.angleCollection import com.sadellie.unitto.data.converter.collections.angleCollection
import com.sadellie.unitto.data.converter.collections.areaCollection import com.sadellie.unitto.data.converter.collections.areaCollection
@ -55,6 +45,16 @@ import com.sadellie.unitto.data.converter.collections.timeCollection
import com.sadellie.unitto.data.converter.collections.torqueCollection import com.sadellie.unitto.data.converter.collections.torqueCollection
import com.sadellie.unitto.data.converter.collections.volumeCollection import com.sadellie.unitto.data.converter.collections.volumeCollection
import com.sadellie.unitto.data.converter.remote.CurrencyApi import com.sadellie.unitto.data.converter.remote.CurrencyApi
import com.sadellie.unitto.data.database.CurrencyRatesDao
import com.sadellie.unitto.data.database.CurrencyRatesEntity
import com.sadellie.unitto.data.database.UnitsDao
import com.sadellie.unitto.data.database.UnitsEntity
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.UnitsListSorting
import com.sadellie.unitto.data.model.repository.UnitsRepository
import com.sadellie.unitto.data.model.unit.AbstractUnit
import com.sadellie.unitto.data.model.unit.ReverseUnit
import com.sadellie.unitto.data.model.unit.filterByLev
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow

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 pressureCollection: List<AbstractUnit> by lazy { internal val pressureCollection: List<AbstractUnit> by lazy {
@ -52,5 +52,10 @@ internal val pressureCollection: List<AbstractUnit> by lazy {
NormalUnit(MyUnitIDS.torr, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.unit_torr, R.string.unit_torr_short), NormalUnit(MyUnitIDS.torr, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.unit_torr, R.string.unit_torr_short),
NormalUnit(MyUnitIDS.micron_of_mercury, BigDecimal.valueOf(1.3332236842108281E+17), UnitGroup.PRESSURE, R.string.unit_micron_of_mercury, R.string.unit_micron_of_mercury_short), NormalUnit(MyUnitIDS.micron_of_mercury, BigDecimal.valueOf(1.3332236842108281E+17), UnitGroup.PRESSURE, R.string.unit_micron_of_mercury, R.string.unit_micron_of_mercury_short),
NormalUnit(MyUnitIDS.millimeter_of_mercury, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.unit_millimeter_of_mercury, R.string.unit_millimeter_of_mercury_short), NormalUnit(MyUnitIDS.millimeter_of_mercury, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.unit_millimeter_of_mercury, R.string.unit_millimeter_of_mercury_short),
NormalUnit(MyUnitIDS.kilogram_force_per_square_meter, BigDecimal.valueOf(9.80665E+18), UnitGroup.PRESSURE, R.string.unit_kilogram_force_per_square_meter, R.string.unit_kilogram_force_per_square_meter_short),
NormalUnit(MyUnitIDS.kilogram_force_per_square_centimeter, BigDecimal.valueOf(9.80665E+22), UnitGroup.PRESSURE, R.string.unit_kilogram_force_per_square_centimeter, R.string.unit_kilogram_force_per_square_centimeter_short),
NormalUnit(MyUnitIDS.gram_force_per_square_centimeter, BigDecimal.valueOf(9.80665E+19), UnitGroup.PRESSURE, R.string.unit_gram_force_per_square_centimeter, R.string.unit_gram_force_per_square_centimeter_short),
NormalUnit(MyUnitIDS.pound_force_per_square_foot, BigDecimal.valueOf(4.788025898E+19), UnitGroup.PRESSURE, R.string.unit_pound_force_per_square_foot, R.string.unit_pound_force_per_square_foot_short),
NormalUnit(MyUnitIDS.pound_force_per_square_inch, BigDecimal.valueOf(6.8947572931783E+21), UnitGroup.PRESSURE, R.string.unit_pound_force_per_square_inch, R.string.unit_pound_force_per_square_inch_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 volumeCollection: List<AbstractUnit> by lazy { internal val volumeCollection: List<AbstractUnit> by lazy {
@ -48,5 +48,9 @@ internal val volumeCollection: List<AbstractUnit> by lazy {
NormalUnit(MyUnitIDS.cubic_centimeter, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.VOLUME, R.string.unit_cubic_centimeter, R.string.unit_cubic_centimeter_short), NormalUnit(MyUnitIDS.cubic_centimeter, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.VOLUME, R.string.unit_cubic_centimeter, R.string.unit_cubic_centimeter_short),
NormalUnit(MyUnitIDS.cubic_meter, BigDecimal.valueOf(1.0E+21), UnitGroup.VOLUME, R.string.unit_cubic_meter, R.string.unit_cubic_meter_short), NormalUnit(MyUnitIDS.cubic_meter, BigDecimal.valueOf(1.0E+21), UnitGroup.VOLUME, R.string.unit_cubic_meter, R.string.unit_cubic_meter_short),
NormalUnit(MyUnitIDS.cubic_kilometer, BigDecimal.valueOf(1.0E+30), UnitGroup.VOLUME, R.string.unit_cubic_kilometer, R.string.unit_cubic_kilometer_short), NormalUnit(MyUnitIDS.cubic_kilometer, BigDecimal.valueOf(1.0E+30), UnitGroup.VOLUME, R.string.unit_cubic_kilometer, R.string.unit_cubic_kilometer_short),
NormalUnit(MyUnitIDS.cubic_inch, BigDecimal.valueOf(1.6387064E+16), UnitGroup.VOLUME, R.string.unit_cubic_inch, R.string.unit_cubic_inch_short),
NormalUnit(MyUnitIDS.cubic_foot, BigDecimal.valueOf(2.831684659E+19), UnitGroup.VOLUME, R.string.unit_cubic_foot, R.string.unit_cubic_foot_short),
NormalUnit(MyUnitIDS.cubic_yard, BigDecimal.valueOf(7.645548579839955E+20), UnitGroup.VOLUME, R.string.unit_cubic_yard, R.string.unit_cubic_yard_short),
NormalUnit(MyUnitIDS.cubic_mile, BigDecimal.valueOf(4.168181825440539E+30), UnitGroup.VOLUME, R.string.unit_cubic_mile, R.string.unit_cubic_mile_short),
) )
} }

View File

@ -1,103 +0,0 @@
/*
* Unitto is a unit converter for Android
* Copyright (c) 2022-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.converter
import android.content.Context
import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.unit.NormalUnit
import com.sadellie.unitto.data.model.unit.filterByLev
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import java.math.BigDecimal
val baseList = listOf(
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.attometer, R.string.attometer_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.nanometer, R.string.nanometer_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.millimeter, R.string.millimeter_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.meter, R.string.meter_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.kilometer, R.string.kilometer_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.mile, R.string.mile_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.pound, R.string.pound_short),
NormalUnit("", BigDecimal.ONE, UnitGroup.ANGLE, R.string.kilometer_per_second, R.string.kilometer_per_second_short),
)
@RunWith(RobolectricTestRunner::class)
class LevenshteinFilterAndSortTest {
private val mContext: Context = RuntimeEnvironment.getApplication().applicationContext
@Test
fun testOneEdit() {
val searchQuery = "Kelometer"
val result = baseList.asSequence().filterByLev(searchQuery, mContext).map { mContext.getString(it.displayName) }.toList()
println(result)
assertEquals(
listOf("Kilometer", "Kilometer/second", "Attometer", "Nanometer"),
result
)
}
@Test
fun testLongQuery() {
val searchQuery = "Kelometers per"
val result = baseList.asSequence().filterByLev(searchQuery, mContext).map { mContext.getString(it.displayName) }.toList()
println(result)
assertEquals(
listOf("Kilometer", "Kilometer/second"),
result
)
}
@Test
fun testMultipleMatches() {
val searchQuery = "meter"
val result = baseList.asSequence().filterByLev(searchQuery, mContext).map { mContext.getString(it.displayName) }.toList()
println(result)
assertEquals(
listOf("Meter", "Attometer", "Nanometer", "Millimeter", "Kilometer","Kilometer/second"),
result
)
}
@Test
fun testNone() {
val searchQuery = "Very long unit name that doesn't exist"
val result = baseList.asSequence().filterByLev(searchQuery, mContext).map { mContext.getString(it.displayName) }.toList()
println(result)
assertEquals(
listOf<String>(),
result
)
}
@Test
fun testLowerAndUpperCases() {
val searchQuery = "T"
val result = baseList.asSequence().filterByLev(searchQuery, mContext).map { mContext.getString(it.displayName) }.toList()
println(result)
assertEquals(
listOf("Attometer", "Nanometer", "Millimeter", "Meter", "Kilometer", "Kilometer/second"),
result
)
}
}