115 lines
No EOL
3.9 KiB
Kotlin
115 lines
No EOL
3.9 KiB
Kotlin
// StyleUtilsTest.kt
|
|
package com.aryan.reader.paginatedreader
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.unit.isUnspecified
|
|
import com.google.common.truth.Truth.assertThat
|
|
import org.junit.Test
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
import org.junit.runner.RunWith
|
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
class StyleUtilsTest {
|
|
|
|
private val baseFontSizeSp = 16f
|
|
private val density = 2.0f
|
|
private val containerWidthPx = 1000
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesPxValues() {
|
|
assertThat(parseCssSizeToDp("100px", baseFontSizeSp, density, containerWidthPx)).isEqualTo(50.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesEmValues() {
|
|
assertThat(parseCssSizeToDp("1.5em", baseFontSizeSp, density, containerWidthPx)).isEqualTo(24.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesRemValues() {
|
|
assertThat(parseCssSizeToDp("2rem", baseFontSizeSp, density, containerWidthPx)).isEqualTo(32.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesPtValues() {
|
|
assertThat(parseCssSizeToDp("12pt", baseFontSizeSp, density, containerWidthPx).value).isWithin(0.01f).of(8.0f)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesPercentageValues() {
|
|
// 50% of 1000px = 500px. 500px / 2.0 density = 250dp
|
|
assertThat(parseCssSizeToDp("50%", baseFontSizeSp, density, containerWidthPx)).isEqualTo(250.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_returns0ForInvalidInput() {
|
|
assertThat(parseCssSizeToDp("invalid", baseFontSizeSp, density, containerWidthPx)).isEqualTo(0.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesZeroDensity() {
|
|
assertThat(parseCssSizeToDp("100px", baseFontSizeSp, 0f, containerWidthPx)).isEqualTo(0.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesZeroContainerWidthForPercentage() {
|
|
assertThat(parseCssSizeToDp("50%", baseFontSizeSp, density, 0)).isEqualTo(0.dp)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssSizeToDp_handlesValuesWithWhitespace() {
|
|
assertThat(parseCssSizeToDp(" 1.5em ", baseFontSizeSp, density, containerWidthPx)).isEqualTo(24.dp)
|
|
}
|
|
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesPxValues() {
|
|
val result = parseCssDimensionToTextUnit("100px", containerWidthPx, density)
|
|
assertThat(result.isSp).isTrue()
|
|
assertThat(result.value).isWithin(0.01f).of(50f)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesEmValues() {
|
|
val result = parseCssDimensionToTextUnit("1.5em", containerWidthPx, density)
|
|
assertThat(result.isEm).isTrue()
|
|
assertThat(result.value).isEqualTo(1.5f)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesRemValues() {
|
|
// rem is treated as em
|
|
val result = parseCssDimensionToTextUnit("2rem", containerWidthPx, density)
|
|
assertThat(result.isEm).isTrue()
|
|
assertThat(result.value).isEqualTo(2f)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesPtValues() {
|
|
val result = parseCssDimensionToTextUnit("12pt", containerWidthPx, density)
|
|
assertThat(result.isSp).isTrue()
|
|
assertThat(result.value).isWithin(0.01f).of(8.0f)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesPercentageValues() {
|
|
val result = parseCssDimensionToTextUnit("50%", containerWidthPx, density)
|
|
assertThat(result.isSp).isTrue()
|
|
assertThat(result.value).isWithin(0.01f).of(250f)
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_returnsUnspecifiedForInvalidInput() {
|
|
assertThat(parseCssDimensionToTextUnit("invalid", containerWidthPx, density).isUnspecified).isTrue()
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesZeroDensity() {
|
|
assertThat(parseCssDimensionToTextUnit("100px", containerWidthPx, 0f).isUnspecified).isTrue()
|
|
}
|
|
|
|
@Test
|
|
fun parseCssDimensionToTextUnit_handlesZeroContainerWidthForPercentage() {
|
|
assertThat(parseCssDimensionToTextUnit("50%", 0, density).isUnspecified).isTrue()
|
|
}
|
|
} |