Files
2025-02-24 16:37:25 +03:00

61 lines
1.9 KiB
Swift

import LayoutKit
import VGSL
import XCTest
final class ResizableBlockMeasureTests: XCTestCase {
func test_FillsAvailableSpace() {
var blockMeasure = ResizableBlockMeasure(
resizableBlockCount: 11,
lengthAvailablePerWeightUnit: 20.0 / 11,
lengthAvailableForResizableBlocks: 20
)
var totalLength: CGFloat = 0
for _ in 0..<11 {
let blockLength = blockMeasure.measureNext(.resizable(LayoutTrait.Weight(rawValue: 1)!))
XCTAssertTrue(blockLength.isApproximatelyEqualTo(blockLength.flooredToScreenScale))
totalLength += blockLength
}
XCTAssertTrue(totalLength.isApproximatelyEqualTo(20))
}
func test_DistributedEvenly() {
var blockMeasure = ResizableBlockMeasure(
resizableBlockCount: 3,
lengthAvailablePerWeightUnit: 10,
lengthAvailableForResizableBlocks: 1000
)
XCTAssertTrue(
blockMeasure.measureNext(.resizable(LayoutTrait.Weight(rawValue: 10)!))
.isApproximatelyEqualTo(100)
)
XCTAssertTrue(blockMeasure.measureNext(.nonResizable).isApproximatelyEqualTo(0))
XCTAssertTrue(blockMeasure.measureNext(.nonResizable).isApproximatelyEqualTo(0))
XCTAssertTrue(
blockMeasure.measureNext(.resizable(LayoutTrait.Weight(rawValue: 65)!))
.isApproximatelyEqualTo(650)
)
XCTAssertTrue(blockMeasure.measureNext(.nonResizable).isApproximatelyEqualTo(0))
XCTAssertTrue(
blockMeasure.measureNext(.resizable(LayoutTrait.Weight(rawValue: 25)!))
.isApproximatelyEqualTo(250)
)
}
func test_ResizableWithMargins() {
let margin = 50.0
var blockMeasure = ResizableBlockMeasure(
resizableBlockCount: 3,
lengthAvailablePerWeightUnit: 10,
lengthAvailableForResizableBlocks: 1000
)
XCTAssertTrue(
blockMeasure.measureNext(.resizable(LayoutTrait.Weight(rawValue: 10)!, reservedSpace: margin))
.isApproximatelyEqualTo(100 + margin)
)
}
}