Skip to content

Commit

Permalink
Replace NumberFormat by format() function in some tests of the number…
Browse files Browse the repository at this point in the history
… formatting.
  • Loading branch information
ASmirnov-HORIS committed Dec 4, 2023
1 parent 1b5ef55 commit de139f5
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,42 @@ import kotlin.test.Test
import kotlin.test.assertEquals

class NumberFormatAlignTest {
private fun format(spec: String): NumberFormat = NumberFormat(spec)

@Test
fun alignLeft() {
assertEquals("0", NumberFormat("<1,d").apply(0))
assertEquals("0 ", NumberFormat("<2,d").apply(0))
assertEquals("0 ", NumberFormat("<3,d").apply(0))
assertEquals("0 ", NumberFormat("<5,d").apply(0))
assertEquals("0 ", NumberFormat("<8,d").apply(0))
assertEquals("0 ", NumberFormat("<13,d").apply(0))
assertEquals("0 ", NumberFormat("<21,d").apply(0))
assertEquals("0", format("<1,d").apply(0))
assertEquals("0 ", format("<2,d").apply(0))
assertEquals("0 ", format("<3,d").apply(0))
assertEquals("0 ", format("<5,d").apply(0))
assertEquals("0 ", format("<8,d").apply(0))
assertEquals("0 ", format("<13,d").apply(0))
assertEquals("0 ", format("<21,d").apply(0))
}

@Test
fun alignRight() {
assertEquals("0", NumberFormat(">1,d").apply(0))
assertEquals(" 0", NumberFormat(">2,d").apply(0))
assertEquals(" 0", NumberFormat(">3,d").apply(0))
assertEquals(" 0", NumberFormat(">5,d").apply(0))
assertEquals(" 0", NumberFormat(">8,d").apply(0))
assertEquals(" 0", NumberFormat(">13,d").apply(0))
assertEquals(" 0", NumberFormat(">21,d").apply(0))
assertEquals(" 1,000", NumberFormat(">21,d").apply(1000))
assertEquals(" 1e+21", NumberFormat(">21,d").apply(1e21))
assertEquals("0", format(">1,d").apply(0))
assertEquals(" 0", format(">2,d").apply(0))
assertEquals(" 0", format(">3,d").apply(0))
assertEquals(" 0", format(">5,d").apply(0))
assertEquals(" 0", format(">8,d").apply(0))
assertEquals(" 0", format(">13,d").apply(0))
assertEquals(" 0", format(">21,d").apply(0))
assertEquals(" 1,000", format(">21,d").apply(1000))
assertEquals(" 1e+21", format(">21,d").apply(1e21))
}

@Test
fun alignCenter() {
assertEquals("0", NumberFormat("^1,d").apply(0))
assertEquals("0 ", NumberFormat("^2,d").apply(0))
assertEquals(" 0 ", NumberFormat("^3,d").apply(0))
assertEquals(" 0 ", NumberFormat("^5,d").apply(0))
assertEquals(" 0 ", NumberFormat("^8,d").apply(0))
assertEquals(" 0 ", NumberFormat("^13,d").apply(0))
assertEquals(" 0 ", NumberFormat("^21,d").apply(0))
assertEquals(" 1,000 ", NumberFormat("^21,d").apply(1000))
assertEquals(" 1e+21 ", NumberFormat("^21,d").apply(1e21))
assertEquals("0", format("^1,d").apply(0))
assertEquals("0 ", format("^2,d").apply(0))
assertEquals(" 0 ", format("^3,d").apply(0))
assertEquals(" 0 ", format("^5,d").apply(0))
assertEquals(" 0 ", format("^8,d").apply(0))
assertEquals(" 0 ", format("^13,d").apply(0))
assertEquals(" 0 ", format("^21,d").apply(0))
assertEquals(" 1,000 ", format("^21,d").apply(1000))
assertEquals(" 1e+21 ", format("^21,d").apply(1e21))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import kotlin.test.Test
import kotlin.test.assertEquals

class NumberFormatExtremesTest {
private fun format(spec: String): NumberFormat = NumberFormat(spec)

@Test
fun typeS() {
val f = NumberFormat(".3s")
val f = format(".3s")
assertEquals("0.00y", f.apply(Double.MIN_VALUE))
assertEquals("100000000000000Y", f.apply(1E38))
assertEquals("0.00y", f.apply(-Double.MIN_VALUE))
Expand All @@ -23,7 +25,7 @@ class NumberFormatExtremesTest {

@Test
fun typeE() {
val f = NumberFormat(".2e")
val f = format(".2e")

assertEquals("1.00e-323", f.apply(NumberFormat.TYPE_E_MIN))
assertEquals("-1.00e-323", f.apply(-NumberFormat.TYPE_E_MIN))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,29 @@ import kotlin.test.Test
import kotlin.test.assertEquals

class NumberFormatSignTest {
private fun format(spec: String): NumberFormat = NumberFormat(spec)

@Test
fun padAfterSign() {
assertEquals("+0", NumberFormat("=+1,d").apply(0))
assertEquals("+0", NumberFormat("=+2,d").apply(0))
assertEquals("+ 0", NumberFormat("=+3,d").apply(0))
assertEquals("+ 0", NumberFormat("=+5,d").apply(0))
assertEquals("+ 0", NumberFormat("=+8,d").apply(0))
assertEquals("+ 0", NumberFormat("=+13,d").apply(0))
assertEquals("+ 0", NumberFormat("=+21,d").apply(0))
assertEquals("+ 1e+21", NumberFormat("=+21,d").apply(1e21))
assertEquals("+0", format("=+1,d").apply(0))
assertEquals("+0", format("=+2,d").apply(0))
assertEquals("+ 0", format("=+3,d").apply(0))
assertEquals("+ 0", format("=+5,d").apply(0))
assertEquals("+ 0", format("=+8,d").apply(0))
assertEquals("+ 0", format("=+13,d").apply(0))
assertEquals("+ 0", format("=+21,d").apply(0))
assertEquals("+ 1e+21", format("=+21,d").apply(1e21))
}

@Test
fun onlyUseSignForNegativeNumbers() {
assertEquals("-1", NumberFormat("-1,d").apply(-1))
assertEquals("0", NumberFormat("-1,d").apply(0))
assertEquals(" 0", NumberFormat("-2,d").apply(0))
assertEquals(" 0", NumberFormat("-3,d").apply(0))
assertEquals(" 0", NumberFormat("-5,d").apply(0))
assertEquals(" 0", NumberFormat("-8,d").apply(0))
assertEquals(" 0", NumberFormat("-13,d").apply(0))
assertEquals(" 0", NumberFormat("-21,d").apply(0))
assertEquals("-1", format("-1,d").apply(-1))
assertEquals("0", format("-1,d").apply(0))
assertEquals(" 0", format("-2,d").apply(0))
assertEquals(" 0", format("-3,d").apply(0))
assertEquals(" 0", format("-5,d").apply(0))
assertEquals(" 0", format("-8,d").apply(0))
assertEquals(" 0", format("-13,d").apply(0))
assertEquals(" 0", format("-21,d").apply(0))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,100 +9,102 @@ import kotlin.test.Test
import kotlin.test.assertEquals

class NumberFormatTypeDTest {
private fun format(spec: String): NumberFormat = NumberFormat(spec)

@Test
fun alwaysUsesZeroPrecision() {
val f = NumberFormat(".2d")
val f = format(".2d")
assertEquals("0", f.apply(0))
assertEquals("42", f.apply(42))
assertEquals("-4", f.apply(-4.2))
}

@Test
fun roundsNonIntegers() {
assertEquals("4", NumberFormat("d").apply(4.2))
assertEquals("4", format("d").apply(4.2))
}

@Test
fun groupThousands() {
assertEquals("0", NumberFormat("01,d").apply(0))
assertEquals("0", NumberFormat("01,d").apply(0))
assertEquals("00", NumberFormat("02,d").apply(0))
assertEquals("000", NumberFormat("03,d").apply(0))
assertEquals("0,000", NumberFormat("04,d").apply(0))
assertEquals("0,000", NumberFormat("05,d").apply(0))
assertEquals("00,000", NumberFormat("06,d").apply(0))
assertEquals("0,000,000", NumberFormat("08,d").apply(0))
assertEquals("0,000,000,000", NumberFormat("013,d").apply(0))
assertEquals("0,000,000,000,000,000", NumberFormat("021,d").apply(0))
assertEquals("-0,042,000,000", NumberFormat("013,d").apply(-42000000))
assertEquals("0,000,001e+21", NumberFormat("012,d").apply(1e21))
assertEquals("0,000,001e+21", NumberFormat("013,d").apply(1e21))
assertEquals("00,000,001e+21", NumberFormat("014,d").apply(1e21))
assertEquals("000,000,001e+21", NumberFormat("015,d").apply(1e21))
assertEquals("0", format("01,d").apply(0))
assertEquals("0", format("01,d").apply(0))
assertEquals("00", format("02,d").apply(0))
assertEquals("000", format("03,d").apply(0))
assertEquals("0,000", format("04,d").apply(0))
assertEquals("0,000", format("05,d").apply(0))
assertEquals("00,000", format("06,d").apply(0))
assertEquals("0,000,000", format("08,d").apply(0))
assertEquals("0,000,000,000", format("013,d").apply(0))
assertEquals("0,000,000,000,000,000", format("021,d").apply(0))
assertEquals("-0,042,000,000", format("013,d").apply(-42000000))
assertEquals("0,000,001e+21", format("012,d").apply(1e21))
assertEquals("0,000,001e+21", format("013,d").apply(1e21))
assertEquals("00,000,001e+21", format("014,d").apply(1e21))
assertEquals("000,000,001e+21", format("015,d").apply(1e21))
}

@Test
fun groupThousandsAndZeroFillWithOverflow() {
assertEquals("1", NumberFormat("01,d").apply(1))
assertEquals("1", NumberFormat("01,d").apply(1))
assertEquals("12", NumberFormat("02,d").apply(12))
assertEquals("123", NumberFormat("03,d").apply(123))
assertEquals("12,345", NumberFormat("05,d").apply(12345))
assertEquals("12,345,678", NumberFormat("08,d").apply(12345678))
assertEquals("1,234,567,890,123", NumberFormat("013,d").apply(1234567890123))
assertEquals("1", format("01,d").apply(1))
assertEquals("1", format("01,d").apply(1))
assertEquals("12", format("02,d").apply(12))
assertEquals("123", format("03,d").apply(123))
assertEquals("12,345", format("05,d").apply(12345))
assertEquals("12,345,678", format("08,d").apply(12345678))
assertEquals("1,234,567,890,123", format("013,d").apply(1234567890123))
}

@Test
fun groupThousandsAndSpaceFill() {
assertEquals("0", NumberFormat("1,d").apply(0))
assertEquals("0", NumberFormat("1,d").apply(0))
assertEquals(" 0", NumberFormat("2,d").apply(0))
assertEquals(" 0", NumberFormat("3,d").apply(0))
assertEquals(" 0", NumberFormat("5,d").apply(0))
assertEquals(" 0", NumberFormat("8,d").apply(0))
assertEquals(" 0", NumberFormat("13,d").apply(0))
assertEquals(" 0", NumberFormat("21,d").apply(0))
assertEquals("0", format("1,d").apply(0))
assertEquals("0", format("1,d").apply(0))
assertEquals(" 0", format("2,d").apply(0))
assertEquals(" 0", format("3,d").apply(0))
assertEquals(" 0", format("5,d").apply(0))
assertEquals(" 0", format("8,d").apply(0))
assertEquals(" 0", format("13,d").apply(0))
assertEquals(" 0", format("21,d").apply(0))
}

@Test
fun groupThousandsAndSpaceFillWithOverflow() {
assertEquals("1", NumberFormat("1,d").apply(1))
assertEquals("12", NumberFormat("2,d").apply(12))
assertEquals("123", NumberFormat("3,d").apply(123))
assertEquals("12,345", NumberFormat("5,d").apply(12345))
assertEquals("12,345,678", NumberFormat("8,d").apply(12345678))
assertEquals("1,234,567,890,123", NumberFormat("13,d").apply(1234567890123))
assertEquals("1", format("1,d").apply(1))
assertEquals("12", format("2,d").apply(12))
assertEquals("123", format("3,d").apply(123))
assertEquals("12,345", format("5,d").apply(12345))
assertEquals("12,345,678", format("8,d").apply(12345678))
assertEquals("1,234,567,890,123", format("13,d").apply(1234567890123))
}

@Test
fun padAfterSignWithCurrency() {
assertEquals("+$0", NumberFormat("=+$1,d").apply(0))
assertEquals("+$0", NumberFormat("=+$1,d").apply(0))
assertEquals("+$0", NumberFormat("=+$2,d").apply(0))
assertEquals("+$0", NumberFormat("=+$3,d").apply(0))
assertEquals("+$ 0", NumberFormat("=+$5,d").apply(0))
assertEquals("+$ 0", NumberFormat("=+$8,d").apply(0))
assertEquals("+$ 0", NumberFormat("=+$13,d").apply(0))
assertEquals("+$ 0", NumberFormat("=+$21,d").apply(0))
assertEquals("+$ 1e+21", NumberFormat("=+$21,d").apply(1e21))
assertEquals("+$0", format("=+$1,d").apply(0))
assertEquals("+$0", format("=+$1,d").apply(0))
assertEquals("+$0", format("=+$2,d").apply(0))
assertEquals("+$0", format("=+$3,d").apply(0))
assertEquals("+$ 0", format("=+$5,d").apply(0))
assertEquals("+$ 0", format("=+$8,d").apply(0))
assertEquals("+$ 0", format("=+$13,d").apply(0))
assertEquals("+$ 0", format("=+$21,d").apply(0))
assertEquals("+$ 1e+21", format("=+$21,d").apply(1e21))
}

@Test
fun aSpaceCanDenotePositiveNumbers() {
assertEquals("-1", NumberFormat(" 1,d").apply(-1))
assertEquals(" 0", NumberFormat(" 1,d").apply(0))
assertEquals(" 0", NumberFormat(" 2,d").apply(0))
assertEquals(" 0", NumberFormat(" 3,d").apply(0))
assertEquals(" 0", NumberFormat(" 5,d").apply(0))
assertEquals(" 0", NumberFormat(" 8,d").apply(0))
assertEquals(" 0", NumberFormat(" 13,d").apply(0))
assertEquals(" 0", NumberFormat(" 21,d").apply(0))
assertEquals(" 1e+21", NumberFormat(" 21,d").apply(1e21))
assertEquals("-1", format(" 1,d").apply(-1))
assertEquals(" 0", format(" 1,d").apply(0))
assertEquals(" 0", format(" 2,d").apply(0))
assertEquals(" 0", format(" 3,d").apply(0))
assertEquals(" 0", format(" 5,d").apply(0))
assertEquals(" 0", format(" 8,d").apply(0))
assertEquals(" 0", format(" 13,d").apply(0))
assertEquals(" 0", format(" 21,d").apply(0))
assertEquals(" 1e+21", format(" 21,d").apply(1e21))
}

@Test
fun formatNegativeZeroAsZero() {
assertEquals("0", NumberFormat("1d").apply(-0))
assertEquals("0", NumberFormat("1d").apply(-1e-12))
assertEquals("0", format("1d").apply(-0))
assertEquals("0", format("1d").apply(-1e-12))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,22 @@ import kotlin.test.Test
import kotlin.test.assertEquals

class NumberFormatTypeGTest {
private fun format(spec: String): NumberFormat = NumberFormat(spec)

@Test
fun canOutputGeneralNotation() {
assertEquals("0.00026986", NumberFormat("g").apply(2.6985974025974023E-4))
assertEquals("0.05", NumberFormat(".1g").apply(0.049))
assertEquals("0.5", NumberFormat(".1g").apply(0.49))
assertEquals("0.45", NumberFormat(".2g").apply(0.449))
assertEquals("0.445", NumberFormat(".3g").apply(0.4449))
assertEquals("0.44445", NumberFormat(".5g").apply(0.444449))
assertEquals("1e+2", NumberFormat(".1g").apply(100))
assertEquals("1e+2", NumberFormat(".2g").apply(100))
assertEquals("100", NumberFormat(".3g").apply(100))
assertEquals("100", NumberFormat(".5g").apply(100))
assertEquals("100.2", NumberFormat(".5g").apply(100.2))
assertEquals("0.002", NumberFormat(".2g").apply(0.002))
assertEquals("0.00026986", format("g").apply(2.6985974025974023E-4))
assertEquals("0.05", format(".1g").apply(0.049))
assertEquals("0.5", format(".1g").apply(0.49))
assertEquals("0.45", format(".2g").apply(0.449))
assertEquals("0.445", format(".3g").apply(0.4449))
assertEquals("0.44445", format(".5g").apply(0.444449))
assertEquals("1e+2", format(".1g").apply(100))
assertEquals("1e+2", format(".2g").apply(100))
assertEquals("100", format(".3g").apply(100))
assertEquals("100", format(".5g").apply(100))
assertEquals("100.2", format(".5g").apply(100.2))
assertEquals("0.002", format(".2g").apply(0.002))
}

@Test
Expand Down
Loading

0 comments on commit de139f5

Please sign in to comment.