data:converter module tests refactor

This commit is contained in:
Sad Ellie 2023-12-12 11:36:21 +03:00
parent e6f74c56f8
commit ae3e6b291e
2 changed files with 56 additions and 20 deletions

View File

@ -16,9 +16,8 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.sadellie.unitto.data.converter package com.sadellie.unitto.data.common
import com.sadellie.unitto.data.common.lev
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test

View File

@ -18,13 +18,32 @@
package com.sadellie.unitto.data.converter 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.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.converter.collections.accelerationCollection
import com.sadellie.unitto.data.converter.collections.angleCollection
import com.sadellie.unitto.data.converter.collections.areaCollection
import com.sadellie.unitto.data.converter.collections.currencyCollection
import com.sadellie.unitto.data.converter.collections.dataCollection
import com.sadellie.unitto.data.converter.collections.dataTransferCollection
import com.sadellie.unitto.data.converter.collections.electrostaticCapacitance
import com.sadellie.unitto.data.converter.collections.energyCollection
import com.sadellie.unitto.data.converter.collections.flowRateCollection
import com.sadellie.unitto.data.converter.collections.fluxCollection
import com.sadellie.unitto.data.converter.collections.forceCollection
import com.sadellie.unitto.data.converter.collections.fuelConsumptionCollection
import com.sadellie.unitto.data.converter.collections.lengthCollection
import com.sadellie.unitto.data.converter.collections.luminanceCollection
import com.sadellie.unitto.data.converter.collections.massCollection
import com.sadellie.unitto.data.converter.collections.numberBaseCollection
import com.sadellie.unitto.data.converter.collections.powerCollection
import com.sadellie.unitto.data.converter.collections.prefixCollection
import com.sadellie.unitto.data.converter.collections.pressureCollection
import com.sadellie.unitto.data.converter.collections.speedCollection
import com.sadellie.unitto.data.converter.collections.temperatureCollection
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.model.UnitGroup import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.unit.DefaultUnit import com.sadellie.unitto.data.model.unit.DefaultUnit
import com.sadellie.unitto.data.model.unit.NumberBaseUnit import com.sadellie.unitto.data.model.unit.NumberBaseUnit
@ -33,20 +52,35 @@ import kotlinx.coroutines.runBlocking
import org.junit.After 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 java.math.BigDecimal import java.math.BigDecimal
@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 = InstrumentationRegistry.getInstrumentation().targetContext private val allUnits = lengthCollection +
private val database = Room.inMemoryDatabaseBuilder(mContext, UnittoDatabase::class.java).build() currencyCollection +
private val allUnitsRepository = UnitsRepositoryImpl( massCollection +
unitsDao = database.unitsDao(), speedCollection +
currencyRatesDao = database.currencyRatesDao(), temperatureCollection +
mContext = mContext areaCollection +
) timeCollection +
volumeCollection +
dataCollection +
pressureCollection +
accelerationCollection +
energyCollection +
powerCollection +
angleCollection +
dataTransferCollection +
fluxCollection +
numberBaseCollection +
electrostaticCapacitance +
prefixCollection +
forceCollection +
torqueCollection +
flowRateCollection +
luminanceCollection +
fuelConsumptionCollection
@Test @Test
fun testAcceleration() = testWithUnits { fun testAcceleration() = testWithUnits {
@ -551,9 +585,8 @@ class AllUnitsTest {
} }
private fun String.checkWith(checkingId: String, value: String, expected: String) { private fun String.checkWith(checkingId: String, value: String, expected: String) {
val str = this val unitFrom = allUnits.first { it.id == this }
val unitFrom = runBlocking { allUnitsRepository.getById(str) } val unitTo = allUnits.first { it.id == checkingId }
val unitTo = runBlocking { allUnitsRepository.getById(checkingId) }
val actual = when (unitFrom.group) { val actual = when (unitFrom.group) {
UnitGroup.NUMBER_BASE -> (unitFrom as NumberBaseUnit).convert((unitTo as NumberBaseUnit), value) UnitGroup.NUMBER_BASE -> (unitFrom as NumberBaseUnit).convert((unitTo as NumberBaseUnit), value)
@ -573,8 +606,12 @@ class AllUnitsTest {
@After @After
fun after() = runBlocking { fun after() = runBlocking {
val unitGroup = history.keys.first() val unitGroup = history.keys.first()
val testedCount = history[unitGroup]?.size
val totalCount = allUnits.count { it.group == unitGroup }
// GROUP : testedCount / totalCount // GROUP : testedCount / totalCount
println("${unitGroup.name} : ${history[unitGroup]?.size} / ${allUnitsRepository.getCollection(unitGroup).size}") println("${unitGroup.name} : $testedCount / $totalCount")
if (testedCount != totalCount) throw Exception("Didn't cover all units")
} }
private fun testWithUnits(block: MyUnitIDS.() -> Unit): Unit = with(MyUnitIDS, block = block) private fun testWithUnits(block: MyUnitIDS.() -> Unit): Unit = with(MyUnitIDS, block = block)