Fixed formatter

This commit is contained in:
Sad Ellie 2022-12-08 12:35:22 +04:00
parent 12cb52465e
commit d544a959f0
3 changed files with 11 additions and 16 deletions

View File

@ -55,8 +55,11 @@ const val KEY_SQRT = "√"
val OPERATORS = listOf( val OPERATORS = listOf(
KEY_PLUS, KEY_PLUS,
KEY_MINUS, KEY_MINUS,
KEY_MINUS_DISPLAY,
KEY_MULTIPLY, KEY_MULTIPLY,
KEY_MULTIPLY_DISPLAY,
KEY_DIVIDE, KEY_DIVIDE,
KEY_DIVIDE_DISPLAY,
KEY_SQRT, KEY_SQRT,
KEY_EXPONENT, KEY_EXPONENT,
) )

View File

@ -22,15 +22,9 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import com.sadellie.unitto.data.KEY_COMMA import com.sadellie.unitto.data.KEY_COMMA
import com.sadellie.unitto.data.KEY_DIVIDE
import com.sadellie.unitto.data.KEY_DIVIDE_DISPLAY
import com.sadellie.unitto.data.KEY_DOT import com.sadellie.unitto.data.KEY_DOT
import com.sadellie.unitto.data.KEY_E import com.sadellie.unitto.data.KEY_E
import com.sadellie.unitto.data.KEY_MINUS import com.sadellie.unitto.data.OPERATORS
import com.sadellie.unitto.data.KEY_MINUS_DISPLAY
import com.sadellie.unitto.data.KEY_MULTIPLY
import com.sadellie.unitto.data.KEY_MULTIPLY_DISPLAY
import com.sadellie.unitto.data.KEY_PLUS
import com.sadellie.unitto.data.preferences.OutputFormat import com.sadellie.unitto.data.preferences.OutputFormat
import com.sadellie.unitto.data.preferences.Separator import com.sadellie.unitto.data.preferences.Separator
import com.sadellie.unitto.data.units.AbstractUnit import com.sadellie.unitto.data.units.AbstractUnit
@ -89,16 +83,14 @@ object Formatter {
// We may receive expressions // We may receive expressions
// Find all numbers in that expression // Find all numbers in that expression
val allNumbers: List<String> = input.split( val allNumbers: List<String> = input.split(
KEY_MINUS, KEY_DIVIDE, KEY_PLUS, KEY_MULTIPLY *OPERATORS.toTypedArray()
) )
allNumbers.forEach { allNumbers.forEach {
output = output.replace(it, formatNumber(it)) output = output.replace(it, formatNumber(it))
} }
return output.replace(KEY_MINUS, KEY_MINUS_DISPLAY) return output
.replace(KEY_DIVIDE, KEY_DIVIDE_DISPLAY)
.replace(KEY_MULTIPLY, KEY_MULTIPLY_DISPLAY)
} }
/** /**

View File

@ -29,8 +29,8 @@ private const val ENG_VALUE_FRACTIONAL = "123.3E+21"
private const val COMPLETE_VALUE = "123456.789" private const val COMPLETE_VALUE = "123456.789"
private const val INCOMPLETE_VALUE = "123456." private const val INCOMPLETE_VALUE = "123456."
private const val NO_FRACTIONAL_VALUE = "123456" private const val NO_FRACTIONAL_VALUE = "123456"
private const val INCOMPLETE_EXPR = "50+123456/8*0.8-12+" private const val INCOMPLETE_EXPR = "50+123456÷8×0.812+"
private const val COMPLETE_EXPR = "50+123456/8*0.8-12+0" private const val COMPLETE_EXPR = "50+123456÷8×0.812+0-√9*4^9+2×(9+8×7)"
class FormatterTest { class FormatterTest {
@ -44,7 +44,7 @@ class FormatterTest {
assertEquals("123 456.", formatter.format(INCOMPLETE_VALUE)) assertEquals("123 456.", formatter.format(INCOMPLETE_VALUE))
assertEquals("123 456", formatter.format(NO_FRACTIONAL_VALUE)) assertEquals("123 456", formatter.format(NO_FRACTIONAL_VALUE))
assertEquals("50+123 456÷8×0.812+", formatter.format(INCOMPLETE_EXPR)) assertEquals("50+123 456÷8×0.812+", formatter.format(INCOMPLETE_EXPR))
assertEquals("50+123 456÷8×0.812+0", formatter.format(COMPLETE_EXPR)) assertEquals("50+123 456÷8×0.812+0-√9*4^9+2×(9+8×7)", formatter.format(COMPLETE_EXPR))
} }
@Test @Test
@ -57,7 +57,7 @@ class FormatterTest {
assertEquals("123,456.", formatter.format(INCOMPLETE_VALUE)) assertEquals("123,456.", formatter.format(INCOMPLETE_VALUE))
assertEquals("123,456", formatter.format(NO_FRACTIONAL_VALUE)) assertEquals("123,456", formatter.format(NO_FRACTIONAL_VALUE))
assertEquals("50+123,456÷8×0.812+", formatter.format(INCOMPLETE_EXPR)) assertEquals("50+123,456÷8×0.812+", formatter.format(INCOMPLETE_EXPR))
assertEquals("50+123,456÷8×0.812+0", formatter.format(COMPLETE_EXPR)) assertEquals("50+123,456÷8×0.812+0-√9*4^9+2×(9+8×7)", formatter.format(COMPLETE_EXPR))
} }
@Test @Test
@ -70,7 +70,7 @@ class FormatterTest {
assertEquals("123.456,", formatter.format(INCOMPLETE_VALUE)) assertEquals("123.456,", formatter.format(INCOMPLETE_VALUE))
assertEquals("123.456", formatter.format(NO_FRACTIONAL_VALUE)) assertEquals("123.456", formatter.format(NO_FRACTIONAL_VALUE))
assertEquals("50+123.456÷8×0,812+", formatter.format(INCOMPLETE_EXPR)) assertEquals("50+123.456÷8×0,812+", formatter.format(INCOMPLETE_EXPR))
assertEquals("50+123.456÷8×0,812+0", formatter.format(COMPLETE_EXPR)) assertEquals("50+123.456÷8×0,812+0-√9*4^9+2×(9+8×7)", formatter.format(COMPLETE_EXPR))
} }
} }