fix(content-ranking): 텍스트 크기 기준을 추가한다

This commit is contained in:
2026-07-10 10:16:27 +09:00
parent 991d70f22b
commit e77d0a1d5b
2 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
package kr.co.vividnext.sodalive.v2.widget.contentranking
data class ContentRankingTextStyle(
val rankTextSizeSp: Float,
val titleTextSizeSp: Float,
val creatorTextSizeSp: Float,
val deltaTextSizeSp: Float
) {
companion object {
fun large(scale: Float): ContentRankingTextStyle = baseline(96f, 22f, 12f, scale)
fun mediumGrid(scale: Float): ContentRankingTextStyle = baseline(54f, 22f, 12f, scale)
fun smallGrid(scale: Float): ContentRankingTextStyle = baseline(36f, 14f, 12f, scale)
fun horizontal(scale: Float): ContentRankingTextStyle = baseline(40f, 18f, 14f, scale)
private fun baseline(
rankTextSizeSp: Float,
titleTextSizeSp: Float,
creatorTextSizeSp: Float,
scale: Float
) = ContentRankingTextStyle(
rankTextSizeSp = rankTextSizeSp * scale,
titleTextSizeSp = titleTextSizeSp * scale,
creatorTextSizeSp = creatorTextSizeSp * scale,
deltaTextSizeSp = 16f * scale
)
}
}

View File

@@ -0,0 +1,61 @@
package kr.co.vividnext.sodalive.v2.widget.contentranking
import org.junit.Assert.assertEquals
import org.junit.Test
class ContentRankingResponsiveSizeTest {
@Test
fun `402dp 이상 scale에서는 large baseline text size를 유지한다`() {
val size = ContentRankingTextStyle.large(scale = 1f)
assertEquals(96f, size.rankTextSizeSp, 0.0001f)
assertEquals(22f, size.titleTextSizeSp, 0.0001f)
assertEquals(12f, size.creatorTextSizeSp, 0.0001f)
assertEquals(16f, size.deltaTextSizeSp, 0.0001f)
}
@Test
fun `402dp 이상 scale에서는 medium grid baseline text size를 유지한다`() {
val size = ContentRankingTextStyle.mediumGrid(scale = 1f)
assertEquals(54f, size.rankTextSizeSp, 0.0001f)
assertEquals(22f, size.titleTextSizeSp, 0.0001f)
assertEquals(12f, size.creatorTextSizeSp, 0.0001f)
assertEquals(16f, size.deltaTextSizeSp, 0.0001f)
}
@Test
fun `402dp 이상 scale에서는 small grid baseline text size를 유지한다`() {
val size = ContentRankingTextStyle.smallGrid(scale = 1f)
assertEquals(36f, size.rankTextSizeSp, 0.0001f)
assertEquals(14f, size.titleTextSizeSp, 0.0001f)
assertEquals(12f, size.creatorTextSizeSp, 0.0001f)
assertEquals(16f, size.deltaTextSizeSp, 0.0001f)
}
@Test
fun `402dp 이상 scale에서는 horizontal baseline text size를 유지한다`() {
val size = ContentRankingTextStyle.horizontal(scale = 1f)
assertEquals(40f, size.rankTextSizeSp, 0.0001f)
assertEquals(18f, size.titleTextSizeSp, 0.0001f)
assertEquals(14f, size.creatorTextSizeSp, 0.0001f)
assertEquals(16f, size.deltaTextSizeSp, 0.0001f)
}
@Test
fun `402dp 미만 scale에서는 baseline text size에 scale을 곱한다`() {
val scale = 360f / 402f
val large = ContentRankingTextStyle.large(scale)
val small = ContentRankingTextStyle.smallGrid(scale)
assertEquals(96f * scale, large.rankTextSizeSp, 0.0001f)
assertEquals(22f * scale, large.titleTextSizeSp, 0.0001f)
assertEquals(12f * scale, large.creatorTextSizeSp, 0.0001f)
assertEquals(36f * scale, small.rankTextSizeSp, 0.0001f)
assertEquals(14f * scale, small.titleTextSizeSp, 0.0001f)
assertEquals(12f * scale, small.creatorTextSizeSp, 0.0001f)
}
}