feat(widget): 공통 탭바와 타이틀바 컴포넌트를 추가한다

This commit is contained in:
2026-05-19 20:29:42 +09:00
parent 3121d9dca9
commit 4457941193
21 changed files with 1360 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
package kr.co.vividnext.sodalive.v2.widget
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertThrows
import org.junit.Assert.assertTrue
import org.junit.Test
class CapsuleTabSelectionStateTest {
@Test
fun `create keeps one selected tab with one or more menus`() {
val state = CapsuleTabSelectionState.create(listOf("추천", "랭킹", "팔로잉"), selectedIndex = 2)
assertEquals(listOf("추천", "랭킹", "팔로잉"), state.menus)
assertEquals(2, state.selectedIndex)
assertFalse(state.isSelected(0))
assertFalse(state.isSelected(1))
assertTrue(state.isSelected(2))
}
@Test
fun `create rejects empty menus`() {
assertThrows(IllegalArgumentException::class.java) {
CapsuleTabSelectionState.create(emptyList())
}
}
@Test
fun `create normalizes out of range selected index to first menu`() {
val state = CapsuleTabSelectionState.create(listOf("추천", "랭킹"), selectedIndex = 5)
assertEquals(0, state.selectedIndex)
assertTrue(state.isSelected(0))
assertFalse(state.isSelected(1))
}
@Test
fun `select changes selected tab`() {
val state = CapsuleTabSelectionState.create(listOf("추천", "랭킹", "팔로잉"))
.select(1)
assertEquals(1, state.selectedIndex)
assertFalse(state.isSelected(0))
assertTrue(state.isSelected(1))
assertFalse(state.isSelected(2))
}
}

View File

@@ -0,0 +1,51 @@
package kr.co.vividnext.sodalive.v2.widget
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertThrows
import org.junit.Assert.assertTrue
import org.junit.Test
class TextTabSelectionStateTest {
@Test
fun `create keeps one selected tab within one to three menus`() {
val state = TextTabSelectionState.create(listOf("", "랭킹", "마이"), selectedIndex = 1)
assertEquals(listOf("", "랭킹", "마이"), state.menus)
assertEquals(1, state.selectedIndex)
assertFalse(state.isSelected(0))
assertTrue(state.isSelected(1))
assertFalse(state.isSelected(2))
}
@Test
fun `create rejects empty or more than three menus`() {
assertThrows(IllegalArgumentException::class.java) {
TextTabSelectionState.create(emptyList())
}
assertThrows(IllegalArgumentException::class.java) {
TextTabSelectionState.create(listOf("1", "2", "3", "4"))
}
}
@Test
fun `create normalizes out of range selected index to first menu`() {
val state = TextTabSelectionState.create(listOf("", "랭킹"), selectedIndex = 3)
assertEquals(0, state.selectedIndex)
assertTrue(state.isSelected(0))
assertFalse(state.isSelected(1))
}
@Test
fun `select changes selected tab and keeps only one selected`() {
val state = TextTabSelectionState.create(listOf("", "랭킹", "마이"))
.select(2)
assertEquals(2, state.selectedIndex)
assertFalse(state.isSelected(0))
assertFalse(state.isSelected(1))
assertTrue(state.isSelected(2))
}
}