mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-20 09:15:26 +02:00
Merge branch 'master' into feature/auto-size-text
# Conflicts: # feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt # feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/CalculatorKeyboard.kt
This commit is contained in:
commit
6cf49812b7
10
README.md
10
README.md
@ -1,3 +1,11 @@
|
|||||||
|
<a href="https://github.com/sadellie/unitto/discussions/26">
|
||||||
|
<p align="middle">
|
||||||
|
<img src="./where-logo.png" width="99%" />
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
# Unitto – calculator and unit converter
|
||||||
|
|
||||||
<p align="middle">
|
<p align="middle">
|
||||||
<img src="./fastlane/metadata/android/en-US/images/featureGraphic.png" width="99%" />
|
<img src="./fastlane/metadata/android/en-US/images/featureGraphic.png" width="99%" />
|
||||||
<img src="./fastlane/metadata/android/en-US/images/phoneScreenshots/slide1.png" width="19%" />
|
<img src="./fastlane/metadata/android/en-US/images/phoneScreenshots/slide1.png" width="19%" />
|
||||||
@ -10,7 +18,7 @@
|
|||||||
## 📲 Download
|
## 📲 Download
|
||||||
<a href="https://play.google.com/store/apps/details?id=com.sadellie.unitto"><img alt="Google Play" src="./content/googlePlay.png" width="32%"/></a>
|
<a href="https://play.google.com/store/apps/details?id=com.sadellie.unitto"><img alt="Google Play" src="./content/googlePlay.png" width="32%"/></a>
|
||||||
<a href="https://f-droid.org/packages/com.sadellie.unitto"><img alt="F-Droid" src="./content/fDroid.png" width="32%"/></a>
|
<a href="https://f-droid.org/packages/com.sadellie.unitto"><img alt="F-Droid" src="./content/fDroid.png" width="32%"/></a>
|
||||||
<a href="https://appgallery.huawei.com/app/C105740875"><img alt="AppGallery" src="./content/appGallery.png" width="32%"/></a>
|
<a href="https://apps.rustore.ru/app/com.sadellie.unitto"><img alt="RuMarket" src="./content/ruStore.png" width="32%"/></a>
|
||||||
|
|
||||||
## 😎 Features
|
## 😎 Features
|
||||||
- Instant expression evaluation
|
- Instant expression evaluation
|
||||||
|
@ -32,7 +32,7 @@ android {
|
|||||||
applicationId = "com.sadellie.unitto"
|
applicationId = "com.sadellie.unitto"
|
||||||
minSdk = 21
|
minSdk = 21
|
||||||
targetSdk = 33
|
targetSdk = 33
|
||||||
versionCode = 17
|
versionCode = 18
|
||||||
versionName = "Illuminating emerald"
|
versionName = "Illuminating emerald"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,47 +122,47 @@
|
|||||||
<string name="kelvin_short" translatable="false">K</string>
|
<string name="kelvin_short" translatable="false">K</string>
|
||||||
|
|
||||||
<!--Speed-->
|
<!--Speed-->
|
||||||
<string name="millimeter_per_hour">Millimeter per hour</string>
|
<string name="millimeter_per_hour">Millimeter/hour</string>
|
||||||
<string name="millimeter_per_hour_short">mm/h</string>
|
<string name="millimeter_per_hour_short">mm/h</string>
|
||||||
<string name="millimeter_per_minute">Millimeter per minute</string>
|
<string name="millimeter_per_minute">Millimeter/minute</string>
|
||||||
<string name="millimeter_per_minute_short">mm/m</string>
|
<string name="millimeter_per_minute_short">mm/m</string>
|
||||||
<string name="millimeter_per_second">Millimeter per second</string>
|
<string name="millimeter_per_second">Millimeter/second</string>
|
||||||
<string name="millimeter_per_second_short">mm/s</string>
|
<string name="millimeter_per_second_short">mm/s</string>
|
||||||
<string name="centimeter_per_hour">Centimeter per hour</string>
|
<string name="centimeter_per_hour">Centimeter/hour</string>
|
||||||
<string name="centimeter_per_hour_short">cm/h</string>
|
<string name="centimeter_per_hour_short">cm/h</string>
|
||||||
<string name="centimeter_per_minute">Centimeter per minute</string>
|
<string name="centimeter_per_minute">Centimeter/minute</string>
|
||||||
<string name="centimeter_per_minute_short">cm/m</string>
|
<string name="centimeter_per_minute_short">cm/m</string>
|
||||||
<string name="centimeter_per_second">Centimeter per second</string>
|
<string name="centimeter_per_second">Centimeter/second</string>
|
||||||
<string name="centimeter_per_second_short">cm/s</string>
|
<string name="centimeter_per_second_short">cm/s</string>
|
||||||
<string name="meter_per_hour">Meter per hour</string>
|
<string name="meter_per_hour">Meter/hour</string>
|
||||||
<string name="meter_per_hour_short">m/h</string>
|
<string name="meter_per_hour_short">m/h</string>
|
||||||
<string name="meter_per_minute">Meter per minute</string>
|
<string name="meter_per_minute">Meter/minute</string>
|
||||||
<string name="meter_per_minute_short">m/m</string>
|
<string name="meter_per_minute_short">m/m</string>
|
||||||
<string name="meter_per_second">Meter per second</string>
|
<string name="meter_per_second">Meter/second</string>
|
||||||
<string name="meter_per_second_short">m/s</string>
|
<string name="meter_per_second_short">m/s</string>
|
||||||
<string name="kilometer_per_hour">Kilometer per hour</string>
|
<string name="kilometer_per_hour">Kilometer/hour</string>
|
||||||
<string name="kilometer_per_hour_short">km/h</string>
|
<string name="kilometer_per_hour_short">km/h</string>
|
||||||
<string name="kilometer_per_minute">Kilometer per minute</string>
|
<string name="kilometer_per_minute">Kilometer/minute</string>
|
||||||
<string name="kilometer_per_minute_short">km/m</string>
|
<string name="kilometer_per_minute_short">km/m</string>
|
||||||
<string name="kilometer_per_second">Kilometer per second</string>
|
<string name="kilometer_per_second">Kilometer/second</string>
|
||||||
<string name="kilometer_per_second_short">km/s</string>
|
<string name="kilometer_per_second_short">km/s</string>
|
||||||
<string name="foot_per_hour">Foot per hour</string>
|
<string name="foot_per_hour">Foot/hour</string>
|
||||||
<string name="foot_per_hour_short">ft/h</string>
|
<string name="foot_per_hour_short">ft/h</string>
|
||||||
<string name="foot_per_minute">Foot per minute</string>
|
<string name="foot_per_minute">Foot/minute</string>
|
||||||
<string name="foot_per_minute_short">ft/m</string>
|
<string name="foot_per_minute_short">ft/m</string>
|
||||||
<string name="foot_per_second">Foot per second</string>
|
<string name="foot_per_second">Foot/second</string>
|
||||||
<string name="foot_per_second_short">ft/s</string>
|
<string name="foot_per_second_short">ft/s</string>
|
||||||
<string name="yard_per_hour">Yard per hour</string>
|
<string name="yard_per_hour">Yard/hour</string>
|
||||||
<string name="yard_per_hour_short">yd/h</string>
|
<string name="yard_per_hour_short">yd/h</string>
|
||||||
<string name="yard_per_minute">Yard per minute</string>
|
<string name="yard_per_minute">Yard/minute</string>
|
||||||
<string name="yard_per_minute_short">yd/m</string>
|
<string name="yard_per_minute_short">yd/m</string>
|
||||||
<string name="yard_per_second">Yard per second</string>
|
<string name="yard_per_second">Yard/second</string>
|
||||||
<string name="yard_per_second_short">yd/s</string>
|
<string name="yard_per_second_short">yd/s</string>
|
||||||
<string name="mile_per_hour">Mile per hour</string>
|
<string name="mile_per_hour">Mile/hour</string>
|
||||||
<string name="mile_per_hour_short">mi/h</string>
|
<string name="mile_per_hour_short">mi/h</string>
|
||||||
<string name="mile_per_minute">Mile per minute</string>
|
<string name="mile_per_minute">Mile/minute</string>
|
||||||
<string name="mile_per_minute_short">mi/m</string>
|
<string name="mile_per_minute_short">mi/m</string>
|
||||||
<string name="mile_per_second">Mile per second</string>
|
<string name="mile_per_second">Mile/second</string>
|
||||||
<string name="mile_per_second_short">mi/s</string>
|
<string name="mile_per_second_short">mi/s</string>
|
||||||
<string name="knot">Knot</string>
|
<string name="knot">Knot</string>
|
||||||
<string name="knot_short">kt</string>
|
<string name="knot_short">kt</string>
|
||||||
@ -220,41 +220,41 @@
|
|||||||
<string name="exabyte_short">EB</string>
|
<string name="exabyte_short">EB</string>
|
||||||
|
|
||||||
<!--Data transfer-->
|
<!--Data transfer-->
|
||||||
<string name="bit_per_second">Bit per second</string>
|
<string name="bit_per_second">Bit/second</string>
|
||||||
<string name="bit_per_second_short">b/s</string>
|
<string name="bit_per_second_short">b/s</string>
|
||||||
<string name="kibibit_per_second">Kibibit per second</string>
|
<string name="kibibit_per_second">Kibibit/second</string>
|
||||||
<string name="kibibit_per_second_short">Kib/s</string>
|
<string name="kibibit_per_second_short">Kib/s</string>
|
||||||
<string name="kilobit_per_second">Kilobit per second</string>
|
<string name="kilobit_per_second">Kilobit/second</string>
|
||||||
<string name="kilobit_per_second_short">Kb/s</string>
|
<string name="kilobit_per_second_short">Kb/s</string>
|
||||||
<string name="megabit_per_second">Megabit per second</string>
|
<string name="megabit_per_second">Megabit/second</string>
|
||||||
<string name="megabit_per_second_short">Mb/s</string>
|
<string name="megabit_per_second_short">Mb/s</string>
|
||||||
<string name="mebibit_per_second">Mebibit per second</string>
|
<string name="mebibit_per_second">Mebibit/second</string>
|
||||||
<string name="mebibit_per_second_short">Mib/s</string>
|
<string name="mebibit_per_second_short">Mib/s</string>
|
||||||
<string name="gigabit_per_second">Gigabit per second</string>
|
<string name="gigabit_per_second">Gigabit/second</string>
|
||||||
<string name="gigabit_per_second_short">Gb/s</string>
|
<string name="gigabit_per_second_short">Gb/s</string>
|
||||||
<string name="terabit_per_second">Terabit per second</string>
|
<string name="terabit_per_second">Terabit/second</string>
|
||||||
<string name="terabit_per_second_short">Tb/s</string>
|
<string name="terabit_per_second_short">Tb/s</string>
|
||||||
<string name="petabit_per_second">Petabit per second</string>
|
<string name="petabit_per_second">Petabit/second</string>
|
||||||
<string name="petabit_per_second_short">Pb/s</string>
|
<string name="petabit_per_second_short">Pb/s</string>
|
||||||
<string name="exabit_per_second">Exabit per second</string>
|
<string name="exabit_per_second">Exabit/second</string>
|
||||||
<string name="exabit_per_second_short">Eb/s</string>
|
<string name="exabit_per_second_short">Eb/s</string>
|
||||||
<string name="byte_per_second">Byte per second</string>
|
<string name="byte_per_second">Byte/second</string>
|
||||||
<string name="byte_per_second_short">B/s</string>
|
<string name="byte_per_second_short">B/s</string>
|
||||||
<string name="kibibyte_per_second">Kibibyte per second</string>
|
<string name="kibibyte_per_second">Kibibyte/second</string>
|
||||||
<string name="kibibyte_per_second_short">KiB/s</string>
|
<string name="kibibyte_per_second_short">KiB/s</string>
|
||||||
<string name="kilobyte_per_second">Kilobyte per second</string>
|
<string name="kilobyte_per_second">Kilobyte/second</string>
|
||||||
<string name="kilobyte_per_second_short">KB/s</string>
|
<string name="kilobyte_per_second_short">KB/s</string>
|
||||||
<string name="megabyte_per_second">Megabyte per second</string>
|
<string name="megabyte_per_second">Megabyte/second</string>
|
||||||
<string name="megabyte_per_second_short">MB/s</string>
|
<string name="megabyte_per_second_short">MB/s</string>
|
||||||
<string name="mebibyte_per_second">Mebibyte per second</string>
|
<string name="mebibyte_per_second">Mebibyte/second</string>
|
||||||
<string name="mebibyte_per_second_short">MiB/s</string>
|
<string name="mebibyte_per_second_short">MiB/s</string>
|
||||||
<string name="gigabyte_per_second">Gigabyte per second</string>
|
<string name="gigabyte_per_second">Gigabyte/second</string>
|
||||||
<string name="gigabyte_per_second_short">GB/s</string>
|
<string name="gigabyte_per_second_short">GB/s</string>
|
||||||
<string name="terabyte_per_second">Terabyte per second</string>
|
<string name="terabyte_per_second">Terabyte/second</string>
|
||||||
<string name="terabyte_per_second_short">TB/s</string>
|
<string name="terabyte_per_second_short">TB/s</string>
|
||||||
<string name="petabyte_per_second">Petabyte per second</string>
|
<string name="petabyte_per_second">Petabyte/second</string>
|
||||||
<string name="petabyte_per_second_short">PB/s</string>
|
<string name="petabyte_per_second_short">PB/s</string>
|
||||||
<string name="exabyte_per_second">Exabyte per second</string>
|
<string name="exabyte_per_second">Exabyte/second</string>
|
||||||
<string name="exabyte_per_second_short">EB/s</string>
|
<string name="exabyte_per_second_short">EB/s</string>
|
||||||
|
|
||||||
<!--Volume-->
|
<!--Volume-->
|
||||||
@ -446,9 +446,9 @@
|
|||||||
<string name="petapascal_short">PPa</string>
|
<string name="petapascal_short">PPa</string>
|
||||||
<string name="exapascal">Exapascal</string>
|
<string name="exapascal">Exapascal</string>
|
||||||
<string name="exapascal_short">EPa</string>
|
<string name="exapascal_short">EPa</string>
|
||||||
<string name="psi">Pound per square inch</string>
|
<string name="psi">Pound/square inch</string>
|
||||||
<string name="psi_short" translatable="false">psi</string>
|
<string name="psi_short" translatable="false">psi</string>
|
||||||
<string name="ksi">Kilopound per square inch</string>
|
<string name="ksi">Kilopound/square inch</string>
|
||||||
<string name="ksi_short" translatable="false">ksi</string>
|
<string name="ksi_short" translatable="false">ksi</string>
|
||||||
<string name="standard_atmosphere">Standard atmosphere</string>
|
<string name="standard_atmosphere">Standard atmosphere</string>
|
||||||
<string name="standard_atmosphere_short">atm</string>
|
<string name="standard_atmosphere_short">atm</string>
|
||||||
@ -460,29 +460,29 @@
|
|||||||
<string name="millimeter_of_mercury_short">mm Hg</string>
|
<string name="millimeter_of_mercury_short">mm Hg</string>
|
||||||
|
|
||||||
<!--Acceleration-->
|
<!--Acceleration-->
|
||||||
<string name="attometer_per_square_second">Attometer per square second</string>
|
<string name="attometer_per_square_second">Attometer/square second</string>
|
||||||
<string name="attometer_per_square_second_short">am/s^2</string>
|
<string name="attometer_per_square_second_short">am/s^2</string>
|
||||||
<string name="femtometer_per_square_second">Femtometer per square second</string>
|
<string name="femtometer_per_square_second">Femtometer/square second</string>
|
||||||
<string name="femtometer_per_square_second_short">fm/s^2</string>
|
<string name="femtometer_per_square_second_short">fm/s^2</string>
|
||||||
<string name="picometer_per_square_second">Picometer per square second</string>
|
<string name="picometer_per_square_second">Picometer/square second</string>
|
||||||
<string name="picometer_per_square_second_short">pm/s^2</string>
|
<string name="picometer_per_square_second_short">pm/s^2</string>
|
||||||
<string name="nanometer_per_square_second">Nanometer per square second</string>
|
<string name="nanometer_per_square_second">Nanometer/square second</string>
|
||||||
<string name="nanometer_per_square_second_short">nm/s^2</string>
|
<string name="nanometer_per_square_second_short">nm/s^2</string>
|
||||||
<string name="micrometer_per_square_second">Micrometer per square second</string>
|
<string name="micrometer_per_square_second">Micrometer/square second</string>
|
||||||
<string name="micrometer_per_square_second_short">µm/s^2</string>
|
<string name="micrometer_per_square_second_short">µm/s^2</string>
|
||||||
<string name="millimeter_per_square_second">Millimeter per square second</string>
|
<string name="millimeter_per_square_second">Millimeter/square second</string>
|
||||||
<string name="millimeter_per_square_second_short">mm/s^2</string>
|
<string name="millimeter_per_square_second_short">mm/s^2</string>
|
||||||
<string name="centimeter_per_square_second">Centimeter per square second</string>
|
<string name="centimeter_per_square_second">Centimeter/square second</string>
|
||||||
<string name="centimeter_per_square_second_short">cm/s^2</string>
|
<string name="centimeter_per_square_second_short">cm/s^2</string>
|
||||||
<string name="decimeter_per_square_second">Decimeter per square second</string>
|
<string name="decimeter_per_square_second">Decimeter/square second</string>
|
||||||
<string name="decimeter_per_square_second_short">dm/s^2</string>
|
<string name="decimeter_per_square_second_short">dm/s^2</string>
|
||||||
<string name="meter_per_square_second">Meter per square second</string>
|
<string name="meter_per_square_second">Meter/square second</string>
|
||||||
<string name="meter_per_square_second_short">m/s^2</string>
|
<string name="meter_per_square_second_short">m/s^2</string>
|
||||||
<string name="kilometer_per_square_second">Kilometer per square second</string>
|
<string name="kilometer_per_square_second">Kilometer/square second</string>
|
||||||
<string name="kilometer_per_square_second_short">km/s^2</string>
|
<string name="kilometer_per_square_second_short">km/s^2</string>
|
||||||
<string name="dekameter_per_square_second">Dekameter per square second</string>
|
<string name="dekameter_per_square_second">Dekameter/square second</string>
|
||||||
<string name="dekameter_per_square_second_short">dam/s^2</string>
|
<string name="dekameter_per_square_second_short">dam/s^2</string>
|
||||||
<string name="hectometer_per_square_second">Hectometer per square second</string>
|
<string name="hectometer_per_square_second">Hectometer/square second</string>
|
||||||
<string name="hectometer_per_square_second_short">hm/s^2</string>
|
<string name="hectometer_per_square_second_short">hm/s^2</string>
|
||||||
<string name="gal">Gal</string>
|
<string name="gal">Gal</string>
|
||||||
<string name="gal_short">Gal</string>
|
<string name="gal_short">Gal</string>
|
||||||
@ -971,6 +971,152 @@
|
|||||||
<string name="hexadecimal">Hexadecimal</string>
|
<string name="hexadecimal">Hexadecimal</string>
|
||||||
<string name="hexadecimal_short">base16</string>
|
<string name="hexadecimal_short">base16</string>
|
||||||
|
|
||||||
|
<!--ELECTROSTATIC CAPACITANCE-->
|
||||||
|
<string name="attofarad">Attofarad</string>
|
||||||
|
<string name="attofarad_short">aF</string>
|
||||||
|
<string name="statfarad">Statfarad</string>
|
||||||
|
<string name="statfarad_short">stF</string>
|
||||||
|
<string name="farad">Farad</string>
|
||||||
|
<string name="farad_short">F</string>
|
||||||
|
<string name="exafarad">Exafarad</string>
|
||||||
|
<string name="exafarad_short">EF</string>
|
||||||
|
<string name="picofarad">Picofarad</string>
|
||||||
|
<string name="picofarad_short">pF</string>
|
||||||
|
<string name="nanofarad">Nanofarad</string>
|
||||||
|
<string name="nanofarad_short">nF</string>
|
||||||
|
<string name="microfarad">Microfarad</string>
|
||||||
|
<string name="microfarad_short">µF</string>
|
||||||
|
<string name="millifarad">Millifarad</string>
|
||||||
|
<string name="millifarad_short">mF</string>
|
||||||
|
<string name="kilofarad">Kilofarad</string>
|
||||||
|
<string name="kilofarad_short">kF</string>
|
||||||
|
<string name="megafarad">Megafarad</string>
|
||||||
|
<string name="megafarad_short">MF</string>
|
||||||
|
<string name="gigafarad">Gigafarad</string>
|
||||||
|
<string name="gigafarad_short">GF</string>
|
||||||
|
<string name="petafarad">Petafarad</string>
|
||||||
|
<string name="petafarad_short">PF</string>
|
||||||
|
|
||||||
|
<!--Prefixes-->
|
||||||
|
<string name="prefix_quetta">Quetta</string>
|
||||||
|
<string name="prefix_quetta_short">Q</string>
|
||||||
|
<string name="prefix_ronna">Ronna</string>
|
||||||
|
<string name="prefix_ronna_short">R</string>
|
||||||
|
<string name="prefix_yotta">Yotta</string>
|
||||||
|
<string name="prefix_yotta_short">Y</string>
|
||||||
|
<string name="prefix_zetta">Zetta</string>
|
||||||
|
<string name="prefix_zetta_short">Z</string>
|
||||||
|
<string name="prefix_exa">Exa</string>
|
||||||
|
<string name="prefix_exa_short">E</string>
|
||||||
|
<string name="prefix_peta">Peta</string>
|
||||||
|
<string name="prefix_peta_short">P</string>
|
||||||
|
<string name="prefix_tera">Tera</string>
|
||||||
|
<string name="prefix_tera_short">T</string>
|
||||||
|
<string name="prefix_giga">Giga</string>
|
||||||
|
<string name="prefix_giga_short">G</string>
|
||||||
|
<string name="prefix_mega">Mega</string>
|
||||||
|
<string name="prefix_mega_short">M</string>
|
||||||
|
<string name="prefix_kilo">Kilo</string>
|
||||||
|
<string name="prefix_kilo_short">k</string>
|
||||||
|
<string name="prefix_hecto">Hecto</string>
|
||||||
|
<string name="prefix_hecto_short">h</string>
|
||||||
|
<string name="prefix_deca">Deca</string>
|
||||||
|
<string name="prefix_deca_short">da</string>
|
||||||
|
<string name="prefix_base">Base</string>
|
||||||
|
<string name="prefix_base_short">Base</string>
|
||||||
|
<string name="prefix_deci">Deci</string>
|
||||||
|
<string name="prefix_deci_short">d</string>
|
||||||
|
<string name="prefix_centi">Centi</string>
|
||||||
|
<string name="prefix_centi_short">c</string>
|
||||||
|
<string name="prefix_milli">Milli</string>
|
||||||
|
<string name="prefix_milli_short">m</string>
|
||||||
|
<string name="prefix_micro">Micro</string>
|
||||||
|
<string name="prefix_micro_short">μ</string>
|
||||||
|
<string name="prefix_nano">Nano</string>
|
||||||
|
<string name="prefix_nano_short">n</string>
|
||||||
|
<string name="prefix_pico">Pico</string>
|
||||||
|
<string name="prefix_pico_short">p</string>
|
||||||
|
<string name="prefix_femto">Femto</string>
|
||||||
|
<string name="prefix_femto_short">f</string>
|
||||||
|
<string name="prefix_atto">Atto</string>
|
||||||
|
<string name="prefix_atto_short">a</string>
|
||||||
|
<string name="prefix_zepto">Zepto</string>
|
||||||
|
<string name="prefix_zepto_short">z</string>
|
||||||
|
<string name="prefix_yocto">Yocto</string>
|
||||||
|
<string name="prefix_yocto_short">y</string>
|
||||||
|
<string name="prefix_ronto">Ronto</string>
|
||||||
|
<string name="prefix_ronto_short">r</string>
|
||||||
|
<string name="prefix_quecto">Quecto</string>
|
||||||
|
<string name="prefix_quecto_short">q</string>
|
||||||
|
|
||||||
|
<!--Force-->
|
||||||
|
<string name="newton">Newton</string>
|
||||||
|
<string name="newton_short">N</string>
|
||||||
|
<string name="kilonewton">Kilonewton</string>
|
||||||
|
<string name="kilonewton_short">kN</string>
|
||||||
|
<string name="gram_force">Gram-force</string>
|
||||||
|
<string name="gram_force_short">gf</string>
|
||||||
|
<string name="kilogram_force">Kilogram-force</string>
|
||||||
|
<string name="kilogram_force_short">kgf</string>
|
||||||
|
<string name="ton_force">Ton-force</string>
|
||||||
|
<string name="ton_force_short">tf</string>
|
||||||
|
<string name="millinewton">Millinewton</string>
|
||||||
|
<string name="millinewton_short">mN</string>
|
||||||
|
<string name="attonewton">attonewton</string>
|
||||||
|
<string name="attonewton_short">aN</string>
|
||||||
|
<string name="dyne">dyne</string>
|
||||||
|
<string name="dyne_short">dyn</string>
|
||||||
|
<string name="joule_per_meter">Joule/meter</string>
|
||||||
|
<string name="joule_per_meter_short">J/m</string>
|
||||||
|
<string name="joule_per_centimeter">Joule/centimeter</string>
|
||||||
|
<string name="joule_per_centimeter_short">J/cm</string>
|
||||||
|
<string name="kilopound_force">Kilopound-force</string>
|
||||||
|
<string name="kilopound_force_short">kipf</string>
|
||||||
|
<string name="pound_force">Pound-force</string>
|
||||||
|
<string name="pound_force_short">lbf</string>
|
||||||
|
<string name="ounce_force">Ounce-force</string>
|
||||||
|
<string name="ounce_force_short">ozf</string>
|
||||||
|
<string name="pond">Pond</string>
|
||||||
|
<string name="pond_short">p</string>
|
||||||
|
<string name="kilopond">Kilopond</string>
|
||||||
|
<string name="kilopond_short">kp</string>
|
||||||
|
|
||||||
|
<!--Torque-->
|
||||||
|
<string name="newton_meter">Newton meter</string>
|
||||||
|
<string name="newton_meter_short">N*m</string>
|
||||||
|
<string name="newton_centimeter">Newton centimeter</string>
|
||||||
|
<string name="newton_centimeter_short">N*cm</string>
|
||||||
|
<string name="newton_millimeter">Newton millimeter</string>
|
||||||
|
<string name="newton_millimeter_short">N*mm</string>
|
||||||
|
<string name="kilonewton_meter">Kilonewton meter</string>
|
||||||
|
<string name="kilonewton_meter_short">kN*m</string>
|
||||||
|
<string name="dyne_meter">Dyne meter</string>
|
||||||
|
<string name="dyne_meter_short">dyn*m</string>
|
||||||
|
<string name="dyne_centimeter">Dyne centimeter</string>
|
||||||
|
<string name="dyne_centimeter_short">dyn*cm</string>
|
||||||
|
<string name="dyne_millimeter">Dyne millimeter</string>
|
||||||
|
<string name="dyne_millimeter_short">dyn*mm</string>
|
||||||
|
<string name="kilogram_force_meter">Kilogram-force meter</string>
|
||||||
|
<string name="kilogram_force_meter_short">kgf*m</string>
|
||||||
|
<string name="kilogram_force_centimeter">Kilogram-force centimeter</string>
|
||||||
|
<string name="kilogram_force_centimeter_short">kgf*cm</string>
|
||||||
|
<string name="kilogram_force_millimeter">Kilogram-force millimeter</string>
|
||||||
|
<string name="kilogram_force_millimeter_short">kgf*mm</string>
|
||||||
|
<string name="gram_force_meter">Gram-force meter</string>
|
||||||
|
<string name="gram_force_meter_short">gf*m</string>
|
||||||
|
<string name="gram_force_centimeter">Gram-force centimeter</string>
|
||||||
|
<string name="gram_force_centimeter_short">gf*cm</string>
|
||||||
|
<string name="gram_force_millimeter">Gram-force millimeter</string>
|
||||||
|
<string name="gram_force_millimeter_short">gf*mm</string>
|
||||||
|
<string name="ounce_force_foot">Ounce-force foot</string>
|
||||||
|
<string name="ounce_force_foot_short">ozf*ft</string>
|
||||||
|
<string name="ounce_force_inch">Ounce-force inch</string>
|
||||||
|
<string name="ounce_force_inch_short">ozf*in</string>
|
||||||
|
<string name="pound_force_foot">Pound-force foot</string>
|
||||||
|
<string name="pound_force_foot_short">lbf*ft</string>
|
||||||
|
<string name="pound_force_inch">Pound-force inch</string>
|
||||||
|
<string name="pound_force_inch_short">lbf*in</string>
|
||||||
|
|
||||||
<!--Groups-->
|
<!--Groups-->
|
||||||
<string name="length">Length</string>
|
<string name="length">Length</string>
|
||||||
<string name="time">Time</string>
|
<string name="time">Time</string>
|
||||||
@ -989,6 +1135,10 @@
|
|||||||
<string name="currency">Currency</string>
|
<string name="currency">Currency</string>
|
||||||
<string name="flux">Flux</string>
|
<string name="flux">Flux</string>
|
||||||
<string name="number_base">Base</string>
|
<string name="number_base">Base</string>
|
||||||
|
<string name="electrostatic_capacitance">Capacitance</string>
|
||||||
|
<string name="prefix">Prefix</string>
|
||||||
|
<string name="force">Force</string>
|
||||||
|
<string name="torque">Torque</string>
|
||||||
|
|
||||||
<!--Screen names-->
|
<!--Screen names-->
|
||||||
<string name="units_screen_from">Convert from</string>
|
<string name="units_screen_from">Convert from</string>
|
||||||
|
@ -48,4 +48,8 @@ enum class UnitGroup(
|
|||||||
DATA_TRANSFER(res = R.string.data_transfer),
|
DATA_TRANSFER(res = R.string.data_transfer),
|
||||||
FLUX(res = R.string.flux),
|
FLUX(res = R.string.flux),
|
||||||
NUMBER_BASE(res = R.string.number_base),
|
NUMBER_BASE(res = R.string.number_base),
|
||||||
|
ELECTROSTATIC_CAPACITANCE(res = R.string.electrostatic_capacitance),
|
||||||
|
PREFIX(res = R.string.prefix),
|
||||||
|
FORCE(res = R.string.force),
|
||||||
|
TORQUE(res = R.string.torque),
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ package com.sadellie.unitto.data.units
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.sadellie.unitto.core.base.MAX_PRECISION
|
import com.sadellie.unitto.core.base.MAX_PRECISION
|
||||||
|
import com.sadellie.unitto.data.database.UnitsEntity
|
||||||
import com.sadellie.unitto.data.model.AbstractUnit
|
import com.sadellie.unitto.data.model.AbstractUnit
|
||||||
import com.sadellie.unitto.data.model.UnitGroup
|
import com.sadellie.unitto.data.model.UnitGroup
|
||||||
import com.sadellie.unitto.data.model.sortByLev
|
import com.sadellie.unitto.data.model.sortByLev
|
||||||
@ -29,18 +30,21 @@ import com.sadellie.unitto.data.units.collections.areaCollection
|
|||||||
import com.sadellie.unitto.data.units.collections.currencyCollection
|
import com.sadellie.unitto.data.units.collections.currencyCollection
|
||||||
import com.sadellie.unitto.data.units.collections.dataCollection
|
import com.sadellie.unitto.data.units.collections.dataCollection
|
||||||
import com.sadellie.unitto.data.units.collections.dataTransferCollection
|
import com.sadellie.unitto.data.units.collections.dataTransferCollection
|
||||||
|
import com.sadellie.unitto.data.units.collections.electrostaticCapacitance
|
||||||
import com.sadellie.unitto.data.units.collections.energyCollection
|
import com.sadellie.unitto.data.units.collections.energyCollection
|
||||||
import com.sadellie.unitto.data.units.collections.fluxCollection
|
import com.sadellie.unitto.data.units.collections.fluxCollection
|
||||||
|
import com.sadellie.unitto.data.units.collections.forceCollection
|
||||||
import com.sadellie.unitto.data.units.collections.lengthCollection
|
import com.sadellie.unitto.data.units.collections.lengthCollection
|
||||||
import com.sadellie.unitto.data.units.collections.massCollection
|
import com.sadellie.unitto.data.units.collections.massCollection
|
||||||
import com.sadellie.unitto.data.units.collections.numberBaseCollection
|
import com.sadellie.unitto.data.units.collections.numberBaseCollection
|
||||||
import com.sadellie.unitto.data.units.collections.powerCollection
|
import com.sadellie.unitto.data.units.collections.powerCollection
|
||||||
|
import com.sadellie.unitto.data.units.collections.prefixCollection
|
||||||
import com.sadellie.unitto.data.units.collections.pressureCollection
|
import com.sadellie.unitto.data.units.collections.pressureCollection
|
||||||
import com.sadellie.unitto.data.units.collections.speedCollection
|
import com.sadellie.unitto.data.units.collections.speedCollection
|
||||||
import com.sadellie.unitto.data.units.collections.temperatureCollection
|
import com.sadellie.unitto.data.units.collections.temperatureCollection
|
||||||
import com.sadellie.unitto.data.units.collections.timeCollection
|
import com.sadellie.unitto.data.units.collections.timeCollection
|
||||||
|
import com.sadellie.unitto.data.units.collections.torqueCollection
|
||||||
import com.sadellie.unitto.data.units.collections.volumeCollection
|
import com.sadellie.unitto.data.units.collections.volumeCollection
|
||||||
import com.sadellie.unitto.data.database.UnitsEntity
|
|
||||||
import java.math.BigDecimal
|
import java.math.BigDecimal
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
@ -79,6 +83,10 @@ class AllUnitsRepository @Inject constructor() {
|
|||||||
UnitGroup.DATA_TRANSFER to dataTransferCollection,
|
UnitGroup.DATA_TRANSFER to dataTransferCollection,
|
||||||
UnitGroup.FLUX to fluxCollection,
|
UnitGroup.FLUX to fluxCollection,
|
||||||
UnitGroup.NUMBER_BASE to numberBaseCollection,
|
UnitGroup.NUMBER_BASE to numberBaseCollection,
|
||||||
|
UnitGroup.ELECTROSTATIC_CAPACITANCE to electrostaticCapacitance,
|
||||||
|
UnitGroup.PREFIX to prefixCollection,
|
||||||
|
UnitGroup.FORCE to forceCollection,
|
||||||
|
UnitGroup.TORQUE to torqueCollection
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,4 +516,81 @@ object MyUnitIDS {
|
|||||||
const val tetradecimal = "tetradecimal"
|
const val tetradecimal = "tetradecimal"
|
||||||
const val pentadecimal = "pentadecimal"
|
const val pentadecimal = "pentadecimal"
|
||||||
const val hexadecimal = "hexadecimal"
|
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"
|
||||||
|
|
||||||
|
// PREFIX
|
||||||
|
const val prefix_quetta = "quetta"
|
||||||
|
const val prefix_ronna = "ronna"
|
||||||
|
const val prefix_yotta = "yotta"
|
||||||
|
const val prefix_zetta = "zetta"
|
||||||
|
const val prefix_exa = "exa"
|
||||||
|
const val prefix_peta = "peta"
|
||||||
|
const val prefix_tera = "tera"
|
||||||
|
const val prefix_giga = "giga"
|
||||||
|
const val prefix_mega = "mega"
|
||||||
|
const val prefix_kilo = "kilo"
|
||||||
|
const val prefix_hecto = "hecto"
|
||||||
|
const val prefix_deca = "deca"
|
||||||
|
const val prefix_base = "base"
|
||||||
|
const val prefix_deci = "deci"
|
||||||
|
const val prefix_centi = "centi"
|
||||||
|
const val prefix_milli = "milli"
|
||||||
|
const val prefix_micro = "micro"
|
||||||
|
const val prefix_nano = "nano"
|
||||||
|
const val prefix_pico = "pico"
|
||||||
|
const val prefix_femto = "femto"
|
||||||
|
const val prefix_atto = "atto"
|
||||||
|
const val prefix_zepto = "zepto"
|
||||||
|
const val prefix_yocto = "yocto"
|
||||||
|
const val prefix_ronto = "ronto"
|
||||||
|
const val prefix_quecto = "quecto"
|
||||||
|
|
||||||
|
// FORCE
|
||||||
|
const val newton = "newton"
|
||||||
|
const val kilonewton = "kilonewton"
|
||||||
|
const val gram_force = "gram_force"
|
||||||
|
const val kilogram_force = "kilogram_force"
|
||||||
|
const val ton_force = "ton_force"
|
||||||
|
const val millinewton = "millinewton"
|
||||||
|
const val attonewton = "attonewton"
|
||||||
|
const val dyne = "dyne"
|
||||||
|
const val joule_per_meter = "joule_per_meter"
|
||||||
|
const val joule_per_centimeter = "joule_per_centimeter"
|
||||||
|
const val kilopound_force = "kilopound_force"
|
||||||
|
const val pound_force = "pound_force"
|
||||||
|
const val ounce_force = "ounce_force"
|
||||||
|
const val pond = "pond"
|
||||||
|
const val kilopond = "kilopond"
|
||||||
|
|
||||||
|
// TORQUE
|
||||||
|
const val newton_meter = "newton_meter"
|
||||||
|
const val newton_centimeter = "newton_centimeter"
|
||||||
|
const val newton_millimeter = "newton_millimeter"
|
||||||
|
const val kilonewton_meter = "kilonewton_meter"
|
||||||
|
const val dyne_meter = "dyne_meter"
|
||||||
|
const val dyne_centimeter = "dyne_centimeter"
|
||||||
|
const val dyne_millimeter = "dyne_millimeter"
|
||||||
|
const val kilogram_force_meter = "kilogram_force_meter"
|
||||||
|
const val kilogram_force_centimeter = "kilogram_force_centimeter"
|
||||||
|
const val kilogram_force_millimeter = "kilogram_force_millimeter"
|
||||||
|
const val gram_force_meter = "gram_force_meter"
|
||||||
|
const val gram_force_centimeter = "gram_force_centimeter"
|
||||||
|
const val gram_force_millimeter = "gram_force_millimeter"
|
||||||
|
const val ounce_force_foot = "ounce_force_foot"
|
||||||
|
const val ounce_force_inch = "ounce_force_inch"
|
||||||
|
const val pound_force_foot = "pound_force_foot"
|
||||||
|
const val pound_force_inch = "pound_force_inch"
|
||||||
}
|
}
|
||||||
|
@ -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 <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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<AbstractUnit> 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),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* 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.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
|
||||||
|
|
||||||
|
val forceCollection: List<AbstractUnit> by lazy {
|
||||||
|
listOf(
|
||||||
|
MyUnit(MyUnitIDS.attonewton, BigDecimal.valueOf(1), UnitGroup.FORCE, R.string.attonewton, R.string.attonewton_short),
|
||||||
|
MyUnit(MyUnitIDS.dyne, BigDecimal.valueOf(1E+13), UnitGroup.FORCE, R.string.dyne, R.string.dyne_short),
|
||||||
|
MyUnit(MyUnitIDS.millinewton, BigDecimal.valueOf(1E+15), UnitGroup.FORCE, R.string.millinewton, R.string.millinewton_short),
|
||||||
|
MyUnit(MyUnitIDS.joule_per_centimeter, BigDecimal.valueOf(1E+16), UnitGroup.FORCE, R.string.joule_per_centimeter, R.string.joule_per_centimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.newton, BigDecimal.valueOf(1E+18), UnitGroup.FORCE, R.string.newton, R.string.newton_short),
|
||||||
|
MyUnit(MyUnitIDS.joule_per_meter, BigDecimal.valueOf(1E+18), UnitGroup.FORCE, R.string.joule_per_meter, R.string.joule_per_meter_short),
|
||||||
|
MyUnit(MyUnitIDS.kilonewton, BigDecimal.valueOf(1E+21), UnitGroup.FORCE, R.string.kilonewton, R.string.kilonewton_short),
|
||||||
|
MyUnit(MyUnitIDS.gram_force, BigDecimal.valueOf(9.80665E+15), UnitGroup.FORCE, R.string.gram_force, R.string.gram_force_short),
|
||||||
|
MyUnit(MyUnitIDS.kilogram_force, BigDecimal.valueOf(9.80665E+18), UnitGroup.FORCE, R.string.kilogram_force, R.string.kilogram_force_short),
|
||||||
|
MyUnit(MyUnitIDS.ton_force, BigDecimal.valueOf(9.80665E+21), UnitGroup.FORCE, R.string.ton_force, R.string.ton_force_short),
|
||||||
|
MyUnit(MyUnitIDS.ounce_force, BigDecimal.valueOf(2.78013850953423008E17), UnitGroup.FORCE, R.string.ounce_force, R.string.ounce_force_short),
|
||||||
|
MyUnit(MyUnitIDS.pound_force, BigDecimal.valueOf(4.4482216152550001E18), UnitGroup.FORCE, R.string.pound_force, R.string.pound_force_short),
|
||||||
|
MyUnit(MyUnitIDS.kilopound_force, BigDecimal.valueOf(4.448221615255E+21), UnitGroup.FORCE, R.string.kilopound_force, R.string.kilopound_force_short),
|
||||||
|
MyUnit(MyUnitIDS.pond, BigDecimal.valueOf(9.80665E+15), UnitGroup.FORCE, R.string.pond, R.string.pond_short),
|
||||||
|
MyUnit(MyUnitIDS.kilopond, BigDecimal.valueOf(9.80665E+18), UnitGroup.FORCE, R.string.kilopond, R.string.kilopond_short),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* 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.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
|
||||||
|
|
||||||
|
val prefixCollection: List<AbstractUnit> by lazy {
|
||||||
|
listOf(
|
||||||
|
MyUnit(MyUnitIDS.prefix_quetta, BigDecimal.valueOf(1E+30), UnitGroup.PREFIX, R.string.prefix_quetta, R.string.prefix_quetta_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_ronna, BigDecimal.valueOf(1E+27), UnitGroup.PREFIX, R.string.prefix_ronna, R.string.prefix_ronna_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_yotta, BigDecimal.valueOf(1E+24), UnitGroup.PREFIX, R.string.prefix_yotta, R.string.prefix_yotta_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_zetta, BigDecimal.valueOf(1E+21), UnitGroup.PREFIX, R.string.prefix_zetta, R.string.prefix_zetta_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_exa, BigDecimal.valueOf(1E+18), UnitGroup.PREFIX, R.string.prefix_exa, R.string.prefix_exa_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_peta, BigDecimal.valueOf(1E+15), UnitGroup.PREFIX, R.string.prefix_peta, R.string.prefix_peta_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_tera, BigDecimal.valueOf(1E+12), UnitGroup.PREFIX, R.string.prefix_tera, R.string.prefix_tera_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_giga, BigDecimal.valueOf(1E+9), UnitGroup.PREFIX, R.string.prefix_giga, R.string.prefix_giga_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_mega, BigDecimal.valueOf(1E+6), UnitGroup.PREFIX, R.string.prefix_mega, R.string.prefix_mega_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_kilo, BigDecimal.valueOf(1E+3), UnitGroup.PREFIX, R.string.prefix_kilo, R.string.prefix_kilo_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_hecto, BigDecimal.valueOf(1E+2), UnitGroup.PREFIX, R.string.prefix_hecto, R.string.prefix_hecto_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_deca, BigDecimal.valueOf(1E+1), UnitGroup.PREFIX, R.string.prefix_deca, R.string.prefix_deca_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_base, BigDecimal.valueOf(1E+0), UnitGroup.PREFIX, R.string.prefix_base, R.string.prefix_base_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_deci, BigDecimal.valueOf(1E-1), UnitGroup.PREFIX, R.string.prefix_deci, R.string.prefix_deci_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_centi, BigDecimal.valueOf(1E-2), UnitGroup.PREFIX, R.string.prefix_centi, R.string.prefix_centi_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_milli, BigDecimal.valueOf(1E-3), UnitGroup.PREFIX, R.string.prefix_milli, R.string.prefix_milli_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_micro, BigDecimal.valueOf(1E-6), UnitGroup.PREFIX, R.string.prefix_micro, R.string.prefix_micro_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_nano, BigDecimal.valueOf(1E-9), UnitGroup.PREFIX, R.string.prefix_nano, R.string.prefix_nano_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_pico, BigDecimal.valueOf(1E-12), UnitGroup.PREFIX, R.string.prefix_pico, R.string.prefix_pico_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_femto, BigDecimal.valueOf(1E-15), UnitGroup.PREFIX, R.string.prefix_femto, R.string.prefix_femto_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_atto, BigDecimal.valueOf(1E-18), UnitGroup.PREFIX, R.string.prefix_atto, R.string.prefix_atto_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_zepto, BigDecimal.valueOf(1E-21), UnitGroup.PREFIX, R.string.prefix_zepto, R.string.prefix_zepto_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_yocto, BigDecimal.valueOf(1E-24), UnitGroup.PREFIX, R.string.prefix_yocto, R.string.prefix_yocto_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_ronto, BigDecimal.valueOf(1E-27), UnitGroup.PREFIX, R.string.prefix_ronto, R.string.prefix_ronto_short),
|
||||||
|
MyUnit(MyUnitIDS.prefix_quecto, BigDecimal.valueOf(1E-30), UnitGroup.PREFIX, R.string.prefix_quecto, R.string.prefix_quecto_short),
|
||||||
|
)
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* 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.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
|
||||||
|
|
||||||
|
val torqueCollection: List<AbstractUnit> by lazy {
|
||||||
|
listOf(
|
||||||
|
MyUnit(MyUnitIDS.dyne_millimeter, BigDecimal.valueOf(1), UnitGroup.TORQUE, R.string.dyne_millimeter, R.string.dyne_millimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.dyne_centimeter, BigDecimal.valueOf(10), UnitGroup.TORQUE, R.string.dyne_centimeter, R.string.dyne_centimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.dyne_meter, BigDecimal.valueOf(1000), UnitGroup.TORQUE, R.string.dyne_meter, R.string.dyne_meter_short),
|
||||||
|
MyUnit(MyUnitIDS.newton_millimeter, BigDecimal.valueOf(100000), UnitGroup.TORQUE, R.string.newton_millimeter, R.string.newton_millimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.newton_centimeter, BigDecimal.valueOf(1000000), UnitGroup.TORQUE, R.string.newton_centimeter, R.string.newton_centimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.newton_meter, BigDecimal.valueOf(100000000), UnitGroup.TORQUE, R.string.newton_meter, R.string.newton_meter_short),
|
||||||
|
MyUnit(MyUnitIDS.kilonewton_meter, BigDecimal.valueOf(100000000000), UnitGroup.TORQUE, R.string.kilonewton_meter, R.string.kilonewton_meter_short),
|
||||||
|
MyUnit(MyUnitIDS.gram_force_millimeter, BigDecimal.valueOf(980.665), UnitGroup.TORQUE, R.string.gram_force_millimeter, R.string.gram_force_millimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.gram_force_centimeter, BigDecimal.valueOf(9806.65), UnitGroup.TORQUE, R.string.gram_force_centimeter, R.string.gram_force_centimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.kilogram_force_millimeter, BigDecimal.valueOf(980665), UnitGroup.TORQUE, R.string.kilogram_force_millimeter, R.string.kilogram_force_millimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.gram_force_meter, BigDecimal.valueOf(980665), UnitGroup.TORQUE, R.string.gram_force_meter, R.string.gram_force_meter_short),
|
||||||
|
MyUnit(MyUnitIDS.kilogram_force_centimeter, BigDecimal.valueOf(9806650), UnitGroup.TORQUE, R.string.kilogram_force_centimeter, R.string.kilogram_force_centimeter_short),
|
||||||
|
MyUnit(MyUnitIDS.kilogram_force_meter, BigDecimal.valueOf(980665000), UnitGroup.TORQUE, R.string.kilogram_force_meter, R.string.kilogram_force_meter_short),
|
||||||
|
MyUnit(MyUnitIDS.ounce_force_foot, BigDecimal.valueOf(8473862.4), UnitGroup.TORQUE, R.string.ounce_force_foot, R.string.ounce_force_foot_short),
|
||||||
|
MyUnit(MyUnitIDS.ounce_force_inch, BigDecimal.valueOf(706155.2), UnitGroup.TORQUE, R.string.ounce_force_inch, R.string.ounce_force_inch_short),
|
||||||
|
MyUnit(MyUnitIDS.pound_force_foot, BigDecimal.valueOf(135581800), UnitGroup.TORQUE, R.string.pound_force_foot, R.string.pound_force_foot_short),
|
||||||
|
MyUnit(MyUnitIDS.pound_force_inch, BigDecimal.valueOf(1.1298483333333334E7), UnitGroup.TORQUE, R.string.pound_force_inch, R.string.pound_force_inch_short),
|
||||||
|
)
|
||||||
|
}
|
@ -35,344 +35,429 @@ class AllUnitsTest {
|
|||||||
private val allUnitsRepository = AllUnitsRepository()
|
private val allUnitsRepository = AllUnitsRepository()
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testAcceleration() {
|
fun testAcceleration() = testWithUnits {
|
||||||
MyUnitIDS.attometer_per_square_second.checkWith(MyUnitIDS.femtometer_per_square_second, "69", "0.069")
|
attometer_per_square_second.checkWith(femtometer_per_square_second, "69", "0.069")
|
||||||
MyUnitIDS.femtometer_per_square_second.checkWith(MyUnitIDS.picometer_per_square_second, "69", "0.069")
|
femtometer_per_square_second.checkWith(picometer_per_square_second, "69", "0.069")
|
||||||
MyUnitIDS.picometer_per_square_second.checkWith(MyUnitIDS.micrometer_per_square_second, "69", "0.00007")
|
picometer_per_square_second.checkWith(micrometer_per_square_second, "69", "0.00007")
|
||||||
MyUnitIDS.nanometer_per_square_second.checkWith(MyUnitIDS.centimeter_per_square_second, "69", "0.000007")
|
nanometer_per_square_second.checkWith(centimeter_per_square_second, "69", "0.000007")
|
||||||
MyUnitIDS.micrometer_per_square_second.checkWith(MyUnitIDS.nanometer_per_square_second, "69", "69000")
|
micrometer_per_square_second.checkWith(nanometer_per_square_second, "69", "69000")
|
||||||
MyUnitIDS.millimeter_per_square_second.checkWith(MyUnitIDS.centimeter_per_square_second, "69", "6.9")
|
millimeter_per_square_second.checkWith(centimeter_per_square_second, "69", "6.9")
|
||||||
MyUnitIDS.centimeter_per_square_second.checkWith(MyUnitIDS.meter_per_square_second, "69", "0.69")
|
centimeter_per_square_second.checkWith(meter_per_square_second, "69", "0.69")
|
||||||
MyUnitIDS.decimeter_per_square_second.checkWith(MyUnitIDS.meter_per_square_second, "69", "6.9")
|
decimeter_per_square_second.checkWith(meter_per_square_second, "69", "6.9")
|
||||||
MyUnitIDS.meter_per_square_second.checkWith(MyUnitIDS.micrometer_per_square_second, "69", "69000000")
|
meter_per_square_second.checkWith(micrometer_per_square_second, "69", "69000000")
|
||||||
MyUnitIDS.kilometer_per_square_second.checkWith(MyUnitIDS.hectometer_per_square_second, "69", "690")
|
kilometer_per_square_second.checkWith(hectometer_per_square_second, "69", "690")
|
||||||
MyUnitIDS.dekameter_per_square_second.checkWith(MyUnitIDS.gal, "69", "69000")
|
dekameter_per_square_second.checkWith(gal, "69", "69000")
|
||||||
MyUnitIDS.hectometer_per_square_second.checkWith(MyUnitIDS.gal, "69", "690000")
|
hectometer_per_square_second.checkWith(gal, "69", "690000")
|
||||||
MyUnitIDS.gal.checkWith(MyUnitIDS.centimeter_per_square_second, "69", "69")
|
gal.checkWith(centimeter_per_square_second, "69", "69")
|
||||||
MyUnitIDS.mercury_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "3.7")
|
mercury_surface_gravity.checkWith(meter_per_square_second, "1", "3.7")
|
||||||
MyUnitIDS.venus_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "8.87")
|
venus_surface_gravity.checkWith(meter_per_square_second, "1", "8.87")
|
||||||
MyUnitIDS.earth_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "9.80655")
|
earth_surface_gravity.checkWith(meter_per_square_second, "1", "9.80655")
|
||||||
MyUnitIDS.mars_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "3.71")
|
mars_surface_gravity.checkWith(meter_per_square_second, "1", "3.71")
|
||||||
MyUnitIDS.jupiter_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "24.79")
|
jupiter_surface_gravity.checkWith(meter_per_square_second, "1", "24.79")
|
||||||
MyUnitIDS.saturn_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "10.44")
|
saturn_surface_gravity.checkWith(meter_per_square_second, "1", "10.44")
|
||||||
MyUnitIDS.uranus_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "8.87")
|
uranus_surface_gravity.checkWith(meter_per_square_second, "1", "8.87")
|
||||||
MyUnitIDS.neptune_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "11.15")
|
neptune_surface_gravity.checkWith(meter_per_square_second, "1", "11.15")
|
||||||
MyUnitIDS.sun_surface_gravity.checkWith(MyUnitIDS.meter_per_square_second, "1", "274")
|
sun_surface_gravity.checkWith(meter_per_square_second, "1", "274")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testAngle() {
|
fun testAngle() = testWithUnits {
|
||||||
MyUnitIDS.angle_second.checkWith(MyUnitIDS.angle_minute, "420.5", "7.00833")
|
angle_second.checkWith(angle_minute, "420.5", "7.00833")
|
||||||
MyUnitIDS.angle_minute.checkWith(MyUnitIDS.radian, "420.5", "0.12232")
|
angle_minute.checkWith(radian, "420.5", "0.12232")
|
||||||
MyUnitIDS.degree.checkWith(MyUnitIDS.turn, "420.5", "1.16806")
|
degree.checkWith(turn, "420.5", "1.16806")
|
||||||
MyUnitIDS.radian.checkWith(MyUnitIDS.turn, "420.5", "66.92465")
|
radian.checkWith(turn, "420.5", "66.92465")
|
||||||
MyUnitIDS.sextant.checkWith(MyUnitIDS.radian, "420.5", "440.34657")
|
sextant.checkWith(radian, "420.5", "440.34657")
|
||||||
MyUnitIDS.turn.checkWith(MyUnitIDS.angle_minute, "420.5", "9082800")
|
turn.checkWith(angle_minute, "420.5", "9082800")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testArea() {
|
fun testArea() = testWithUnits {
|
||||||
MyUnitIDS.cent.checkWith(MyUnitIDS.acre, "75.9", "7590")
|
cent.checkWith(acre, "75.9", "7590")
|
||||||
MyUnitIDS.acre.checkWith(MyUnitIDS.square_kilometer, "75.9", "0.30716")
|
acre.checkWith(square_kilometer, "75.9", "0.30716")
|
||||||
MyUnitIDS.hectare.checkWith(MyUnitIDS.square_foot, "75.9", "8169808.00585")
|
hectare.checkWith(square_foot, "75.9", "8169808.00585")
|
||||||
MyUnitIDS.square_foot.checkWith(MyUnitIDS.square_decimeter, "75.9", "705.13407")
|
square_foot.checkWith(square_decimeter, "75.9", "705.13407")
|
||||||
MyUnitIDS.square_mile.checkWith(MyUnitIDS.square_foot, "75.9", "2115970560.8762")
|
square_mile.checkWith(square_foot, "75.9", "2115970560.8762")
|
||||||
MyUnitIDS.square_yard.checkWith(MyUnitIDS.square_foot, "75.9", "683.1")
|
square_yard.checkWith(square_foot, "75.9", "683.1")
|
||||||
MyUnitIDS.square_inch.checkWith(MyUnitIDS.square_foot, "75.9", "0.52708")
|
square_inch.checkWith(square_foot, "75.9", "0.52708")
|
||||||
MyUnitIDS.square_micrometer.checkWith(MyUnitIDS.square_millimeter, "75.9", "0.00008")
|
square_micrometer.checkWith(square_millimeter, "75.9", "0.00008")
|
||||||
MyUnitIDS.square_millimeter.checkWith(MyUnitIDS.square_centimeter, "75.9", "0.759")
|
square_millimeter.checkWith(square_centimeter, "75.9", "0.759")
|
||||||
MyUnitIDS.square_centimeter.checkWith(MyUnitIDS.acre, "75.9", "0.000002")
|
square_centimeter.checkWith(acre, "75.9", "0.000002")
|
||||||
MyUnitIDS.square_decimeter.checkWith(MyUnitIDS.square_meter, "75.9", "0.759")
|
square_decimeter.checkWith(square_meter, "75.9", "0.759")
|
||||||
MyUnitIDS.square_meter.checkWith(MyUnitIDS.acre, "75.9", "0.01876")
|
square_meter.checkWith(acre, "75.9", "0.01876")
|
||||||
MyUnitIDS.square_kilometer.checkWith(MyUnitIDS.hectare, "75.9", "7590")
|
square_kilometer.checkWith(hectare, "75.9", "7590")
|
||||||
MyUnitIDS.electron_cross_section.checkWith(MyUnitIDS.square_micrometer, "75.9", "0.000000000000005")
|
electron_cross_section.checkWith(square_micrometer, "75.9", "0.000000000000005")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testDataTransfer() {
|
fun testDataTransfer() = testWithUnits {
|
||||||
MyUnitIDS.bit_per_second.checkWith(MyUnitIDS.kilobit_per_second, "2048", "2.048")
|
bit_per_second.checkWith(kilobit_per_second, "2048", "2.048")
|
||||||
MyUnitIDS.kibibit_per_second.checkWith(MyUnitIDS.bit_per_second, "2048", "2097152")
|
kibibit_per_second.checkWith(bit_per_second, "2048", "2097152")
|
||||||
MyUnitIDS.kilobit_per_second.checkWith(MyUnitIDS.bit_per_second, "2048", "2048000")
|
kilobit_per_second.checkWith(bit_per_second, "2048", "2048000")
|
||||||
MyUnitIDS.megabit_per_second.checkWith(MyUnitIDS.kilobit_per_second, "2048", "2048000")
|
megabit_per_second.checkWith(kilobit_per_second, "2048", "2048000")
|
||||||
MyUnitIDS.mebibit_per_second.checkWith(MyUnitIDS.kilobit_per_second, "2048", "2147483.648")
|
mebibit_per_second.checkWith(kilobit_per_second, "2048", "2147483.648")
|
||||||
MyUnitIDS.gigabit_per_second.checkWith(MyUnitIDS.kilobit_per_second, "2048", "2048000000")
|
gigabit_per_second.checkWith(kilobit_per_second, "2048", "2048000000")
|
||||||
MyUnitIDS.terabit_per_second.checkWith(MyUnitIDS.gigabyte_per_second, "2048", "256000")
|
terabit_per_second.checkWith(gigabyte_per_second, "2048", "256000")
|
||||||
MyUnitIDS.petabit_per_second.checkWith(MyUnitIDS.gigabyte_per_second, "2048", "256000000")
|
petabit_per_second.checkWith(gigabyte_per_second, "2048", "256000000")
|
||||||
MyUnitIDS.exabit_per_second.checkWith(MyUnitIDS.petabit_per_second, "2048", "2048000")
|
exabit_per_second.checkWith(petabit_per_second, "2048", "2048000")
|
||||||
MyUnitIDS.byte_per_second.checkWith(MyUnitIDS.bit_per_second, "2048", "16384")
|
byte_per_second.checkWith(bit_per_second, "2048", "16384")
|
||||||
MyUnitIDS.kibibyte_per_second.checkWith(MyUnitIDS.bit_per_second, "2048", "16777216")
|
kibibyte_per_second.checkWith(bit_per_second, "2048", "16777216")
|
||||||
MyUnitIDS.kilobyte_per_second.checkWith(MyUnitIDS.kibibit_per_second, "2048", "16000")
|
kilobyte_per_second.checkWith(kibibit_per_second, "2048", "16000")
|
||||||
MyUnitIDS.megabyte_per_second.checkWith(MyUnitIDS.kilobyte_per_second, "2048", "2048000")
|
megabyte_per_second.checkWith(kilobyte_per_second, "2048", "2048000")
|
||||||
MyUnitIDS.mebibyte_per_second.checkWith(MyUnitIDS.bit_per_second, "2048", "17179869184")
|
mebibyte_per_second.checkWith(bit_per_second, "2048", "17179869184")
|
||||||
MyUnitIDS.gigabyte_per_second.checkWith(MyUnitIDS.kilobyte_per_second, "2048", "2048000000")
|
gigabyte_per_second.checkWith(kilobyte_per_second, "2048", "2048000000")
|
||||||
MyUnitIDS.terabyte_per_second.checkWith(MyUnitIDS.gigabyte_per_second, "2048", "2048000")
|
terabyte_per_second.checkWith(gigabyte_per_second, "2048", "2048000")
|
||||||
MyUnitIDS.petabyte_per_second.checkWith(MyUnitIDS.terabyte_per_second, "2048", "2048000")
|
petabyte_per_second.checkWith(terabyte_per_second, "2048", "2048000")
|
||||||
MyUnitIDS.exabyte_per_second.checkWith(MyUnitIDS.petabyte_per_second, "2048", "2048000")
|
exabyte_per_second.checkWith(petabyte_per_second, "2048", "2048000")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testEnergy() {
|
fun testEnergy() = testWithUnits {
|
||||||
MyUnitIDS.electron_volt.checkWith(MyUnitIDS.joule, "56000000000000000000", "8.97219")
|
electron_volt.checkWith(joule, "56000000000000000000", "8.97219")
|
||||||
MyUnitIDS.attojoule.checkWith(MyUnitIDS.calorie_th, "41840000000000", "0.00001")
|
attojoule.checkWith(calorie_th, "41840000000000", "0.00001")
|
||||||
MyUnitIDS.joule.checkWith(MyUnitIDS.kilocalorie_th, "4184", "1")
|
joule.checkWith(kilocalorie_th, "4184", "1")
|
||||||
MyUnitIDS.kilojoule.checkWith(MyUnitIDS.calorie_th, "4184000000", "1000000000000")
|
kilojoule.checkWith(calorie_th, "4184000000", "1000000000000")
|
||||||
MyUnitIDS.megajoule.checkWith(MyUnitIDS.calorie_th, "0.4184", "100000")
|
megajoule.checkWith(calorie_th, "0.4184", "100000")
|
||||||
MyUnitIDS.gigajoule.checkWith(MyUnitIDS.calorie_th, "0.4184", "100000000")
|
gigajoule.checkWith(calorie_th, "0.4184", "100000000")
|
||||||
MyUnitIDS.energy_ton.checkWith(MyUnitIDS.calorie_th, "0.4184", "418400000")
|
energy_ton.checkWith(calorie_th, "0.4184", "418400000")
|
||||||
MyUnitIDS.kiloton.checkWith(MyUnitIDS.calorie_th, "0.4184", "418400000000")
|
kiloton.checkWith(calorie_th, "0.4184", "418400000000")
|
||||||
MyUnitIDS.megaton.checkWith(MyUnitIDS.calorie_th, "0.4184", "418400000000000")
|
megaton.checkWith(calorie_th, "0.4184", "418400000000000")
|
||||||
MyUnitIDS.gigaton.checkWith(MyUnitIDS.calorie_th, "0.000000004184", "4184000000")
|
gigaton.checkWith(calorie_th, "0.000000004184", "4184000000")
|
||||||
MyUnitIDS.energy_horse_power_metric.checkWith(MyUnitIDS.joule, "10", "26477955")
|
energy_horse_power_metric.checkWith(joule, "10", "26477955")
|
||||||
MyUnitIDS.calorie_th.checkWith(MyUnitIDS.joule, "10", "41.84")
|
calorie_th.checkWith(joule, "10", "41.84")
|
||||||
MyUnitIDS.kilocalorie_th.checkWith(MyUnitIDS.joule, "10", "41840")
|
kilocalorie_th.checkWith(joule, "10", "41840")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testFileSize() {
|
fun testFileSize() = testWithUnits {
|
||||||
MyUnitIDS.bit.checkWith(MyUnitIDS.kilobit, "2048", "2.048")
|
bit.checkWith(kilobit, "2048", "2.048")
|
||||||
MyUnitIDS.kibibit.checkWith(MyUnitIDS.bit, "2048", "2097152")
|
kibibit.checkWith(bit, "2048", "2097152")
|
||||||
MyUnitIDS.kilobit.checkWith(MyUnitIDS.bit, "2048", "2048000")
|
kilobit.checkWith(bit, "2048", "2048000")
|
||||||
MyUnitIDS.megabit.checkWith(MyUnitIDS.kilobit, "2048", "2048000")
|
megabit.checkWith(kilobit, "2048", "2048000")
|
||||||
MyUnitIDS.mebibit.checkWith(MyUnitIDS.kilobit, "2048", "2147483.648")
|
mebibit.checkWith(kilobit, "2048", "2147483.648")
|
||||||
MyUnitIDS.gigabit.checkWith(MyUnitIDS.kilobit, "2048", "2048000000")
|
gigabit.checkWith(kilobit, "2048", "2048000000")
|
||||||
MyUnitIDS.terabit.checkWith(MyUnitIDS.gigabyte, "2048", "256000")
|
terabit.checkWith(gigabyte, "2048", "256000")
|
||||||
MyUnitIDS.petabit.checkWith(MyUnitIDS.gigabyte, "2048", "256000000")
|
petabit.checkWith(gigabyte, "2048", "256000000")
|
||||||
MyUnitIDS.exabit.checkWith(MyUnitIDS.petabit, "2048", "2048000")
|
exabit.checkWith(petabit, "2048", "2048000")
|
||||||
MyUnitIDS.byte.checkWith(MyUnitIDS.bit, "2048", "16384")
|
byte.checkWith(bit, "2048", "16384")
|
||||||
MyUnitIDS.kibibyte.checkWith(MyUnitIDS.bit, "2048", "16777216")
|
kibibyte.checkWith(bit, "2048", "16777216")
|
||||||
MyUnitIDS.kilobyte.checkWith(MyUnitIDS.kibibit, "2048", "16000")
|
kilobyte.checkWith(kibibit, "2048", "16000")
|
||||||
MyUnitIDS.megabyte.checkWith(MyUnitIDS.kilobyte, "2048", "2048000")
|
megabyte.checkWith(kilobyte, "2048", "2048000")
|
||||||
MyUnitIDS.mebibyte.checkWith(MyUnitIDS.bit, "2048", "17179869184")
|
mebibyte.checkWith(bit, "2048", "17179869184")
|
||||||
MyUnitIDS.gigabyte.checkWith(MyUnitIDS.kilobyte, "2048", "2048000000")
|
gigabyte.checkWith(kilobyte, "2048", "2048000000")
|
||||||
MyUnitIDS.terabyte.checkWith(MyUnitIDS.gigabyte, "2048", "2048000")
|
terabyte.checkWith(gigabyte, "2048", "2048000")
|
||||||
MyUnitIDS.petabyte.checkWith(MyUnitIDS.terabyte, "2048", "2048000")
|
petabyte.checkWith(terabyte, "2048", "2048000")
|
||||||
MyUnitIDS.exabyte.checkWith(MyUnitIDS.petabyte, "2048", "2048000")
|
exabyte.checkWith(petabyte, "2048", "2048000")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testLength() {
|
fun testLength() = testWithUnits {
|
||||||
MyUnitIDS.attometer.checkWith(MyUnitIDS.micrometer, "158000000000.7", "0.158")
|
attometer.checkWith(micrometer, "158000000000.7", "0.158")
|
||||||
MyUnitIDS.nanometer.checkWith(MyUnitIDS.inch, "158000000000.7", "6220.47244")
|
nanometer.checkWith(inch, "158000000000.7", "6220.47244")
|
||||||
MyUnitIDS.micrometer.checkWith(MyUnitIDS.inch, "158000000000.7", "6220472.44097")
|
micrometer.checkWith(inch, "158000000000.7", "6220472.44097")
|
||||||
MyUnitIDS.millimeter.checkWith(MyUnitIDS.inch, "158000.7", "6220.5")
|
millimeter.checkWith(inch, "158000.7", "6220.5")
|
||||||
MyUnitIDS.centimeter.checkWith(MyUnitIDS.inch, "158000.7", "62205")
|
centimeter.checkWith(inch, "158000.7", "62205")
|
||||||
MyUnitIDS.decimeter.checkWith(MyUnitIDS.foot, "158000.7", "51837.5")
|
decimeter.checkWith(foot, "158000.7", "51837.5")
|
||||||
MyUnitIDS.meter.checkWith(MyUnitIDS.yard, "158000.7", "172791.66667")
|
meter.checkWith(yard, "158000.7", "172791.66667")
|
||||||
MyUnitIDS.kilometer.checkWith(MyUnitIDS.mile, "100", "62.13712")
|
kilometer.checkWith(mile, "100", "62.13712")
|
||||||
MyUnitIDS.nautical_mile.checkWith(MyUnitIDS.kilometer, "100", "185.2")
|
nautical_mile.checkWith(kilometer, "100", "185.2")
|
||||||
MyUnitIDS.inch.checkWith(MyUnitIDS.foot, "100", "8.33333")
|
inch.checkWith(foot, "100", "8.33333")
|
||||||
MyUnitIDS.foot.checkWith(MyUnitIDS.inch, "100", "1200")
|
foot.checkWith(inch, "100", "1200")
|
||||||
MyUnitIDS.yard.checkWith(MyUnitIDS.foot, "100", "300")
|
yard.checkWith(foot, "100", "300")
|
||||||
MyUnitIDS.mile.checkWith(MyUnitIDS.foot, "100", "528000")
|
mile.checkWith(foot, "100", "528000")
|
||||||
MyUnitIDS.light_year.checkWith(MyUnitIDS.foot, "0.0000001", "3103914196.85037")
|
light_year.checkWith(foot, "0.0000001", "3103914196.85037")
|
||||||
MyUnitIDS.parsec.checkWith(MyUnitIDS.foot, "0.00000001", "1012361411.25044")
|
parsec.checkWith(foot, "0.00000001", "1012361411.25044")
|
||||||
MyUnitIDS.kiloparsec.checkWith(MyUnitIDS.foot, "0.00000000001", "1012361411.25044")
|
kiloparsec.checkWith(foot, "0.00000000001", "1012361411.25044")
|
||||||
MyUnitIDS.megaparsec.checkWith(MyUnitIDS.foot, "0.00000000000001", "1012361411.25044")
|
megaparsec.checkWith(foot, "0.00000000000001", "1012361411.25044")
|
||||||
MyUnitIDS.mercury_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "2439.7")
|
mercury_equatorial_radius.checkWith(kilometer, "1", "2439.7")
|
||||||
MyUnitIDS.venus_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "6051.8")
|
venus_equatorial_radius.checkWith(kilometer, "1", "6051.8")
|
||||||
MyUnitIDS.earth_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "6371")
|
earth_equatorial_radius.checkWith(kilometer, "1", "6371")
|
||||||
MyUnitIDS.mars_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "3389.5")
|
mars_equatorial_radius.checkWith(kilometer, "1", "3389.5")
|
||||||
MyUnitIDS.jupiter_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "69911")
|
jupiter_equatorial_radius.checkWith(kilometer, "1", "69911")
|
||||||
MyUnitIDS.saturn_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "58232")
|
saturn_equatorial_radius.checkWith(kilometer, "1", "58232")
|
||||||
MyUnitIDS.uranus_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "25362")
|
uranus_equatorial_radius.checkWith(kilometer, "1", "25362")
|
||||||
MyUnitIDS.neptune_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "24622")
|
neptune_equatorial_radius.checkWith(kilometer, "1", "24622")
|
||||||
MyUnitIDS.sun_equatorial_radius.checkWith(MyUnitIDS.kilometer, "1", "695508")
|
sun_equatorial_radius.checkWith(kilometer, "1", "695508")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMass() {
|
fun testMass() = testWithUnits {
|
||||||
MyUnitIDS.electron_mass_rest.checkWith(MyUnitIDS.milligram, "1500000000000000000", "0.000001")
|
electron_mass_rest.checkWith(milligram, "1500000000000000000", "0.000001")
|
||||||
MyUnitIDS.atomic_mass_unit.checkWith(MyUnitIDS.electron_mass_rest, "150", "273433.27951")
|
atomic_mass_unit.checkWith(electron_mass_rest, "150", "273433.27951")
|
||||||
MyUnitIDS.milligram.checkWith(MyUnitIDS.ounce, "1500", "0.05291")
|
milligram.checkWith(ounce, "1500", "0.05291")
|
||||||
MyUnitIDS.gram.checkWith(MyUnitIDS.ounce, "1500", "52.91094")
|
gram.checkWith(ounce, "1500", "52.91094")
|
||||||
MyUnitIDS.kilogram.checkWith(MyUnitIDS.carat, "1500", "7500000")
|
kilogram.checkWith(carat, "1500", "7500000")
|
||||||
MyUnitIDS.metric_ton.checkWith(MyUnitIDS.carat, "1500", "7500000000")
|
metric_ton.checkWith(carat, "1500", "7500000000")
|
||||||
MyUnitIDS.imperial_ton.checkWith(MyUnitIDS.kilogram, "1500", "1524070.3632")
|
imperial_ton.checkWith(kilogram, "1500", "1524070.3632")
|
||||||
MyUnitIDS.ounce.checkWith(MyUnitIDS.pound, "1500", "93.75")
|
ounce.checkWith(pound, "1500", "93.75")
|
||||||
MyUnitIDS.carat.checkWith(MyUnitIDS.pound, "1500", "0.66139")
|
carat.checkWith(pound, "1500", "0.66139")
|
||||||
MyUnitIDS.pound.checkWith(MyUnitIDS.kilogram, "1500", "680.38856")
|
pound.checkWith(kilogram, "1500", "680.38856")
|
||||||
MyUnitIDS.mercury_mass.checkWith(MyUnitIDS.kilogram, "1", "330104000000000000000000")
|
mercury_mass.checkWith(kilogram, "1", "330104000000000000000000")
|
||||||
MyUnitIDS.venus_mass.checkWith(MyUnitIDS.kilogram, "1", "4867320000000000000000000")
|
venus_mass.checkWith(kilogram, "1", "4867320000000000000000000")
|
||||||
MyUnitIDS.earth_mass.checkWith(MyUnitIDS.kilogram, "1", "5972190000000000000000000")
|
earth_mass.checkWith(kilogram, "1", "5972190000000000000000000")
|
||||||
MyUnitIDS.mars_mass.checkWith(MyUnitIDS.kilogram, "1", "641693000000000000000000")
|
mars_mass.checkWith(kilogram, "1", "641693000000000000000000")
|
||||||
MyUnitIDS.jupiter_mass.checkWith(MyUnitIDS.kilogram, "1", "1898130000000000000000000000")
|
jupiter_mass.checkWith(kilogram, "1", "1898130000000000000000000000")
|
||||||
MyUnitIDS.saturn_mass.checkWith(MyUnitIDS.kilogram, "1", "568319000000000000000000000")
|
saturn_mass.checkWith(kilogram, "1", "568319000000000000000000000")
|
||||||
MyUnitIDS.uranus_mass.checkWith(MyUnitIDS.kilogram, "1", "86810300000000000000000000")
|
uranus_mass.checkWith(kilogram, "1", "86810300000000000000000000")
|
||||||
MyUnitIDS.neptune_mass.checkWith(MyUnitIDS.kilogram, "1", "102410000000000000000000000")
|
neptune_mass.checkWith(kilogram, "1", "102410000000000000000000000")
|
||||||
MyUnitIDS.sun_mass.checkWith(MyUnitIDS.kilogram, "1", "1989100000000000000000000000000")
|
sun_mass.checkWith(kilogram, "1", "1989100000000000000000000000000")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testPower() {
|
fun testPower() = testWithUnits {
|
||||||
MyUnitIDS.attowatt.checkWith(MyUnitIDS.watt, "3950000000000000", "0.00395")
|
attowatt.checkWith(watt, "3950000000000000", "0.00395")
|
||||||
MyUnitIDS.watt.checkWith(MyUnitIDS.kilowatt, "395", "0.395")
|
watt.checkWith(kilowatt, "395", "0.395")
|
||||||
MyUnitIDS.kilowatt.checkWith(MyUnitIDS.horse_power_mechanical, "395", "529.70373")
|
kilowatt.checkWith(horse_power_mechanical, "395", "529.70373")
|
||||||
MyUnitIDS.megawatt.checkWith(MyUnitIDS.horse_power_mechanical, "395", "529703.72539")
|
megawatt.checkWith(horse_power_mechanical, "395", "529703.72539")
|
||||||
MyUnitIDS.horse_power_mechanical.checkWith(MyUnitIDS.kilowatt, "395", "294.55145")
|
horse_power_mechanical.checkWith(kilowatt, "395", "294.55145")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testPressure() {
|
fun testPressure() = testWithUnits {
|
||||||
MyUnitIDS.attopascal.checkWith(MyUnitIDS.femtopascal, "456", "0.456")
|
attopascal.checkWith(femtopascal, "456", "0.456")
|
||||||
MyUnitIDS.femtopascal.checkWith(MyUnitIDS.picopascal, "456", "0.456")
|
femtopascal.checkWith(picopascal, "456", "0.456")
|
||||||
MyUnitIDS.picopascal.checkWith(MyUnitIDS.nanopascal, "456", "0.456")
|
picopascal.checkWith(nanopascal, "456", "0.456")
|
||||||
MyUnitIDS.nanopascal.checkWith(MyUnitIDS.micropascal, "456", "0.456")
|
nanopascal.checkWith(micropascal, "456", "0.456")
|
||||||
MyUnitIDS.micropascal.checkWith(MyUnitIDS.millipascal, "456", "0.456")
|
micropascal.checkWith(millipascal, "456", "0.456")
|
||||||
MyUnitIDS.millipascal.checkWith(MyUnitIDS.centipascal, "456", "45.6")
|
millipascal.checkWith(centipascal, "456", "45.6")
|
||||||
MyUnitIDS.centipascal.checkWith(MyUnitIDS.decipascal, "456", "45.6")
|
centipascal.checkWith(decipascal, "456", "45.6")
|
||||||
MyUnitIDS.decipascal.checkWith(MyUnitIDS.dekapascal, "456", "4.56")
|
decipascal.checkWith(dekapascal, "456", "4.56")
|
||||||
MyUnitIDS.pascal.checkWith(MyUnitIDS.bar, "456", "0.00456")
|
pascal.checkWith(bar, "456", "0.00456")
|
||||||
MyUnitIDS.dekapascal.checkWith(MyUnitIDS.bar, "456", "0.0456")
|
dekapascal.checkWith(bar, "456", "0.0456")
|
||||||
MyUnitIDS.hectopascal.checkWith(MyUnitIDS.psi, "456", "6.61372")
|
hectopascal.checkWith(psi, "456", "6.61372")
|
||||||
MyUnitIDS.millibar.checkWith(MyUnitIDS.psi, "456", "6.61372")
|
millibar.checkWith(psi, "456", "6.61372")
|
||||||
MyUnitIDS.bar.checkWith(MyUnitIDS.ksi, "456", "6.61372")
|
bar.checkWith(ksi, "456", "6.61372")
|
||||||
MyUnitIDS.kilopascal.checkWith(MyUnitIDS.psi, "456", "66.13721")
|
kilopascal.checkWith(psi, "456", "66.13721")
|
||||||
MyUnitIDS.megapascal.checkWith(MyUnitIDS.ksi, "456", "66.13721")
|
megapascal.checkWith(ksi, "456", "66.13721")
|
||||||
MyUnitIDS.gigapascal.checkWith(MyUnitIDS.torr, "456", "3420281273.13024")
|
gigapascal.checkWith(torr, "456", "3420281273.13024")
|
||||||
MyUnitIDS.terapascal.checkWith(MyUnitIDS.gigapascal, "456", "456000")
|
terapascal.checkWith(gigapascal, "456", "456000")
|
||||||
MyUnitIDS.petapascal.checkWith(MyUnitIDS.gigapascal, "456", "456000000")
|
petapascal.checkWith(gigapascal, "456", "456000000")
|
||||||
MyUnitIDS.exapascal.checkWith(MyUnitIDS.gigapascal, "456", "456000000000")
|
exapascal.checkWith(gigapascal, "456", "456000000000")
|
||||||
MyUnitIDS.psi.checkWith(MyUnitIDS.gigapascal, "456", "0.00314")
|
psi.checkWith(gigapascal, "456", "0.00314")
|
||||||
MyUnitIDS.ksi.checkWith(MyUnitIDS.gigapascal, "456", "3.14401")
|
ksi.checkWith(gigapascal, "456", "3.14401")
|
||||||
MyUnitIDS.standard_atmosphere.checkWith(MyUnitIDS.torr, "456", "346560")
|
standard_atmosphere.checkWith(torr, "456", "346560")
|
||||||
MyUnitIDS.torr.checkWith(MyUnitIDS.hectopascal, "456", "607.95")
|
torr.checkWith(hectopascal, "456", "607.95")
|
||||||
MyUnitIDS.micron_of_mercury.checkWith(MyUnitIDS.hectopascal, "456", "0.60795")
|
micron_of_mercury.checkWith(hectopascal, "456", "0.60795")
|
||||||
MyUnitIDS.millimeter_of_mercury.checkWith(MyUnitIDS.hectopascal, "456", "607.95")
|
millimeter_of_mercury.checkWith(hectopascal, "456", "607.95")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSpeed() {
|
fun testSpeed() = testWithUnits {
|
||||||
MyUnitIDS.millimeter_per_hour.checkWith(MyUnitIDS.kilometer_per_hour, "396", "0.0004")
|
millimeter_per_hour.checkWith(kilometer_per_hour, "396", "0.0004")
|
||||||
MyUnitIDS.millimeter_per_minute.checkWith(MyUnitIDS.kilometer_per_hour, "396", "0.02376")
|
millimeter_per_minute.checkWith(kilometer_per_hour, "396", "0.02376")
|
||||||
MyUnitIDS.millimeter_per_second.checkWith(MyUnitIDS.kilometer_per_hour, "396", "1.4256")
|
millimeter_per_second.checkWith(kilometer_per_hour, "396", "1.4256")
|
||||||
MyUnitIDS.centimeter_per_hour.checkWith(MyUnitIDS.kilometer_per_hour, "396", "0.00396")
|
centimeter_per_hour.checkWith(kilometer_per_hour, "396", "0.00396")
|
||||||
MyUnitIDS.centimeter_per_minute.checkWith(MyUnitIDS.kilometer_per_hour, "396", "0.2376")
|
centimeter_per_minute.checkWith(kilometer_per_hour, "396", "0.2376")
|
||||||
MyUnitIDS.centimeter_per_second.checkWith(MyUnitIDS.kilometer_per_hour, "396", "14.256")
|
centimeter_per_second.checkWith(kilometer_per_hour, "396", "14.256")
|
||||||
MyUnitIDS.meter_per_hour.checkWith(MyUnitIDS.kilometer_per_hour, "396", "0.396")
|
meter_per_hour.checkWith(kilometer_per_hour, "396", "0.396")
|
||||||
MyUnitIDS.meter_per_minute.checkWith(MyUnitIDS.kilometer_per_hour, "396", "23.76")
|
meter_per_minute.checkWith(kilometer_per_hour, "396", "23.76")
|
||||||
MyUnitIDS.meter_per_second.checkWith(MyUnitIDS.kilometer_per_hour, "396", "1425.6")
|
meter_per_second.checkWith(kilometer_per_hour, "396", "1425.6")
|
||||||
MyUnitIDS.kilometer_per_hour.checkWith(MyUnitIDS.mile_per_hour, "396", "246.06299")
|
kilometer_per_hour.checkWith(mile_per_hour, "396", "246.06299")
|
||||||
MyUnitIDS.kilometer_per_minute.checkWith(MyUnitIDS.mile_per_hour, "396", "14763.77953")
|
kilometer_per_minute.checkWith(mile_per_hour, "396", "14763.77953")
|
||||||
MyUnitIDS.kilometer_per_second.checkWith(MyUnitIDS.mile_per_hour, "396", "885826.77165")
|
kilometer_per_second.checkWith(mile_per_hour, "396", "885826.77165")
|
||||||
MyUnitIDS.foot_per_hour.checkWith(MyUnitIDS.mile_per_hour, "396", "0.075")
|
foot_per_hour.checkWith(mile_per_hour, "396", "0.075")
|
||||||
MyUnitIDS.foot_per_minute.checkWith(MyUnitIDS.mile_per_hour, "396", "4.5")
|
foot_per_minute.checkWith(mile_per_hour, "396", "4.5")
|
||||||
MyUnitIDS.foot_per_second.checkWith(MyUnitIDS.mile_per_hour, "396", "270")
|
foot_per_second.checkWith(mile_per_hour, "396", "270")
|
||||||
MyUnitIDS.yard_per_hour.checkWith(MyUnitIDS.mile_per_hour, "396", "0.225")
|
yard_per_hour.checkWith(mile_per_hour, "396", "0.225")
|
||||||
MyUnitIDS.yard_per_minute.checkWith(MyUnitIDS.mile_per_hour, "396", "13.5")
|
yard_per_minute.checkWith(mile_per_hour, "396", "13.5")
|
||||||
MyUnitIDS.yard_per_second.checkWith(MyUnitIDS.mile_per_hour, "396", "810")
|
yard_per_second.checkWith(mile_per_hour, "396", "810")
|
||||||
MyUnitIDS.mile_per_hour.checkWith(MyUnitIDS.foot_per_hour, "396", "2090880")
|
mile_per_hour.checkWith(foot_per_hour, "396", "2090880")
|
||||||
MyUnitIDS.mile_per_minute.checkWith(MyUnitIDS.foot_per_hour, "396", "125452800")
|
mile_per_minute.checkWith(foot_per_hour, "396", "125452800")
|
||||||
MyUnitIDS.mile_per_second.checkWith(MyUnitIDS.foot_per_hour, "396", "7527168000")
|
mile_per_second.checkWith(foot_per_hour, "396", "7527168000")
|
||||||
MyUnitIDS.knot.checkWith(MyUnitIDS.meter_per_hour, "396", "733392")
|
knot.checkWith(meter_per_hour, "396", "733392")
|
||||||
MyUnitIDS.velocity_of_light_in_vacuum.checkWith(MyUnitIDS.meter_per_second, "1", "299792458")
|
velocity_of_light_in_vacuum.checkWith(meter_per_second, "1", "299792458")
|
||||||
MyUnitIDS.cosmic_velocity_first.checkWith(MyUnitIDS.meter_per_second, "1", "7900")
|
cosmic_velocity_first.checkWith(meter_per_second, "1", "7900")
|
||||||
MyUnitIDS.cosmic_velocity_second.checkWith(MyUnitIDS.meter_per_second, "1", "11200")
|
cosmic_velocity_second.checkWith(meter_per_second, "1", "11200")
|
||||||
MyUnitIDS.cosmic_velocity_third.checkWith(MyUnitIDS.meter_per_second, "1", "16670")
|
cosmic_velocity_third.checkWith(meter_per_second, "1", "16670")
|
||||||
MyUnitIDS.earths_orbital_speed.checkWith(MyUnitIDS.meter_per_second, "1", "29765")
|
earths_orbital_speed.checkWith(meter_per_second, "1", "29765")
|
||||||
MyUnitIDS.mach.checkWith(MyUnitIDS.meter_per_second, "1", "343.6")
|
mach.checkWith(meter_per_second, "1", "343.6")
|
||||||
MyUnitIDS.mach_si_standard.checkWith(MyUnitIDS.meter_per_second, "1", "295.0464")
|
mach_si_standard.checkWith(meter_per_second, "1", "295.0464")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testTemperature() {
|
fun testTemperature() = testWithUnits {
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.celsius, "0", "0")
|
celsius.checkWith(celsius, "0", "0")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.fahrenheit, "0", "32")
|
celsius.checkWith(fahrenheit, "0", "32")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.kelvin, "0", "273.15")
|
celsius.checkWith(kelvin, "0", "273.15")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.celsius, "36.6", "36.6")
|
celsius.checkWith(celsius, "36.6", "36.6")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.fahrenheit, "36.6", "97.88")
|
celsius.checkWith(fahrenheit, "36.6", "97.88")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.kelvin, "36.6", "309.75")
|
celsius.checkWith(kelvin, "36.6", "309.75")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.celsius, "-36.6", "-36.6")
|
celsius.checkWith(celsius, "-36.6", "-36.6")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.fahrenheit, "-36.6", "-33.88")
|
celsius.checkWith(fahrenheit, "-36.6", "-33.88")
|
||||||
MyUnitIDS.celsius.checkWith(MyUnitIDS.kelvin, "-36.6", "236.55")
|
celsius.checkWith(kelvin, "-36.6", "236.55")
|
||||||
|
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.celsius, "0", "-17.77778")
|
fahrenheit.checkWith(celsius, "0", "-17.77778")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.fahrenheit, "0", "0")
|
fahrenheit.checkWith(fahrenheit, "0", "0")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.kelvin, "0", "255.37222")
|
fahrenheit.checkWith(kelvin, "0", "255.37222")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.celsius, "36.6", "2.55556")
|
fahrenheit.checkWith(celsius, "36.6", "2.55556")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.fahrenheit, "36.6", "36.6")
|
fahrenheit.checkWith(fahrenheit, "36.6", "36.6")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.kelvin, "36.6", "275.70556")
|
fahrenheit.checkWith(kelvin, "36.6", "275.70556")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.celsius, "-36.6", "-38.11111")
|
fahrenheit.checkWith(celsius, "-36.6", "-38.11111")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.fahrenheit, "-36.6", "-36.6")
|
fahrenheit.checkWith(fahrenheit, "-36.6", "-36.6")
|
||||||
MyUnitIDS.fahrenheit.checkWith(MyUnitIDS.kelvin, "-36.6", "235.03889")
|
fahrenheit.checkWith(kelvin, "-36.6", "235.03889")
|
||||||
|
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.celsius, "0", "-273.15")
|
kelvin.checkWith(celsius, "0", "-273.15")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.fahrenheit, "0", "-459.67")
|
kelvin.checkWith(fahrenheit, "0", "-459.67")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.kelvin, "0", "0")
|
kelvin.checkWith(kelvin, "0", "0")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.celsius, "36.6", "-236.55")
|
kelvin.checkWith(celsius, "36.6", "-236.55")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.fahrenheit, "36.6", "-393.79")
|
kelvin.checkWith(fahrenheit, "36.6", "-393.79")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.kelvin, "36.6", "36.6")
|
kelvin.checkWith(kelvin, "36.6", "36.6")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.celsius, "-36.6", "-309.75")
|
kelvin.checkWith(celsius, "-36.6", "-309.75")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.fahrenheit, "-36.6", "-525.55")
|
kelvin.checkWith(fahrenheit, "-36.6", "-525.55")
|
||||||
MyUnitIDS.kelvin.checkWith(MyUnitIDS.kelvin, "-36.6", "-36.6")
|
kelvin.checkWith(kelvin, "-36.6", "-36.6")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testTime() {
|
fun testTime() = testWithUnits {
|
||||||
MyUnitIDS.attosecond.checkWith(MyUnitIDS.millisecond, "366000000000", "0.00037")
|
attosecond.checkWith(millisecond, "366000000000", "0.00037")
|
||||||
MyUnitIDS.nanosecond.checkWith(MyUnitIDS.millisecond, "366", "0.00037")
|
nanosecond.checkWith(millisecond, "366", "0.00037")
|
||||||
MyUnitIDS.microsecond.checkWith(MyUnitIDS.millisecond, "366", "0.366")
|
microsecond.checkWith(millisecond, "366", "0.366")
|
||||||
MyUnitIDS.millisecond.checkWith(MyUnitIDS.second, "366", "0.366")
|
millisecond.checkWith(second, "366", "0.366")
|
||||||
MyUnitIDS.jiffy.checkWith(MyUnitIDS.second, "366", "3.66")
|
jiffy.checkWith(second, "366", "3.66")
|
||||||
MyUnitIDS.second.checkWith(MyUnitIDS.millisecond, "366", "366000")
|
second.checkWith(millisecond, "366", "366000")
|
||||||
MyUnitIDS.minute.checkWith(MyUnitIDS.millisecond, "366", "21960000")
|
minute.checkWith(millisecond, "366", "21960000")
|
||||||
MyUnitIDS.hour.checkWith(MyUnitIDS.millisecond, "366", "1317600000")
|
hour.checkWith(millisecond, "366", "1317600000")
|
||||||
MyUnitIDS.day.checkWith(MyUnitIDS.hour, "366", "8784")
|
day.checkWith(hour, "366", "8784")
|
||||||
MyUnitIDS.week.checkWith(MyUnitIDS.hour, "366", "61488")
|
week.checkWith(hour, "366", "61488")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testVolume() {
|
fun testVolume() = testWithUnits {
|
||||||
MyUnitIDS.attoliter.checkWith(MyUnitIDS.millimeter, "1507000000000", "0.00151")
|
attoliter.checkWith(millimeter, "1507000000000", "0.00151")
|
||||||
MyUnitIDS.milliliter.checkWith(MyUnitIDS.liter, "1507", "1.507")
|
milliliter.checkWith(liter, "1507", "1.507")
|
||||||
MyUnitIDS.liter.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "398.10728")
|
liter.checkWith(us_liquid_gallon, "1507", "398.10728")
|
||||||
MyUnitIDS.us_liquid_gallon.checkWith(MyUnitIDS.us_fluid_ounce, "1507", "192896")
|
us_liquid_gallon.checkWith(us_fluid_ounce, "1507", "192896")
|
||||||
MyUnitIDS.us_liquid_quart.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "376.75")
|
us_liquid_quart.checkWith(us_liquid_gallon, "1507", "376.75")
|
||||||
MyUnitIDS.us_liquid_pint.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "188.375")
|
us_liquid_pint.checkWith(us_liquid_gallon, "1507", "188.375")
|
||||||
MyUnitIDS.us_legal_cup.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "94.1875")
|
us_legal_cup.checkWith(us_liquid_gallon, "1507", "94.1875")
|
||||||
MyUnitIDS.us_fluid_ounce.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "11.77344")
|
us_fluid_ounce.checkWith(us_liquid_gallon, "1507", "11.77344")
|
||||||
MyUnitIDS.us_tablespoon.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "5.88672")
|
us_tablespoon.checkWith(us_liquid_gallon, "1507", "5.88672")
|
||||||
MyUnitIDS.us_teaspoon.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "1.96224")
|
us_teaspoon.checkWith(us_liquid_gallon, "1507", "1.96224")
|
||||||
MyUnitIDS.imperial_gallon.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "1809.83154")
|
imperial_gallon.checkWith(us_liquid_gallon, "1507", "1809.83154")
|
||||||
MyUnitIDS.imperial_quart.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "452.45788")
|
imperial_quart.checkWith(us_liquid_gallon, "1507", "452.45788")
|
||||||
MyUnitIDS.imperial_pint.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "226.22894")
|
imperial_pint.checkWith(us_liquid_gallon, "1507", "226.22894")
|
||||||
MyUnitIDS.imperial_cup.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "113.11447")
|
imperial_cup.checkWith(us_liquid_gallon, "1507", "113.11447")
|
||||||
MyUnitIDS.imperial_fluid_ounce.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "11.31145")
|
imperial_fluid_ounce.checkWith(us_liquid_gallon, "1507", "11.31145")
|
||||||
MyUnitIDS.imperial_tablespoon.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "7.06965")
|
imperial_tablespoon.checkWith(us_liquid_gallon, "1507", "7.06965")
|
||||||
MyUnitIDS.imperial_teaspoon.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "2.35655")
|
imperial_teaspoon.checkWith(us_liquid_gallon, "1507", "2.35655")
|
||||||
MyUnitIDS.cubic_millimeter.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "0.0004")
|
cubic_millimeter.checkWith(us_liquid_gallon, "1507", "0.0004")
|
||||||
MyUnitIDS.cubic_centimeter.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "0.39811")
|
cubic_centimeter.checkWith(us_liquid_gallon, "1507", "0.39811")
|
||||||
MyUnitIDS.cubic_meter.checkWith(MyUnitIDS.us_liquid_gallon, "1507", "398107.2829")
|
cubic_meter.checkWith(us_liquid_gallon, "1507", "398107.2829")
|
||||||
MyUnitIDS.cubic_kilometer.checkWith(MyUnitIDS.us_liquid_gallon, "0.0000001507", "39810.72829")
|
cubic_kilometer.checkWith(us_liquid_gallon, "0.0000001507", "39810.72829")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testFlux() {
|
fun testFlux() = testWithUnits {
|
||||||
MyUnitIDS.maxwell.checkWith(MyUnitIDS.milliweber, "68.2", "0.00068")
|
maxwell.checkWith(milliweber, "68.2", "0.00068")
|
||||||
MyUnitIDS.weber.checkWith(MyUnitIDS.milliweber, "68.2", "68200")
|
weber.checkWith(milliweber, "68.2", "68200")
|
||||||
MyUnitIDS.milliweber.checkWith(MyUnitIDS.weber, "68.2", "0.0682")
|
milliweber.checkWith(weber, "68.2", "0.0682")
|
||||||
MyUnitIDS.microweber.checkWith(MyUnitIDS.milliweber, "68.2", "0.0682")
|
microweber.checkWith(milliweber, "68.2", "0.0682")
|
||||||
MyUnitIDS.kiloweber.checkWith(MyUnitIDS.weber, "68.2", "68200")
|
kiloweber.checkWith(weber, "68.2", "68200")
|
||||||
MyUnitIDS.megaweber.checkWith(MyUnitIDS.weber, "68.2", "68200000")
|
megaweber.checkWith(weber, "68.2", "68200000")
|
||||||
MyUnitIDS.gigaweber.checkWith(MyUnitIDS.weber, "68.2", "68200000000")
|
gigaweber.checkWith(weber, "68.2", "68200000000")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testNumberBase() {
|
fun testNumberBase() = testWithUnits {
|
||||||
MyUnitIDS.binary.checkWith(MyUnitIDS.octal, "1000001001", "1011")
|
binary.checkWith(octal, "1000001001", "1011")
|
||||||
MyUnitIDS.ternary.checkWith(MyUnitIDS.decimal, "10112020111", "69430")
|
ternary.checkWith(decimal, "10112020111", "69430")
|
||||||
MyUnitIDS.quaternary.checkWith(MyUnitIDS.quinary, "20321", "4234")
|
quaternary.checkWith(quinary, "20321", "4234")
|
||||||
MyUnitIDS.quinary.checkWith(MyUnitIDS.nonary, "4234", "702")
|
quinary.checkWith(nonary, "4234", "702")
|
||||||
MyUnitIDS.senary.checkWith(MyUnitIDS.nonary, "4234", "1274")
|
senary.checkWith(nonary, "4234", "1274")
|
||||||
MyUnitIDS.septenary.checkWith(MyUnitIDS.nonary, "4234", "2041")
|
septenary.checkWith(nonary, "4234", "2041")
|
||||||
MyUnitIDS.octal.checkWith(MyUnitIDS.undecimal, "42343277", "5107945")
|
octal.checkWith(undecimal, "42343277", "5107945")
|
||||||
MyUnitIDS.nonary.checkWith(MyUnitIDS.duodecimal, "42343287", "69b9a81")
|
nonary.checkWith(duodecimal, "42343287", "69b9a81")
|
||||||
MyUnitIDS.decimal.checkWith(MyUnitIDS.duodecimal, "42343287", "12220273")
|
decimal.checkWith(duodecimal, "42343287", "12220273")
|
||||||
MyUnitIDS.undecimal.checkWith(MyUnitIDS.hexadecimal, "4234a287", "4e3f0c2")
|
undecimal.checkWith(hexadecimal, "4234a287", "4e3f0c2")
|
||||||
MyUnitIDS.duodecimal.checkWith(MyUnitIDS.hexadecimal, "4234a287", "8f30d07")
|
duodecimal.checkWith(hexadecimal, "4234a287", "8f30d07")
|
||||||
MyUnitIDS.tridecimal.checkWith(MyUnitIDS.hexadecimal, "4234a287", "f9c3ff4")
|
tridecimal.checkWith(hexadecimal, "4234a287", "f9c3ff4")
|
||||||
MyUnitIDS.tetradecimal.checkWith(MyUnitIDS.hexadecimal, "bb", "a5")
|
tetradecimal.checkWith(hexadecimal, "bb", "a5")
|
||||||
MyUnitIDS.pentadecimal.checkWith(MyUnitIDS.hexadecimal, "BABE", "9a82")
|
pentadecimal.checkWith(hexadecimal, "BABE", "9a82")
|
||||||
MyUnitIDS.hexadecimal.checkWith(MyUnitIDS.quinary, "FADE", "4023342")
|
hexadecimal.checkWith(quinary, "FADE", "4023342")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testElectrostaticCapacitance() = testWithUnits {
|
||||||
|
attofarad.checkWith(nanofarad, "364354322342", "364.35432")
|
||||||
|
statfarad.checkWith(microfarad, "123312", "0.1372")
|
||||||
|
farad.checkWith(kilofarad, "123312", "123.312")
|
||||||
|
exafarad.checkWith(petafarad, "123312", "123312000")
|
||||||
|
picofarad.checkWith(nanofarad, "11233", "11.233")
|
||||||
|
nanofarad.checkWith(millifarad, "11233", "0.01123")
|
||||||
|
microfarad.checkWith(nanofarad, "1123433", "1123433000")
|
||||||
|
millifarad.checkWith(nanofarad, "112", "112000000")
|
||||||
|
kilofarad.checkWith(microfarad, "11132", "11132000000000")
|
||||||
|
megafarad.checkWith(kilofarad, "11132", "11132000")
|
||||||
|
gigafarad.checkWith(petafarad, "11132", "0.01113")
|
||||||
|
petafarad.checkWith(kilofarad, "11132", "11132000000000000")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testPrefix() = testWithUnits {
|
||||||
|
prefix_quetta.checkWith(prefix_base, "1", "1000000000000000000000000000000")
|
||||||
|
prefix_ronna.checkWith(prefix_base, "1", "1000000000000000000000000000")
|
||||||
|
prefix_yotta.checkWith(prefix_base, "1", "1000000000000000000000000")
|
||||||
|
prefix_zetta.checkWith(prefix_base, "1", "1000000000000000000000")
|
||||||
|
prefix_exa.checkWith(prefix_base, "1", "1000000000000000000")
|
||||||
|
prefix_peta.checkWith(prefix_base, "1", "1000000000000000")
|
||||||
|
prefix_tera.checkWith(prefix_base, "1", "1000000000000")
|
||||||
|
prefix_giga.checkWith(prefix_base, "1", "1000000000")
|
||||||
|
prefix_mega.checkWith(prefix_base, "1", "1000000")
|
||||||
|
prefix_kilo.checkWith(prefix_base, "1", "1000")
|
||||||
|
prefix_hecto.checkWith(prefix_base, "1", "100")
|
||||||
|
prefix_deca.checkWith(prefix_base, "1", "10")
|
||||||
|
prefix_base.checkWith(prefix_base, "77777", "77777")
|
||||||
|
prefix_deci.checkWith(prefix_base, "1", "0.1")
|
||||||
|
prefix_centi.checkWith(prefix_base, "1", "0.01")
|
||||||
|
prefix_milli.checkWith(prefix_base, "1", "0.001")
|
||||||
|
prefix_micro.checkWith(prefix_base, "1", "0.000001")
|
||||||
|
prefix_nano.checkWith(prefix_base, "1", "0.000000001")
|
||||||
|
prefix_pico.checkWith(prefix_base, "1", "0.000000000001")
|
||||||
|
prefix_femto.checkWith(prefix_base, "1", "0.000000000000001")
|
||||||
|
prefix_atto.checkWith(prefix_base, "1", "0.000000000000000001")
|
||||||
|
prefix_zepto.checkWith(prefix_base, "1", "0.000000000000000000001")
|
||||||
|
prefix_yocto.checkWith(prefix_base, "1", "0.000000000000000000000001")
|
||||||
|
prefix_ronto.checkWith(prefix_base, "1", "0.000000000000000000000000001")
|
||||||
|
prefix_quecto.checkWith(prefix_base, "1", "0.000000000000000000000000000001")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testForce() = testWithUnits {
|
||||||
|
newton.checkWith(pond, "6553", "668220.03436")
|
||||||
|
kilonewton.checkWith(kilopound_force, "6553", "1473.173")
|
||||||
|
gram_force.checkWith(kilonewton, "6553", "0.06426")
|
||||||
|
kilogram_force.checkWith(ton_force, "6553", "6.553")
|
||||||
|
ton_force.checkWith(millinewton, "6553", "64262977450")
|
||||||
|
millinewton.checkWith(kilonewton, "6553", "0.00655")
|
||||||
|
attonewton.checkWith(dyne, "6553123123", "0.00066")
|
||||||
|
dyne.checkWith(joule_per_meter, "6553", "0.06553")
|
||||||
|
joule_per_meter.checkWith(pond, "6553", "668220.03436")
|
||||||
|
joule_per_centimeter.checkWith(kilopond, "6553", "6.6822")
|
||||||
|
kilopound_force.checkWith(kilopond, "6553", "2972390.80061")
|
||||||
|
pound_force.checkWith(ounce_force, "6553", "104848")
|
||||||
|
ounce_force.checkWith(pound_force, "6553", "409.5625")
|
||||||
|
pond.checkWith(kilonewton, "6553", "0.06426")
|
||||||
|
kilopond.checkWith(kilonewton, "6553", "64.26298")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testTorque() = testWithUnits {
|
||||||
|
newton_meter.checkWith(dyne_meter, "2134", "213400000")
|
||||||
|
newton_centimeter.checkWith(kilogram_force_millimeter, "2345", "2391.23452")
|
||||||
|
newton_millimeter.checkWith(pound_force_inch, "2345", "20.755")
|
||||||
|
kilonewton_meter.checkWith(kilogram_force_meter, "2134", "217607.43985")
|
||||||
|
dyne_meter.checkWith(newton_centimeter, "2134", "2.134")
|
||||||
|
dyne_centimeter.checkWith(gram_force_centimeter, "2134", "2.17607")
|
||||||
|
dyne_millimeter.checkWith(gram_force_millimeter, "2134", "2.17607")
|
||||||
|
kilogram_force_meter.checkWith(dyne_millimeter, "2134", "2092739110000")
|
||||||
|
kilogram_force_centimeter.checkWith(gram_force_meter, "2134", "21340")
|
||||||
|
kilogram_force_millimeter.checkWith(ounce_force_inch, "2134", "2963.56822")
|
||||||
|
gram_force_meter.checkWith(newton_millimeter, "2134", "20927.3911")
|
||||||
|
gram_force_centimeter.checkWith(kilogram_force_centimeter, "2134", "2.134")
|
||||||
|
gram_force_millimeter.checkWith(kilonewton_meter, "2134", "0.00002")
|
||||||
|
ounce_force_foot.checkWith(kilogram_force_millimeter, "2134", "18439.75503")
|
||||||
|
ounce_force_inch.checkWith(dyne_meter, "2134", "1506935.1968")
|
||||||
|
pound_force_foot.checkWith(newton_millimeter, "2134", "2893315.612")
|
||||||
|
pound_force_inch.checkWith(ounce_force_foot, "2134", "2845.33337")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun String.checkWith(checkingId: String, value: String, expected: String) {
|
private fun String.checkWith(checkingId: String, value: String, expected: String) {
|
||||||
@ -399,4 +484,6 @@ class AllUnitsTest {
|
|||||||
// GROUP : testedCount / totalCount
|
// GROUP : testedCount / totalCount
|
||||||
println("${unitGroup.name} : ${history[unitGroup]?.size} / ${allUnitsRepository.getCollectionByGroup(unitGroup).size}")
|
println("${unitGroup.name} : ${history[unitGroup]?.size} / ${allUnitsRepository.getCollectionByGroup(unitGroup).size}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun testWithUnits(block: MyUnitIDS.() -> Unit): Unit = with(MyUnitIDS, block = block)
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ import javax.inject.Inject
|
|||||||
* @property shownUnitGroups [UnitGroup]s that user wants to see. Excludes other [UnitGroup]s,
|
* @property shownUnitGroups [UnitGroup]s that user wants to see. Excludes other [UnitGroup]s,
|
||||||
* @property enableVibrations When true will use haptic feedback in app.
|
* @property enableVibrations When true will use haptic feedback in app.
|
||||||
* @property enableToolsExperiment When true will enable experimental Tools screen.
|
* @property enableToolsExperiment When true will enable experimental Tools screen.
|
||||||
|
* @property radianMode AngleMode in mxParser. When true - Radian, when False - Degree.
|
||||||
*/
|
*/
|
||||||
data class UserPreferences(
|
data class UserPreferences(
|
||||||
val themingMode: ThemingMode? = null,
|
val themingMode: ThemingMode? = null,
|
||||||
@ -67,7 +68,8 @@ data class UserPreferences(
|
|||||||
val shownUnitGroups: List<UnitGroup> = ALL_UNIT_GROUPS,
|
val shownUnitGroups: List<UnitGroup> = ALL_UNIT_GROUPS,
|
||||||
val enableVibrations: Boolean = true,
|
val enableVibrations: Boolean = true,
|
||||||
val enableToolsExperiment: Boolean = false,
|
val enableToolsExperiment: Boolean = false,
|
||||||
val startingScreen: String = TopLevelDestinations.Converter.route
|
val startingScreen: String = TopLevelDestinations.Converter.route,
|
||||||
|
val radianMode: Boolean = true
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,6 +92,7 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS
|
|||||||
val ENABLE_VIBRATIONS = booleanPreferencesKey("ENABLE_VIBRATIONS_PREF_KEY")
|
val ENABLE_VIBRATIONS = booleanPreferencesKey("ENABLE_VIBRATIONS_PREF_KEY")
|
||||||
val ENABLE_TOOLS_EXPERIMENT = booleanPreferencesKey("ENABLE_TOOLS_EXPERIMENT_PREF_KEY")
|
val ENABLE_TOOLS_EXPERIMENT = booleanPreferencesKey("ENABLE_TOOLS_EXPERIMENT_PREF_KEY")
|
||||||
val STARTING_SCREEN = stringPreferencesKey("STARTING_SCREEN_PREF_KEY")
|
val STARTING_SCREEN = stringPreferencesKey("STARTING_SCREEN_PREF_KEY")
|
||||||
|
val RADIAN_MODE = booleanPreferencesKey("RADIAN_MODE_PREF_KEY")
|
||||||
}
|
}
|
||||||
|
|
||||||
val userPreferencesFlow: Flow<UserPreferences> = dataStore.data
|
val userPreferencesFlow: Flow<UserPreferences> = dataStore.data
|
||||||
@ -134,6 +137,7 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS
|
|||||||
val enableVibrations: Boolean = preferences[PrefsKeys.ENABLE_VIBRATIONS] ?: true
|
val enableVibrations: Boolean = preferences[PrefsKeys.ENABLE_VIBRATIONS] ?: true
|
||||||
val enableToolsExperiment: Boolean = preferences[PrefsKeys.ENABLE_TOOLS_EXPERIMENT] ?: false
|
val enableToolsExperiment: Boolean = preferences[PrefsKeys.ENABLE_TOOLS_EXPERIMENT] ?: false
|
||||||
val startingScreen: String = preferences[PrefsKeys.STARTING_SCREEN] ?: TopLevelDestinations.Converter.route
|
val startingScreen: String = preferences[PrefsKeys.STARTING_SCREEN] ?: TopLevelDestinations.Converter.route
|
||||||
|
val radianMode: Boolean = preferences[PrefsKeys.RADIAN_MODE] ?: true
|
||||||
|
|
||||||
UserPreferences(
|
UserPreferences(
|
||||||
themingMode = themingMode,
|
themingMode = themingMode,
|
||||||
@ -147,7 +151,8 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS
|
|||||||
shownUnitGroups = shownUnitGroups,
|
shownUnitGroups = shownUnitGroups,
|
||||||
enableVibrations = enableVibrations,
|
enableVibrations = enableVibrations,
|
||||||
enableToolsExperiment = enableToolsExperiment,
|
enableToolsExperiment = enableToolsExperiment,
|
||||||
startingScreen = startingScreen
|
startingScreen = startingScreen,
|
||||||
|
radianMode = radianMode
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,4 +274,15 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS
|
|||||||
preferences[PrefsKeys.ENABLE_TOOLS_EXPERIMENT] = enabled
|
preferences[PrefsKeys.ENABLE_TOOLS_EXPERIMENT] = enabled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update angle mode for calculator.
|
||||||
|
*
|
||||||
|
* @param radianMode When true - Radian, when False - Degree.
|
||||||
|
*/
|
||||||
|
suspend fun updateRadianMode(radianMode: Boolean) {
|
||||||
|
dataStore.edit { preferences ->
|
||||||
|
preferences[PrefsKeys.RADIAN_MODE] = radianMode
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
1
fastlane/metadata/android/en-US/changelogs/18.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/18.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Fixed crashes in calculator.
|
1
fastlane/metadata/android/ru/changelogs/18.txt
Normal file
1
fastlane/metadata/android/ru/changelogs/18.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Исправлены ошибки в калькуляторе.
|
@ -1,21 +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.feature.calculator
|
|
||||||
|
|
||||||
internal enum class AngleMode { DEG, RAD }
|
|
@ -270,7 +270,7 @@ private fun CalculatorScreen(
|
|||||||
numPad = {
|
numPad = {
|
||||||
CalculatorKeyboard(
|
CalculatorKeyboard(
|
||||||
modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp, vertical = 4.dp),
|
modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp, vertical = 4.dp),
|
||||||
angleMode = uiState.angleMode,
|
radianMode = uiState.radianMode,
|
||||||
allowVibration = uiState.allowVibration,
|
allowVibration = uiState.allowVibration,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
clearSymbols = clearSymbols,
|
clearSymbols = clearSymbols,
|
||||||
|
@ -24,7 +24,7 @@ import com.sadellie.unitto.data.model.HistoryItem
|
|||||||
internal data class CalculatorUIState(
|
internal data class CalculatorUIState(
|
||||||
val input: TextFieldValue = TextFieldValue(),
|
val input: TextFieldValue = TextFieldValue(),
|
||||||
val output: String = "",
|
val output: String = "",
|
||||||
val angleMode: AngleMode = AngleMode.RAD,
|
val radianMode: Boolean = true,
|
||||||
val history: List<HistoryItem> = emptyList(),
|
val history: List<HistoryItem> = emptyList(),
|
||||||
val allowVibration: Boolean = false
|
val allowVibration: Boolean = false
|
||||||
)
|
)
|
||||||
|
@ -34,7 +34,6 @@ import kotlinx.coroutines.flow.SharingStarted
|
|||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
import kotlinx.coroutines.flow.merge
|
|
||||||
import kotlinx.coroutines.flow.stateIn
|
import kotlinx.coroutines.flow.stateIn
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -46,7 +45,7 @@ import org.mariuszgromada.math.mxparser.mXparser as MathParser
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
internal class CalculatorViewModel @Inject constructor(
|
internal class CalculatorViewModel @Inject constructor(
|
||||||
userPrefsRepository: UserPreferencesRepository,
|
private val userPrefsRepository: UserPreferencesRepository,
|
||||||
private val calculatorHistoryRepository: CalculatorHistoryRepository,
|
private val calculatorHistoryRepository: CalculatorHistoryRepository,
|
||||||
private val textFieldController: TextFieldController
|
private val textFieldController: TextFieldController
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
@ -58,16 +57,15 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
)
|
)
|
||||||
|
|
||||||
private val _output: MutableStateFlow<String> = MutableStateFlow("")
|
private val _output: MutableStateFlow<String> = MutableStateFlow("")
|
||||||
private val _angleMode: MutableStateFlow<AngleMode> = MutableStateFlow(AngleMode.RAD)
|
|
||||||
private val _history = calculatorHistoryRepository.historyFlow
|
private val _history = calculatorHistoryRepository.historyFlow
|
||||||
|
|
||||||
val uiState = combine(
|
val uiState = combine(
|
||||||
textFieldController.input, _output, _angleMode, _history, _userPrefs
|
textFieldController.input, _output, _history, _userPrefs
|
||||||
) { input, output, angleMode, history, userPrefs ->
|
) { input, output, history, userPrefs ->
|
||||||
return@combine CalculatorUIState(
|
return@combine CalculatorUIState(
|
||||||
input = input,
|
input = input,
|
||||||
output = output,
|
output = output,
|
||||||
angleMode = angleMode,
|
radianMode = userPrefs.radianMode,
|
||||||
history = history,
|
history = history,
|
||||||
allowVibration = userPrefs.enableVibrations
|
allowVibration = userPrefs.enableVibrations
|
||||||
)
|
)
|
||||||
@ -82,14 +80,8 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
fun clearSymbols() = textFieldController.clearInput()
|
fun clearSymbols() = textFieldController.clearInput()
|
||||||
|
|
||||||
fun toggleCalculatorMode() {
|
fun toggleCalculatorMode() {
|
||||||
_angleMode.update {
|
viewModelScope.launch {
|
||||||
if (it == AngleMode.DEG) {
|
userPrefsRepository.updateRadianMode(!_userPrefs.value.radianMode)
|
||||||
MathParser.setRadiansMode()
|
|
||||||
AngleMode.RAD
|
|
||||||
} else {
|
|
||||||
MathParser.setDegreesMode()
|
|
||||||
AngleMode.DEG
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +177,9 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
|
|
||||||
// Observe and invoke calculation without UI lag.
|
// Observe and invoke calculation without UI lag.
|
||||||
viewModelScope.launch(Dispatchers.Default) {
|
viewModelScope.launch(Dispatchers.Default) {
|
||||||
merge(_userPrefs, textFieldController.input, _angleMode).collectLatest {
|
combine(_userPrefs, textFieldController.input) { userPrefs, _ ->
|
||||||
|
if (userPrefs.radianMode) MathParser.setRadiansMode() else MathParser.setDegreesMode()
|
||||||
|
}.collectLatest {
|
||||||
calculateInput()
|
calculateInput()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,11 +57,15 @@ class TextFieldController @Inject constructor() {
|
|||||||
|
|
||||||
val inputFormatted = newInput.fixFormat()
|
val inputFormatted = newInput.fixFormat()
|
||||||
val newSelectionStartEnd = inputFormatted.length - lastToEndDistance
|
val newSelectionStartEnd = inputFormatted.length - lastToEndDistance
|
||||||
|
val fixedCursor = fixCursor(
|
||||||
|
newPosition = newSelectionStartEnd..newSelectionStartEnd,
|
||||||
|
currentInput = inputFormatted
|
||||||
|
) ?: newSelectionStartEnd..newSelectionStartEnd
|
||||||
|
|
||||||
input.update {
|
input.update {
|
||||||
it.copy(
|
it.copy(
|
||||||
text = inputFormatted,
|
text = inputFormatted,
|
||||||
selection = TextRange(newSelectionStartEnd, newSelectionStartEnd)
|
selection = TextRange(fixedCursor)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -72,16 +76,9 @@ class TextFieldController @Inject constructor() {
|
|||||||
fun pasteSymbols(symbols: String) = addToInput(symbols.filterUnknownSymbols())
|
fun pasteSymbols(symbols: String) = addToInput(symbols.filterUnknownSymbols())
|
||||||
|
|
||||||
fun moveCursor(newPosition: IntRange) {
|
fun moveCursor(newPosition: IntRange) {
|
||||||
val currentInput = input.value.text
|
|
||||||
if (newPosition.last > currentInput.length) return
|
|
||||||
|
|
||||||
val fixedLeftCursor = cursorFixer.fixCursorIfNeeded(currentInput, newPosition.first)
|
|
||||||
val fixedRightCursor = cursorFixer.fixCursorIfNeeded(currentInput, newPosition.last)
|
|
||||||
|
|
||||||
// Will modify
|
|
||||||
input.update {
|
input.update {
|
||||||
it.copy(
|
it.copy(
|
||||||
selection = TextRange(fixedLeftCursor, fixedRightCursor)
|
selection = TextRange(fixCursor(newPosition) ?: return)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -115,7 +112,7 @@ class TextFieldController @Inject constructor() {
|
|||||||
.fixFormat()
|
.fixFormat()
|
||||||
it.copy(
|
it.copy(
|
||||||
text = newText,
|
text = newText,
|
||||||
selection = TextRange(newText.length - distanceFromEnd)
|
selection = TextRange((newText.length - distanceFromEnd).coerceAtLeast(0))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -126,10 +123,24 @@ class TextFieldController @Inject constructor() {
|
|||||||
.replace(localFormatter.grouping, "")
|
.replace(localFormatter.grouping, "")
|
||||||
.replace(localFormatter.fractional, Token.dot)
|
.replace(localFormatter.fractional, Token.dot)
|
||||||
|
|
||||||
|
private fun fixCursor(
|
||||||
|
newPosition: IntRange,
|
||||||
|
currentInput: String = input.value.text
|
||||||
|
): IntRange? {
|
||||||
|
if (newPosition.last > currentInput.length) return null
|
||||||
|
|
||||||
|
val fixedLeftCursor = cursorFixer.fixCursorIfNeeded(currentInput, newPosition.first)
|
||||||
|
val fixedRightCursor = cursorFixer.fixCursorIfNeeded(currentInput, newPosition.last)
|
||||||
|
|
||||||
|
return fixedLeftCursor..fixedRightCursor
|
||||||
|
}
|
||||||
|
|
||||||
private fun String.fixFormat(): String = localFormatter.reFormat(this)
|
private fun String.fixFormat(): String = localFormatter.reFormat(this)
|
||||||
|
|
||||||
private fun String.filterUnknownSymbols() = localFormatter.filterUnknownSymbols(this)
|
private fun String.filterUnknownSymbols() = localFormatter.filterUnknownSymbols(this)
|
||||||
|
|
||||||
|
private fun TextRange(range: IntRange): TextRange = TextRange(range.first, range.last)
|
||||||
|
|
||||||
inner class CursorFixer {
|
inner class CursorFixer {
|
||||||
private val illegalTokens by lazy {
|
private val illegalTokens by lazy {
|
||||||
listOf(
|
listOf(
|
||||||
|
@ -98,12 +98,11 @@ import com.sadellie.unitto.core.ui.common.key.unittoicons.RightBracket
|
|||||||
import com.sadellie.unitto.core.ui.common.key.unittoicons.Sin
|
import com.sadellie.unitto.core.ui.common.key.unittoicons.Sin
|
||||||
import com.sadellie.unitto.core.ui.common.key.unittoicons.SquareRootWide
|
import com.sadellie.unitto.core.ui.common.key.unittoicons.SquareRootWide
|
||||||
import com.sadellie.unitto.core.ui.common.key.unittoicons.Tan
|
import com.sadellie.unitto.core.ui.common.key.unittoicons.Tan
|
||||||
import com.sadellie.unitto.feature.calculator.AngleMode
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
internal fun CalculatorKeyboard(
|
internal fun CalculatorKeyboard(
|
||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
clearSymbols: () -> Unit,
|
clearSymbols: () -> Unit,
|
||||||
@ -114,7 +113,7 @@ internal fun CalculatorKeyboard(
|
|||||||
if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||||
PortraitKeyboard(
|
PortraitKeyboard(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
angleMode = angleMode,
|
radianMode = radianMode,
|
||||||
allowVibration = allowVibration,
|
allowVibration = allowVibration,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
toggleAngleMode = toggleAngleMode,
|
toggleAngleMode = toggleAngleMode,
|
||||||
@ -125,7 +124,7 @@ internal fun CalculatorKeyboard(
|
|||||||
} else {
|
} else {
|
||||||
LandscapeKeyboard(
|
LandscapeKeyboard(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
angleMode = angleMode,
|
radianMode = radianMode,
|
||||||
allowVibration = allowVibration,
|
allowVibration = allowVibration,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
toggleAngleMode = toggleAngleMode,
|
toggleAngleMode = toggleAngleMode,
|
||||||
@ -139,7 +138,7 @@ internal fun CalculatorKeyboard(
|
|||||||
@Composable
|
@Composable
|
||||||
private fun PortraitKeyboard(
|
private fun PortraitKeyboard(
|
||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
toggleAngleMode: () -> Unit,
|
toggleAngleMode: () -> Unit,
|
||||||
@ -185,7 +184,7 @@ private fun PortraitKeyboard(
|
|||||||
allowVibration = allowVibration,
|
allowVibration = allowVibration,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
showAdditional = showAdditional,
|
showAdditional = showAdditional,
|
||||||
angleMode = angleMode,
|
radianMode = radianMode,
|
||||||
toggleAngleMode = toggleAngleMode,
|
toggleAngleMode = toggleAngleMode,
|
||||||
toggleInvMode = { invMode = !invMode }
|
toggleInvMode = { invMode = !invMode }
|
||||||
)
|
)
|
||||||
@ -195,7 +194,7 @@ private fun PortraitKeyboard(
|
|||||||
allowVibration = allowVibration,
|
allowVibration = allowVibration,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
showAdditional = showAdditional,
|
showAdditional = showAdditional,
|
||||||
angleMode = angleMode,
|
radianMode = radianMode,
|
||||||
toggleAngleMode = toggleAngleMode,
|
toggleAngleMode = toggleAngleMode,
|
||||||
toggleInvMode = { invMode = !invMode }
|
toggleInvMode = { invMode = !invMode }
|
||||||
)
|
)
|
||||||
@ -257,7 +256,7 @@ private fun AdditionalButtonsPortrait(
|
|||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
showAdditional: Boolean,
|
showAdditional: Boolean,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
toggleAngleMode: () -> Unit,
|
toggleAngleMode: () -> Unit,
|
||||||
toggleInvMode: () -> Unit
|
toggleInvMode: () -> Unit
|
||||||
) {
|
) {
|
||||||
@ -271,7 +270,7 @@ private fun AdditionalButtonsPortrait(
|
|||||||
AnimatedVisibility(showAdditional) {
|
AnimatedVisibility(showAdditional) {
|
||||||
Column {
|
Column {
|
||||||
Row {
|
Row {
|
||||||
KeyboardButtonAdditional(modifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad, allowVibration) { toggleAngleMode() }
|
KeyboardButtonAdditional(modifier, if (radianMode) UnittoIcons.Rad else UnittoIcons.Deg, allowVibration) { toggleAngleMode() }
|
||||||
KeyboardButtonAdditional(modifier, UnittoIcons.Sin, allowVibration) { addSymbol(Token.sin) }
|
KeyboardButtonAdditional(modifier, UnittoIcons.Sin, allowVibration) { addSymbol(Token.sin) }
|
||||||
KeyboardButtonAdditional(modifier, UnittoIcons.Cos, allowVibration) { addSymbol(Token.cos) }
|
KeyboardButtonAdditional(modifier, UnittoIcons.Cos, allowVibration) { addSymbol(Token.cos) }
|
||||||
KeyboardButtonAdditional(modifier, UnittoIcons.Tan, allowVibration) { addSymbol(Token.tan) }
|
KeyboardButtonAdditional(modifier, UnittoIcons.Tan, allowVibration) { addSymbol(Token.tan) }
|
||||||
@ -293,7 +292,7 @@ private fun AdditionalButtonsPortraitInverse(
|
|||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
showAdditional: Boolean,
|
showAdditional: Boolean,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
toggleAngleMode: () -> Unit,
|
toggleAngleMode: () -> Unit,
|
||||||
toggleInvMode: () -> Unit
|
toggleInvMode: () -> Unit
|
||||||
) {
|
) {
|
||||||
@ -307,7 +306,7 @@ private fun AdditionalButtonsPortraitInverse(
|
|||||||
AnimatedVisibility(showAdditional) {
|
AnimatedVisibility(showAdditional) {
|
||||||
Column {
|
Column {
|
||||||
Row {
|
Row {
|
||||||
KeyboardButtonAdditional(modifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad, allowVibration) { toggleAngleMode() }
|
KeyboardButtonAdditional(modifier, if (radianMode) UnittoIcons.Rad else UnittoIcons.Deg, allowVibration) { toggleAngleMode() }
|
||||||
KeyboardButtonAdditional(modifier, UnittoIcons.ArSin, allowVibration) { addSymbol(Token.arSin) }
|
KeyboardButtonAdditional(modifier, UnittoIcons.ArSin, allowVibration) { addSymbol(Token.arSin) }
|
||||||
KeyboardButtonAdditional(modifier, UnittoIcons.ArCos, allowVibration) { addSymbol(Token.arCos) }
|
KeyboardButtonAdditional(modifier, UnittoIcons.ArCos, allowVibration) { addSymbol(Token.arCos) }
|
||||||
KeyboardButtonAdditional(modifier, UnittoIcons.AcTan, allowVibration) { addSymbol(Token.acTan) }
|
KeyboardButtonAdditional(modifier, UnittoIcons.AcTan, allowVibration) { addSymbol(Token.acTan) }
|
||||||
@ -326,7 +325,7 @@ private fun AdditionalButtonsPortraitInverse(
|
|||||||
@Composable
|
@Composable
|
||||||
private fun LandscapeKeyboard(
|
private fun LandscapeKeyboard(
|
||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
toggleAngleMode: () -> Unit,
|
toggleAngleMode: () -> Unit,
|
||||||
@ -350,7 +349,7 @@ private fun LandscapeKeyboard(
|
|||||||
modifier = Modifier.weight(1f),
|
modifier = Modifier.weight(1f),
|
||||||
buttonModifier = buttonModifier,
|
buttonModifier = buttonModifier,
|
||||||
allowVibration = allowVibration,
|
allowVibration = allowVibration,
|
||||||
angleMode = angleMode,
|
radianMode = radianMode,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
toggleAngleMode = toggleAngleMode,
|
toggleAngleMode = toggleAngleMode,
|
||||||
toggleInvMode = { invMode = !invMode }
|
toggleInvMode = { invMode = !invMode }
|
||||||
@ -360,7 +359,7 @@ private fun LandscapeKeyboard(
|
|||||||
modifier = Modifier.weight(1f),
|
modifier = Modifier.weight(1f),
|
||||||
buttonModifier = buttonModifier,
|
buttonModifier = buttonModifier,
|
||||||
allowVibration = allowVibration,
|
allowVibration = allowVibration,
|
||||||
angleMode = angleMode,
|
radianMode = radianMode,
|
||||||
addSymbol = addSymbol,
|
addSymbol = addSymbol,
|
||||||
toggleAngleMode = toggleAngleMode,
|
toggleAngleMode = toggleAngleMode,
|
||||||
toggleInvMode = { invMode = !invMode }
|
toggleInvMode = { invMode = !invMode }
|
||||||
@ -408,13 +407,13 @@ private fun AdditionalButtonsLandscape(
|
|||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
buttonModifier: Modifier,
|
buttonModifier: Modifier,
|
||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
toggleAngleMode: () -> Unit,
|
toggleAngleMode: () -> Unit,
|
||||||
toggleInvMode: () -> Unit
|
toggleInvMode: () -> Unit
|
||||||
) {
|
) {
|
||||||
Column(modifier) {
|
Column(modifier) {
|
||||||
KeyboardButtonAdditional(buttonModifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad, allowVibration) { toggleAngleMode() }
|
KeyboardButtonAdditional(buttonModifier, if (radianMode) UnittoIcons.Rad else UnittoIcons.Deg, allowVibration) { toggleAngleMode() }
|
||||||
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Inv, allowVibration) { toggleInvMode() }
|
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Inv, allowVibration) { toggleInvMode() }
|
||||||
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Sin, allowVibration) { addSymbol(Token.sin) }
|
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Sin, allowVibration) { addSymbol(Token.sin) }
|
||||||
KeyboardButtonAdditional(buttonModifier, UnittoIcons.E, allowVibration) { addSymbol(Token.e) }
|
KeyboardButtonAdditional(buttonModifier, UnittoIcons.E, allowVibration) { addSymbol(Token.e) }
|
||||||
@ -440,13 +439,13 @@ private fun AdditionalButtonsLandscapeInverse(
|
|||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
buttonModifier: Modifier,
|
buttonModifier: Modifier,
|
||||||
allowVibration: Boolean,
|
allowVibration: Boolean,
|
||||||
angleMode: AngleMode,
|
radianMode: Boolean,
|
||||||
addSymbol: (String) -> Unit,
|
addSymbol: (String) -> Unit,
|
||||||
toggleAngleMode: () -> Unit,
|
toggleAngleMode: () -> Unit,
|
||||||
toggleInvMode: () -> Unit
|
toggleInvMode: () -> Unit
|
||||||
) {
|
) {
|
||||||
Column(modifier) {
|
Column(modifier) {
|
||||||
KeyboardButtonAdditional(buttonModifier, if (angleMode == AngleMode.DEG) UnittoIcons.Deg else UnittoIcons.Rad, allowVibration) { toggleAngleMode() }
|
KeyboardButtonAdditional(buttonModifier, if (radianMode) UnittoIcons.Rad else UnittoIcons.Deg, allowVibration) { toggleAngleMode() }
|
||||||
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Inv, allowVibration) { toggleInvMode() }
|
KeyboardButtonAdditional(buttonModifier, UnittoIcons.Inv, allowVibration) { toggleInvMode() }
|
||||||
KeyboardButtonAdditional(buttonModifier, UnittoIcons.ArSin, allowVibration) { addSymbol(Token.arSin) }
|
KeyboardButtonAdditional(buttonModifier, UnittoIcons.ArSin, allowVibration) { addSymbol(Token.arSin) }
|
||||||
KeyboardButtonAdditional(buttonModifier, UnittoIcons.E, allowVibration) { addSymbol(Token.e) }
|
KeyboardButtonAdditional(buttonModifier, UnittoIcons.E, allowVibration) { addSymbol(Token.e) }
|
||||||
@ -472,7 +471,7 @@ private fun AdditionalButtonsLandscapeInverse(
|
|||||||
private fun PreviewCalculatorKeyboard() {
|
private fun PreviewCalculatorKeyboard() {
|
||||||
CalculatorKeyboard(
|
CalculatorKeyboard(
|
||||||
modifier = Modifier,
|
modifier = Modifier,
|
||||||
angleMode = AngleMode.DEG,
|
radianMode = true,
|
||||||
addSymbol = {},
|
addSymbol = {},
|
||||||
clearSymbols = {},
|
clearSymbols = {},
|
||||||
deleteSymbol = {},
|
deleteSymbol = {},
|
||||||
|
@ -184,6 +184,13 @@ internal class TextFieldControllerTest {
|
|||||||
textFieldController.delete()
|
textFieldController.delete()
|
||||||
assertEquals("", textFieldController.text)
|
assertEquals("", textFieldController.text)
|
||||||
assertEquals(0..0, textFieldController.selection)
|
assertEquals(0..0, textFieldController.selection)
|
||||||
|
|
||||||
|
textFieldController.addToInput("1234")
|
||||||
|
// Place cursor like 1|,234
|
||||||
|
textFieldController.moveCursor(1..1)
|
||||||
|
textFieldController.delete()
|
||||||
|
assertEquals("234", textFieldController.text)
|
||||||
|
assertEquals(0..0, textFieldController.selection)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[versions]
|
[versions]
|
||||||
appCode = "17"
|
appCode = "18"
|
||||||
appName = "Illuminating emerald"
|
appName = "Illuminating emerald"
|
||||||
kotlin = "1.8.10"
|
kotlin = "1.8.10"
|
||||||
androidxCore = "1.9.0"
|
androidxCore = "1.9.0"
|
||||||
|
BIN
where-logo.png
Normal file
BIN
where-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 74 KiB |
Loading…
x
Reference in New Issue
Block a user