diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index 5de74fb9..8c452c10 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -971,6 +971,32 @@ Hexadecimal base16 + + Attofarad + aF + Statfarad + stF + Farad + F + Exafarad + EF + Picofarad + pF + Nanofarad + nF + Microfarad + µF + Millifarad + mF + Kilofarad + kF + Megafarad + MF + Gigafarad + GF + Petafarad + PF + Length Time @@ -989,6 +1015,7 @@ Currency Flux Base + Capacitance Convert from diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt index 22f8a7c8..22250ef7 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt @@ -48,4 +48,5 @@ enum class UnitGroup( DATA_TRANSFER(res = R.string.data_transfer), FLUX(res = R.string.flux), NUMBER_BASE(res = R.string.number_base), + ELECTROSTATIC_CAPACITANCE(res = R.string.electrostatic_capacitance) } diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt index 467b87a2..980ee487 100644 --- a/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt +++ b/data/units/src/main/java/com/sadellie/unitto/data/units/AllUnitsRepository.kt @@ -41,6 +41,7 @@ import com.sadellie.unitto.data.units.collections.temperatureCollection import com.sadellie.unitto.data.units.collections.timeCollection import com.sadellie.unitto.data.units.collections.volumeCollection import com.sadellie.unitto.data.database.UnitsEntity +import com.sadellie.unitto.data.units.collections.electrostaticCapacitance import java.math.BigDecimal import javax.inject.Inject import javax.inject.Singleton @@ -79,6 +80,7 @@ class AllUnitsRepository @Inject constructor() { UnitGroup.DATA_TRANSFER to dataTransferCollection, UnitGroup.FLUX to fluxCollection, UnitGroup.NUMBER_BASE to numberBaseCollection, + UnitGroup.ELECTROSTATIC_CAPACITANCE to electrostaticCapacitance ) } diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt index eb6669a8..ab64fac5 100644 --- a/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt +++ b/data/units/src/main/java/com/sadellie/unitto/data/units/MyUnitIDS.kt @@ -516,4 +516,18 @@ object MyUnitIDS { const val tetradecimal = "tetradecimal" const val pentadecimal = "pentadecimal" const val hexadecimal = "hexadecimal" + + // ELECTROSTATIC CAPACITANCE + const val attofarad = "attofarad" + const val statfarad = "statfarad" + const val farad = "farad" + const val exafarad = "exafarad" + const val picofarad = "picofarad" + const val nanofarad = "nanofarad" + const val microfarad = "microfarad" + const val millifarad = "millifarad" + const val kilofarad = "kilofarad" + const val megafarad = "megafarad" + const val gigafarad = "gigafarad" + const val petafarad = "petafarad" } diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/collections/Capacitance.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/collections/Capacitance.kt new file mode 100644 index 00000000..63a997bf --- /dev/null +++ b/data/units/src/main/java/com/sadellie/unitto/data/units/collections/Capacitance.kt @@ -0,0 +1,43 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2023 Elshan Agaev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sadellie.unitto.data.units.collections + +import com.sadellie.unitto.data.model.AbstractUnit +import com.sadellie.unitto.data.model.MyUnit +import com.sadellie.unitto.data.model.UnitGroup +import com.sadellie.unitto.data.units.MyUnitIDS +import com.sadellie.unitto.data.units.R +import java.math.BigDecimal + +internal val electrostaticCapacitance: List by lazy { + listOf( + MyUnit(MyUnitIDS.attofarad, BigDecimal.valueOf(1), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.attofarad, R.string.attofarad_short), + MyUnit(MyUnitIDS.picofarad, BigDecimal.valueOf(1E+6), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.picofarad, R.string.picofarad_short), + MyUnit(MyUnitIDS.statfarad, BigDecimal.valueOf(1112650.0561), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.statfarad, R.string.statfarad_short), + MyUnit(MyUnitIDS.nanofarad, BigDecimal.valueOf(1E+9), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.nanofarad, R.string.nanofarad_short), + MyUnit(MyUnitIDS.microfarad, BigDecimal.valueOf(1E+12), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.microfarad, R.string.microfarad_short), + MyUnit(MyUnitIDS.millifarad, BigDecimal.valueOf(1E+15), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.millifarad, R.string.millifarad_short), + MyUnit(MyUnitIDS.farad, BigDecimal.valueOf(1E+18), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.farad, R.string.farad_short), + MyUnit(MyUnitIDS.kilofarad, BigDecimal.valueOf(1E+21), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.kilofarad, R.string.kilofarad_short), + MyUnit(MyUnitIDS.megafarad, BigDecimal.valueOf(1E+24), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.megafarad, R.string.megafarad_short), + MyUnit(MyUnitIDS.gigafarad, BigDecimal.valueOf(1E+27), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.gigafarad, R.string.gigafarad_short), + MyUnit(MyUnitIDS.petafarad, BigDecimal.valueOf(1E+33), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.petafarad, R.string.petafarad_short), + MyUnit(MyUnitIDS.exafarad, BigDecimal.valueOf(1E+36), UnitGroup.ELECTROSTATIC_CAPACITANCE, R.string.exafarad, R.string.exafarad_short), + ) +} diff --git a/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt b/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt index 57746019..df30c3c9 100644 --- a/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt +++ b/data/units/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt @@ -375,6 +375,22 @@ class AllUnitsTest { MyUnitIDS.hexadecimal.checkWith(MyUnitIDS.quinary, "FADE", "4023342") } + @Test + fun testElectrostaticCapacitance() { + MyUnitIDS.attofarad.checkWith(MyUnitIDS.nanofarad, "364354322342", "364.35432") + MyUnitIDS.statfarad.checkWith(MyUnitIDS.microfarad, "123312", "0.1372") + MyUnitIDS.farad.checkWith(MyUnitIDS.kilofarad, "123312", "123.312") + MyUnitIDS.exafarad.checkWith(MyUnitIDS.petafarad, "123312", "123312000") + MyUnitIDS.picofarad.checkWith(MyUnitIDS.nanofarad, "11233", "11.233") + MyUnitIDS.nanofarad.checkWith(MyUnitIDS.millifarad, "11233", "0.01123") + MyUnitIDS.microfarad.checkWith(MyUnitIDS.nanofarad, "1123433", "1123433000") + MyUnitIDS.millifarad.checkWith(MyUnitIDS.nanofarad, "112", "112000000") + MyUnitIDS.kilofarad.checkWith(MyUnitIDS.microfarad, "11132", "11132000000000") + MyUnitIDS.megafarad.checkWith(MyUnitIDS.kilofarad, "11132", "11132000") + MyUnitIDS.gigafarad.checkWith(MyUnitIDS.petafarad, "11132", "0.01113") + MyUnitIDS.petafarad.checkWith(MyUnitIDS.kilofarad, "11132", "11132000000000000") + } + private fun String.checkWith(checkingId: String, value: String, expected: String) { val unitFrom = allUnitsRepository.getById(this) val unitTo = allUnitsRepository.getById(checkingId)