mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
Fixed warnings for empty containers
commit_hash:a787cf0d48bcd5e06c394050aebebf50bfa0099d
This commit is contained in:
@@ -13,6 +13,11 @@ struct DivContainerSizeModifier: DivSizeModifier {
|
||||
orientation: DivContainer.Orientation
|
||||
) {
|
||||
let items = container.nonNilItems
|
||||
if items.isEmpty {
|
||||
shouldOverrideWidth = false
|
||||
shouldOverrideHeight = false
|
||||
return
|
||||
}
|
||||
|
||||
let isWrapContentWidth = container.getTransformedWidth(context).isIntrinsic
|
||||
switch orientation {
|
||||
|
||||
@@ -42,6 +42,29 @@ final class DivContainerExtensionsTests: XCTestCase {
|
||||
assertEqual(block, expectedBlock)
|
||||
}
|
||||
|
||||
func test_EmptyItems_WrapContent() throws {
|
||||
let block = makeBlock(
|
||||
divContainer(
|
||||
items: [],
|
||||
width: wrapContentSize()
|
||||
)
|
||||
)
|
||||
|
||||
let expectedBlock = try StateBlock(
|
||||
child: DecoratingBlock(
|
||||
child: ContainerBlock(
|
||||
layoutDirection: .vertical,
|
||||
widthTrait: .intrinsic,
|
||||
children: []
|
||||
),
|
||||
accessibilityElement: .default
|
||||
),
|
||||
ids: []
|
||||
)
|
||||
|
||||
assertEqual(block, expectedBlock)
|
||||
}
|
||||
|
||||
func test_WithItems() throws {
|
||||
let block = makeBlock(
|
||||
divContainer(
|
||||
@@ -316,6 +339,58 @@ final class DivContainerExtensionsTests: XCTestCase {
|
||||
assertEqual(block, expectedBlock)
|
||||
}
|
||||
|
||||
func test_WrapContent_MatchParentItem() throws {
|
||||
let context = DivBlockModelingContext()
|
||||
let block = makeBlock(
|
||||
divContainer(
|
||||
items: [
|
||||
divText(
|
||||
text: "Hello!",
|
||||
width: matchParentSize()
|
||||
),
|
||||
],
|
||||
width: wrapContentSize()
|
||||
),
|
||||
context: context,
|
||||
ignoreErrors: true
|
||||
)
|
||||
|
||||
let expectedBlock = try StateBlock(
|
||||
child: DecoratingBlock(
|
||||
child: ContainerBlock(
|
||||
layoutDirection: .vertical,
|
||||
widthTrait: .intrinsic,
|
||||
children: [
|
||||
DecoratingBlock(
|
||||
child: textBlock(
|
||||
widthTrait: .intrinsic(
|
||||
constrained: true,
|
||||
minSize: 0,
|
||||
maxSize: .infinity
|
||||
),
|
||||
text: "Hello!"
|
||||
),
|
||||
accessibilityElement: accessibility(
|
||||
traits: .staticText,
|
||||
label: "Hello!"
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
accessibilityElement: .default
|
||||
),
|
||||
ids: []
|
||||
)
|
||||
|
||||
assertEqual(block, expectedBlock)
|
||||
|
||||
assertEqual(context.errorsStorage.errors.count, 1)
|
||||
assertEqual(
|
||||
context.errorsStorage.errors.first?.message,
|
||||
"All items in DivContainer with wrap_content width has match_parent width"
|
||||
)
|
||||
}
|
||||
|
||||
func test_AddsIndexedParentPathToItems() throws {
|
||||
let block = try makeBlock(
|
||||
fromFile: "item_with_action"
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
@testable import DivKit
|
||||
@testable import LayoutKit
|
||||
|
||||
import Foundation
|
||||
|
||||
@testable import LayoutKit
|
||||
import VGSL
|
||||
import XCTest
|
||||
|
||||
func makeBlock(
|
||||
_ div: Div,
|
||||
context: DivBlockModelingContext = DivBlockModelingContext()
|
||||
context: DivBlockModelingContext = DivBlockModelingContext(),
|
||||
ignoreErrors: Bool = false
|
||||
) -> StateBlock {
|
||||
try! divData(div).makeBlock(context: context) as! StateBlock
|
||||
let block = try! divData(div).makeBlock(context: context) as! StateBlock
|
||||
if !ignoreErrors, let error = context.errorsStorage.errors.first {
|
||||
XCTFail(error.message)
|
||||
}
|
||||
return block
|
||||
}
|
||||
|
||||
func separatorBlock() -> Block {
|
||||
@@ -18,9 +22,12 @@ func separatorBlock() -> Block {
|
||||
)
|
||||
}
|
||||
|
||||
func textBlock(text: String) -> Block {
|
||||
func textBlock(
|
||||
widthTrait: LayoutTrait = .resizable,
|
||||
text: String
|
||||
) -> Block {
|
||||
TextBlock(
|
||||
widthTrait: .resizable,
|
||||
widthTrait: widthTrait,
|
||||
text: text.withTypo(),
|
||||
verticalAlignment: .leading,
|
||||
accessibilityElement: nil
|
||||
|
||||
@@ -481,6 +481,10 @@ func fixedSize(_ value: Int) -> DivSize {
|
||||
.divFixedSize(DivFixedSize(value: .value(value)))
|
||||
}
|
||||
|
||||
func matchParentSize() -> DivSize {
|
||||
.divMatchParentSize(DivMatchParentSize())
|
||||
}
|
||||
|
||||
func wrapContentSize() -> DivSize {
|
||||
.divWrapContentSize(DivWrapContentSize())
|
||||
}
|
||||
|
||||
@@ -156,7 +156,9 @@ public final class ContainerBlock: BlockWithLayout {
|
||||
self.clipContent = clipContent
|
||||
self.accessibilityElement = accessibilityElement
|
||||
|
||||
try validateLayoutTraits()
|
||||
if !children.isEmpty {
|
||||
try validateLayoutTraits()
|
||||
}
|
||||
}
|
||||
|
||||
public func ascent(forWidth width: CGFloat) -> CGFloat? {
|
||||
|
||||
Reference in New Issue
Block a user