feat(banner): 배너 시각 정렬을 보완한다
This commit is contained in:
@@ -173,11 +173,63 @@ class BannerViewTest {
|
||||
|
||||
assertEquals(20.dpToPx(), recyclerView.paddingLeft)
|
||||
assertEquals(20.dpToPx(), recyclerView.paddingRight)
|
||||
assertEquals(8.dpToPx(), itemOffset.right)
|
||||
assertEquals(4.dpToPx(), itemOffset.left)
|
||||
assertEquals(4.dpToPx(), itemOffset.right)
|
||||
assertEquals(8.dpToPx(), itemOffset.left + itemOffset.right)
|
||||
assertEquals(362.dpToPx(), holder.itemView.layoutParams.width)
|
||||
assertEquals(362.dpToPx(), holder.itemView.layoutParams.height)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `배너 view는 carousel item 간격을 좌우 대칭으로 적용한다`() {
|
||||
val view = inflateBannerView()
|
||||
val recyclerView = view.findViewById<RecyclerView>(R.id.rv_banner)
|
||||
|
||||
view.setItems(listOf(sampleItem("1"), sampleItem("2")))
|
||||
view.measure(exactly(402.dpToPx()), exactly(402.dpToPx()))
|
||||
view.layout(0, 0, 402.dpToPx(), 402.dpToPx())
|
||||
val holder = recyclerView.adapter!!.onCreateViewHolder(recyclerView, 0)
|
||||
recyclerView.adapter!!.onBindViewHolder(holder, 0)
|
||||
val itemOffset = Rect()
|
||||
recyclerView.getItemDecorationAt(0).getItemOffsets(itemOffset, holder.itemView, recyclerView, RecyclerView.State())
|
||||
|
||||
assertEquals(4.dpToPx(), itemOffset.left)
|
||||
assertEquals(4.dpToPx(), itemOffset.right)
|
||||
assertEquals(8.dpToPx(), itemOffset.left + itemOffset.right)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `배너 view counter는 현재 item 내부 우상단 기준 margin을 적용한다`() {
|
||||
val view = inflateBannerView()
|
||||
|
||||
view.setItems(listOf(sampleItem("1"), sampleItem("2")))
|
||||
view.measure(exactly(402.dpToPx()), exactly(402.dpToPx()))
|
||||
view.layout(0, 0, 402.dpToPx(), 402.dpToPx())
|
||||
|
||||
val counter = view.findViewById<View>(R.id.layout_banner_counter)
|
||||
val params = counter.layoutParams as FrameLayout.LayoutParams
|
||||
assertEquals(14.dpToPx(), params.topMargin)
|
||||
assertEquals(34.dpToPx(), params.marginEnd)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `배너 view는 최초 layout 직후 현재 item 중심을 view 중심에 맞춘다`() {
|
||||
val view = inflateBannerView()
|
||||
val recyclerView = view.findViewById<RecyclerView>(R.id.rv_banner)
|
||||
|
||||
view.setItems(listOf(sampleItem("1"), sampleItem("2"), sampleItem("3")))
|
||||
view.measure(exactly(402.dpToPx()), exactly(402.dpToPx()))
|
||||
view.layout(0, 0, 402.dpToPx(), 402.dpToPx())
|
||||
|
||||
val layoutManager = requireNotNull(recyclerView.layoutManager)
|
||||
val currentItem = requireNotNull(layoutManager.findViewByPosition(view.currentAdapterPositionForTest()))
|
||||
val itemCenter = (currentItem.left + currentItem.right) / 2
|
||||
val viewCenter = view.width / 2
|
||||
assertEquals(viewCenter, itemCenter)
|
||||
assertEquals(20.dpToPx(), currentItem.left)
|
||||
assertEquals(20.dpToPx(), view.width - currentItem.right)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `배너 view는 wrap content 높이면 402dp 폭 기준 362dp 높이로 측정된다`() {
|
||||
val view = inflateBannerView()
|
||||
@@ -221,6 +273,7 @@ class BannerViewTest {
|
||||
val itemOffset = Rect()
|
||||
recyclerView.getItemDecorationAt(0).getItemOffsets(itemOffset, holder.itemView, recyclerView, RecyclerView.State())
|
||||
|
||||
assertEquals(0, itemOffset.left)
|
||||
assertEquals(0, itemOffset.right)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user