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_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 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_theme">Color theme</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_short" translatable="false">v3</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_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_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_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_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_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_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_short">m3/s</string>
<string name="unit_cubic_meter_short">m^3</string>
<string name="unit_cubic_meter_per_second_short">m³/s</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_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_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_short">mm3/s</string>
<string name="unit_cubic_millimeter_short">mm^3</string>
<string name="unit_cubic_millimeter_per_second_short">mm³/s</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_short" translatable="false">NCH</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_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_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_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_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_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_per_second">Gibibit/second</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_millimeter">Gram-force millimeter</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_short">g</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_short">h</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_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_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_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_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_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_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_short">t (UK)</string>
<string name="unit_imperial_ton_short">t</string>
<string name="unit_inch">Inch</string>
<string name="unit_inch_short">in</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_millimeter">Kilogram-force millimeter</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_short">kg</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_short">t</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_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_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_short">µF</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_inch">Pound-force inch</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_short">lbs</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_short">Uranus g</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_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_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_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_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_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_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_short" translatable="false">c</string>
<string name="unit_venus_equatorial_radius">Venus equatorial radius</string>

View File

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

View File

@ -20,6 +20,8 @@ package com.sadellie.unitto.data.converter
import android.content.Context
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.data.common.format
import com.sadellie.unitto.data.database.UnittoDatabase
@ -32,15 +34,13 @@ import org.junit.After
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
@RunWith(RobolectricTestRunner::class)
@RunWith(AndroidJUnit4::class)
class AllUnitsTest {
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 allUnitsRepository = UnitsRepositoryImpl(
unitsDao = database.unitsDao(),
@ -257,6 +257,11 @@ class AllUnitsTest {
torr.checkWith(hectopascal, "456", "607.95")
micron_of_mercury.checkWith(hectopascal, "456", "0.60795")
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
@ -362,6 +367,10 @@ class AllUnitsTest {
cubic_centimeter.checkWith(us_liquid_gallon, "1507", "0.39811")
cubic_meter.checkWith(us_liquid_gallon, "1507", "398107.2829")
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

View File

@ -154,6 +154,10 @@ object MyUnitIDS {
const val cubic_centimeter = "cubic_centimeter"
const val cubic_meter = "cubic_meter"
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
const val attosecond = "attosecond"
@ -261,6 +265,11 @@ object MyUnitIDS {
const val torr = "torr"
const val micron_of_mercury = "micron_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
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.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.angleCollection
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.volumeCollection
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 kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow

View File

@ -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 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.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.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
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 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_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_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
)
}
}