From baabce84100d752e4399d0126effb2c7fbd197bf Mon Sep 17 00:00:00 2001 From: Bryan Keller Date: Wed, 31 Jul 2024 01:12:53 -0700 Subject: [PATCH] Fix pixel alignment math --- CHANGELOG.md | 1 + Sources/Internal/FrameProvider.swift | 4 +- Sources/Internal/ScreenPixelAlignment.swift | 22 +- Tests/FrameProviderTests.swift | 6 +- Tests/ScreenPixelAlignmentTests.swift | 20 +- Tests/VisibleItemsProviderTests.swift | 946 ++++++++++---------- 6 files changed, 497 insertions(+), 502 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d639451..e599f00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed an issue that could cause accessibility focus to shift unexpectedly +- Fixed a screen-pixel alignment issue ### Changed - Rewrote accessibility code to avoid posting notifications, which causes poor Voice Over performance and odd focus bugs diff --git a/Sources/Internal/FrameProvider.swift b/Sources/Internal/FrameProvider.swift index deeae7c..1dcaecc 100644 --- a/Sources/Internal/FrameProvider.swift +++ b/Sources/Internal/FrameProvider.swift @@ -230,7 +230,7 @@ final class FrameProvider { let origin: CGPoint if distanceFromAdjacentDay < 0 { let proposedX = adjacentDayFrame.minX - content.horizontalDayMargin - daySize.width - if proposedX > minX || proposedX.isEqual(to: minX, threshold: 1 / scale) { + if proposedX > minX || proposedX.isEqual(to: minX, screenScale: scale) { origin = CGPoint(x: proposedX, y: adjacentDayFrame.minY) } else { origin = CGPoint( @@ -239,7 +239,7 @@ final class FrameProvider { } } else { let proposedX = adjacentDayFrame.maxX + content.horizontalDayMargin - if proposedX < maxX || proposedX.isEqual(to: maxX, threshold: 1 / scale) { + if proposedX < maxX || proposedX.isEqual(to: maxX, screenScale: scale) { origin = CGPoint(x: proposedX, y: adjacentDayFrame.minY) } else { origin = CGPoint(x: minX, y: adjacentDayFrame.maxY + content.verticalDayMargin) diff --git a/Sources/Internal/ScreenPixelAlignment.swift b/Sources/Internal/ScreenPixelAlignment.swift index ae79f77..1b0fa79 100644 --- a/Sources/Internal/ScreenPixelAlignment.swift +++ b/Sources/Internal/ScreenPixelAlignment.swift @@ -22,10 +22,12 @@ extension CGFloat { (self * scale).rounded() / scale } - /// Tests `self` for approximate equality using the threshold value. For example, 1.48 equals 1.52 if the threshold is 0.05. - /// `threshold` will be treated as a positive value by taking its absolute value. - func isEqual(to rhs: CGFloat, threshold: CGFloat) -> Bool { - abs(self - rhs) <= abs(threshold) + /// Tests `self` for approximate equality, first rounding the operands to be pixel-aligned for a screen with the given + /// `screenScale`. For example, 1.48 equals 1.52 if the `screenScale` is `2`. + func isEqual(to rhs: CGFloat, screenScale: CGFloat) -> Bool { + let lhs = alignedToPixel(forScreenWithScale: screenScale) + let rhs = rhs.alignedToPixel(forScreenWithScale: screenScale) + return lhs == rhs } } @@ -35,13 +37,11 @@ extension CGRect { /// Rounds a `CGRect`'s `origin` and `size` values so that they're aligned on pixel boundaries for a screen with the provided /// scale. func alignedToPixels(forScreenWithScale scale: CGFloat) -> CGRect { - let alignedX = minX.alignedToPixel(forScreenWithScale: scale) - let alignedY = minY.alignedToPixel(forScreenWithScale: scale) - return CGRect( - x: alignedX, - y: alignedY, - width: maxX.alignedToPixel(forScreenWithScale: scale) - alignedX, - height: maxY.alignedToPixel(forScreenWithScale: scale) - alignedY) + CGRect( + x: minX.alignedToPixel(forScreenWithScale: scale), + y: minY.alignedToPixel(forScreenWithScale: scale), + width: width.alignedToPixel(forScreenWithScale: scale), + height: height.alignedToPixel(forScreenWithScale: scale)) } } diff --git a/Tests/FrameProviderTests.swift b/Tests/FrameProviderTests.swift index 048b28d..9686955 100644 --- a/Tests/FrameProviderTests.swift +++ b/Tests/FrameProviderTests.swift @@ -528,10 +528,10 @@ final class FrameProviderTests: XCTestCase { height: 34.857142857142854) .alignedToPixels(forScreenWithScale: 3) let expectedFrameAfterMiddleDay = CGRect( - x: 187.33333333333334, + x: 187.66666666666666, y: 374.3333333333333, - width: 34.857142857142854, - height: 34.857142857142854) + width: 35, + height: 35) .alignedToPixels(forScreenWithScale: 3) XCTAssert(frameBeforeMiddleDay == expectedFrameBeforeMiddleDay, "Incorrect frame for day.") XCTAssert(frameAfterMiddleDay == expectedFrameAfterMiddleDay, "Incorrect frame for day.") diff --git a/Tests/ScreenPixelAlignmentTests.swift b/Tests/ScreenPixelAlignmentTests.swift index b98b92e..4eaed18 100644 --- a/Tests/ScreenPixelAlignmentTests.swift +++ b/Tests/ScreenPixelAlignmentTests.swift @@ -108,7 +108,7 @@ final class ScreenPixelAlignmentTests: XCTestCase { func test2xScaleRectAlignment() { let rect = CGRect(x: 5.299999, y: -19.1994, width: 20.25, height: 0.76) - let expectedRect = CGRect(x: 5.5, y: -19, width: 20, height: 0.5) + let expectedRect = CGRect(x: 5.5, y: -19, width: 20.5, height: 1) XCTAssert( rect.alignedToPixels(forScreenWithScale: 2) == expectedRect, "Incorrect screen pixel alignment") @@ -116,7 +116,7 @@ final class ScreenPixelAlignmentTests: XCTestCase { func test3xScaleRectAlignment() { let rect = CGRect(x: 71.13, y: 71.19, width: 20.25, height: 2) - let expectedRect = CGRect(x: 71, y: 71.33333333333333, width: 20.33333333333333, height: 2) + let expectedRect = CGRect(x: 71, y: 71.33333333333333, width: 20.333333333333332, height: 2) XCTAssert( rect.alignedToPixels(forScreenWithScale: 3) == expectedRect, "Incorrect screen pixel alignment") @@ -125,17 +125,11 @@ final class ScreenPixelAlignmentTests: XCTestCase { // MARK: CGFloat Approximate Comparison Tests func testApproximateEquality() { - XCTAssert(CGFloat(1.48).isEqual(to: 1.52, threshold: 0.05)) - XCTAssert(!CGFloat(1.48).isEqual(to: 1.53, threshold: 0.05)) - - XCTAssert(CGFloat(1).isEqual(to: 10, threshold: 9)) - XCTAssert(!CGFloat(1).isEqual(to: 11, threshold: 9)) - - XCTAssert(CGFloat(1).isEqual(to: 10, threshold: 9)) - XCTAssert(!CGFloat(1).isEqual(to: 11, threshold: 9)) - - XCTAssert(CGFloat(1.333).isEqual(to: 1.666, threshold: 1 / 3)) - XCTAssert(!CGFloat(1.332).isEqual(to: 1.666, threshold: 1 / 3)) + XCTAssert(CGFloat(1.48).isEqual(to: 1.52, screenScale: 2)) + XCTAssert(!CGFloat(1).isEqual(to: 10, screenScale: 9)) + XCTAssert(!CGFloat(1).isEqual(to: 10, screenScale: 9)) + XCTAssert(!CGFloat(1).isEqual(to: 9, screenScale: 9)) + XCTAssert(!CGFloat(1.333).isEqual(to: 1.666, screenScale: 3)) } } diff --git a/Tests/VisibleItemsProviderTests.swift b/Tests/VisibleItemsProviderTests.swift index ebb6bb5..efaa28b 100644 --- a/Tests/VisibleItemsProviderTests.swift +++ b/Tests/VisibleItemsProviderTests.swift @@ -138,7 +138,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 400), scrollPosition: .firstFullyVisiblePosition) XCTAssert( - dayItem1.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 400.0, 36.0, 35.5)]", + dayItem1.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 400.0, 35.5, 35.5)]", "Unexpected initial day item.") let dayItem2 = verticalVisibleItemsProvider.anchorDayItem( @@ -146,7 +146,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 200), scrollPosition: .lastFullyVisiblePosition) XCTAssert( - dayItem2.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 644.5, 36.0, 35.5)]", + dayItem2.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 644.5, 35.5, 35.5)]", "Unexpected initial day item.") let dayItem3 = verticalVisibleItemsProvider.anchorDayItem( @@ -154,7 +154,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 600), scrollPosition: .centered) XCTAssert( - dayItem3.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 822.0, 36.0, 36.0)]", + dayItem3.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 822.0, 35.5, 35.5)]", "Unexpected initial day item.") } @@ -164,7 +164,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 400), scrollPosition: .lastFullyVisiblePosition) XCTAssert( - dayItem1.description == "[itemType: .layoutItemType(.day(2020-01-01)), frame: (142.0, 535.5, 36.0, 36.0)]", + dayItem1.description == "[itemType: .layoutItemType(.day(2020-01-01)), frame: (142.0, 535.5, 35.5, 35.5)]", "Unexpected initial day item.") let dayItem2 = verticalVisibleItemsProvider.anchorDayItem( @@ -188,7 +188,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 600, y: 0), scrollPosition: .lastFullyVisiblePosition) XCTAssert( - dayItem4.description == "[itemType: .layoutItemType(.day(2020-01-01)), frame: (733.5, 183.0, 33.0, 32.5)]", + dayItem4.description == "[itemType: .layoutItemType(.day(2020-01-01)), frame: (733.5, 183.0, 33.0, 33.0)]", "Unexpected initial day item.") let dayItem5 = horizontalVisibleItemsProvider.anchorDayItem( @@ -196,7 +196,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 100, y: 0), scrollPosition: .firstFullyVisiblePosition) XCTAssert( - dayItem5.description == "[itemType: .layoutItemType(.day(2020-12-28)), frame: (168.0, 394.5, 32.5, 32.5)]", + dayItem5.description == "[itemType: .layoutItemType(.day(2020-12-28)), frame: (168.0, 394.5, 33.0, 33.0)]", "Unexpected initial day item.") } @@ -208,7 +208,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 0), scrollPosition: .firstFullyVisiblePosition) XCTAssert( - dayItem1.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 35.5, 36.0, 36.0)]", + dayItem1.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 35.5, 35.5, 35.5)]", "Unexpected initial day item.") let dayItem2 = verticalPinnedDaysOfWeekVisibleItemsProvider.anchorDayItem( @@ -216,7 +216,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 100), scrollPosition: .lastFullyVisiblePosition) XCTAssert( - dayItem2.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 544.5, 36.0, 35.5)]", + dayItem2.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 544.5, 35.5, 35.5)]", "Unexpected initial day item.") let dayItem3 = verticalPinnedDaysOfWeekVisibleItemsProvider.anchorDayItem( @@ -224,7 +224,7 @@ final class VisibleItemsProviderTests: XCTestCase { offset: CGPoint(x: 0, y: 1000), scrollPosition: .centered) XCTAssert( - dayItem3.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 1240.0, 36.0, 35.5)]", + dayItem3.description == "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, 1240.0, 35.5, 35.5)]", "Unexpected initial day item.") } @@ -301,77 +301,77 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .dayBackground(2020-02-16), frame: (5.0, 165.0, 35.5, 18.0)]", - "[itemType: .dayBackground(2020-02-17), frame: (50.5, 165.0, 36.0, 18.0)]", + "[itemType: .dayBackground(2020-02-17), frame: (50.5, 165.0, 35.5, 18.0)]", "[itemType: .dayBackground(2020-02-18), frame: (96.5, 165.0, 35.5, 18.0)]", - "[itemType: .dayBackground(2020-02-19), frame: (142.0, 165.0, 36.0, 18.0)]", - "[itemType: .dayBackground(2020-03-11), frame: (142.0, 391.5, 36.0, 18.0)]", + "[itemType: .dayBackground(2020-02-19), frame: (142.0, 165.0, 35.5, 18.0)]", + "[itemType: .dayBackground(2020-03-11), frame: (142.0, 391.5, 35.5, 18.0)]", "[itemType: .dayBackground(2020-03-12), frame: (188.0, 391.5, 35.5, 18.0)]", - "[itemType: .dayBackground(2020-03-13), frame: (233.5, 391.5, 36.0, 18.0)]", + "[itemType: .dayBackground(2020-03-13), frame: (233.5, 391.5, 35.5, 18.0)]", "[itemType: .dayBackground(2020-03-14), frame: (279.5, 391.5, 35.5, 18.0)]", - "[itemType: .dayBackground(2020-03-15), frame: (5.0, 429.5, 35.5, 17.5)]", - "[itemType: .dayBackground(2020-03-16), frame: (50.5, 429.5, 36.0, 17.5)]", - "[itemType: .dayBackground(2020-03-17), frame: (96.5, 429.5, 35.5, 17.5)]", - "[itemType: .dayBackground(2020-03-18), frame: (142.0, 429.5, 36.0, 17.5)]", - "[itemType: .dayBackground(2020-03-19), frame: (188.0, 429.5, 35.5, 17.5)]", + "[itemType: .dayBackground(2020-03-15), frame: (5.0, 429.5, 35.5, 18.0)]", + "[itemType: .dayBackground(2020-03-16), frame: (50.5, 429.5, 35.5, 18.0)]", + "[itemType: .dayBackground(2020-03-17), frame: (96.5, 429.5, 35.5, 18.0)]", + "[itemType: .dayBackground(2020-03-18), frame: (142.0, 429.5, 35.5, 18.0)]", + "[itemType: .dayBackground(2020-03-19), frame: (188.0, 429.5, 35.5, 18.0)]", "[itemType: .dayRange(2020-03-11, 2020-04-05), frame: (5.0, 391.5, 310.0, 370.0)]", "[itemType: .daysOfWeekRowSeparator(2020-3), frame: (-0.0, 332.5, 320.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-4), frame: (0.0, 684.5, 320.0, 1.0)]", "[itemType: .layoutItemType(.day(2020-02-16)), frame: (5.0, 165.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-02-17)), frame: (50.5, 165.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-17)), frame: (50.5, 165.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-02-18)), frame: (96.5, 165.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-02-19)), frame: (142.0, 165.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-19)), frame: (142.0, 165.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-02-20)), frame: (188.0, 165.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-02-21)), frame: (233.5, 165.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-21)), frame: (233.5, 165.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-02-22)), frame: (279.5, 165.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-02-23)), frame: (5.0, 203.0, 35.5, 17.5)]", - "[itemType: .layoutItemType(.day(2020-02-24)), frame: (50.5, 203.0, 36.0, 17.5)]", - "[itemType: .layoutItemType(.day(2020-02-25)), frame: (96.5, 203.0, 35.5, 17.5)]", - "[itemType: .layoutItemType(.day(2020-02-26)), frame: (142.0, 203.0, 36.0, 17.5)]", - "[itemType: .layoutItemType(.day(2020-02-27)), frame: (188.0, 203.0, 35.5, 17.5)]", - "[itemType: .layoutItemType(.day(2020-02-28)), frame: (233.5, 203.0, 36.0, 17.5)]", - "[itemType: .layoutItemType(.day(2020-02-29)), frame: (279.5, 203.0, 35.5, 17.5)]", + "[itemType: .layoutItemType(.day(2020-02-23)), frame: (5.0, 203.0, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-24)), frame: (50.5, 203.0, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-25)), frame: (96.5, 203.0, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-26)), frame: (142.0, 203.0, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-27)), frame: (188.0, 203.0, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-28)), frame: (233.5, 203.0, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-02-29)), frame: (279.5, 203.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-01)), frame: (5.0, 353.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-02)), frame: (50.5, 353.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-02)), frame: (50.5, 353.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-03)), frame: (96.5, 353.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-04)), frame: (142.0, 353.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-04)), frame: (142.0, 353.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-05)), frame: (188.0, 353.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-06)), frame: (233.5, 353.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-06)), frame: (233.5, 353.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-07)), frame: (279.5, 353.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-08)), frame: (5.0, 391.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-09)), frame: (50.5, 391.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-09)), frame: (50.5, 391.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-10)), frame: (96.5, 391.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-12)), frame: (188.0, 391.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-13)), frame: (233.5, 391.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-13)), frame: (233.5, 391.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-14)), frame: (279.5, 391.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-15)), frame: (5.0, 429.5, 35.5, 17.5)]", - "[itemType: .layoutItemType(.day(2020-03-16)), frame: (50.5, 429.5, 36.0, 17.5)]", - "[itemType: .layoutItemType(.day(2020-03-17)), frame: (96.5, 429.5, 35.5, 17.5)]", - "[itemType: .layoutItemType(.day(2020-03-18)), frame: (142.0, 429.5, 36.0, 17.5)]", - "[itemType: .layoutItemType(.day(2020-03-19)), frame: (188.0, 429.5, 35.5, 17.5)]", - "[itemType: .layoutItemType(.day(2020-03-20)), frame: (233.5, 429.5, 36.0, 17.5)]", - "[itemType: .layoutItemType(.day(2020-03-21)), frame: (279.5, 429.5, 35.5, 17.5)]", + "[itemType: .layoutItemType(.day(2020-03-15)), frame: (5.0, 429.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-16)), frame: (50.5, 429.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-17)), frame: (96.5, 429.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-18)), frame: (142.0, 429.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-19)), frame: (188.0, 429.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-20)), frame: (233.5, 429.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-21)), frame: (279.5, 429.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-22)), frame: (5.0, 467.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-23)), frame: (50.5, 467.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-23)), frame: (50.5, 467.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-24)), frame: (96.5, 467.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-25)), frame: (142.0, 467.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-25)), frame: (142.0, 467.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-26)), frame: (188.0, 467.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-27)), frame: (233.5, 467.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-27)), frame: (233.5, 467.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-28)), frame: (279.5, 467.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-29)), frame: (5.0, 505.0, 35.5, 18.0)]", - "[itemType: .layoutItemType(.day(2020-03-30)), frame: (50.5, 505.0, 36.0, 18.0)]", + "[itemType: .layoutItemType(.day(2020-03-30)), frame: (50.5, 505.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.day(2020-03-31)), frame: (96.5, 505.0, 35.5, 18.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-03)), frame: (188.0, 315.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-03)), frame: (5.0, 315.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-03)), frame: (142.0, 315.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-03)), frame: (142.0, 315.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-03)), frame: (279.5, 315.5, 35.5, 18.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-03)), frame: (50.5, 315.5, 36.0, 18.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-03)), frame: (233.5, 315.5, 36.0, 18.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-03)), frame: (50.5, 315.5, 35.5, 18.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-03)), frame: (233.5, 315.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-03)), frame: (96.5, 315.5, 35.5, 18.0)]", "[itemType: .layoutItemType(.monthHeader(2020-03)), frame: (0.0, 235.5, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-04)), frame: (0.0, 538.0, 320.0, 100.0)]", "[itemType: .monthBackground(2020-02), frame: (0.0, -74.0, 320.0, 302.0)]", - "[itemType: .monthBackground(2020-03), frame: (-0.0, 228.0, 320.0, 302.5)]", + "[itemType: .monthBackground(2020-03), frame: (-0.0, 228.0, 320.0, 302.0)]", "[itemType: .monthBackground(2020-04), frame: (0.0, 530.5, 320.0, 352.0)]", ] @@ -381,7 +381,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 36.0, 18.0)]", + .description == "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 35.5, 18.0)]", "Unexpected centermost layout item.") } @@ -394,68 +394,68 @@ final class VisibleItemsProviderTests: XCTestCase { extendLayoutRegion: false) let expectedVisibleItemDescriptions: Set = [ - "[itemType: .dayBackground(2020-03-11), frame: (142.0, 391.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-03-11), frame: (142.0, 391.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-03-12), frame: (188.0, 391.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-03-13), frame: (233.5, 391.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-03-13), frame: (233.5, 391.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-03-14), frame: (279.5, 391.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-03-15), frame: (5.0, 447.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-03-16), frame: (50.5, 447.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-03-17), frame: (96.5, 447.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-03-18), frame: (142.0, 447.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-03-19), frame: (188.0, 447.0, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-03-15), frame: (5.0, 447.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-03-16), frame: (50.5, 447.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-03-17), frame: (96.5, 447.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-03-18), frame: (142.0, 447.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-03-19), frame: (188.0, 447.0, 35.5, 35.5)]", "[itemType: .dayRange(2020-03-11, 2020-04-05), frame: (5.0, 391.5, 310.0, 495.0)]", "[itemType: .daysOfWeekRowSeparator(2020-3), frame: (0.0, 314.5, 320.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-4), frame: (0.0, 774.0, 320.0, 1.0)]", "[itemType: .layoutItemType(.day(2020-02-23)), frame: (5.0, 149.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-02-24)), frame: (50.5, 149.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-02-24)), frame: (50.5, 149.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-02-25)), frame: (96.5, 149.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-02-26)), frame: (142.0, 149.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-02-26)), frame: (142.0, 149.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-02-27)), frame: (188.0, 149.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-02-28)), frame: (233.5, 149.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-02-28)), frame: (233.5, 149.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-02-29)), frame: (279.5, 149.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-01)), frame: (5.0, 335.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-02)), frame: (50.5, 335.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-03)), frame: (96.5, 335.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-04)), frame: (142.0, 335.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-05)), frame: (188.0, 335.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-06)), frame: (233.5, 335.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-07)), frame: (279.5, 335.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-03-01)), frame: (5.0, 335.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-02)), frame: (50.5, 335.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-03)), frame: (96.5, 335.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-04)), frame: (142.0, 335.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-05)), frame: (188.0, 335.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-06)), frame: (233.5, 335.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-07)), frame: (279.5, 335.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-08)), frame: (5.0, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-09)), frame: (50.5, 391.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-09)), frame: (50.5, 391.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-10)), frame: (96.5, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-12)), frame: (188.0, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-13)), frame: (233.5, 391.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-13)), frame: (233.5, 391.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-14)), frame: (279.5, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-15)), frame: (5.0, 447.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-16)), frame: (50.5, 447.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-17)), frame: (96.5, 447.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-18)), frame: (142.0, 447.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-19)), frame: (188.0, 447.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-20)), frame: (233.5, 447.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-21)), frame: (279.5, 447.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-03-15)), frame: (5.0, 447.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-16)), frame: (50.5, 447.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-17)), frame: (96.5, 447.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-18)), frame: (142.0, 447.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-19)), frame: (188.0, 447.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-20)), frame: (233.5, 447.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-21)), frame: (279.5, 447.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-22)), frame: (5.0, 503.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-23)), frame: (50.5, 503.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-23)), frame: (50.5, 503.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-24)), frame: (96.5, 503.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-25)), frame: (142.0, 503.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-25)), frame: (142.0, 503.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-26)), frame: (188.0, 503.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-27)), frame: (233.5, 503.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-27)), frame: (233.5, 503.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-03-28)), frame: (279.5, 503.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-03-29)), frame: (5.0, 558.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-30)), frame: (50.5, 558.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-03-31)), frame: (96.5, 558.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-03-29)), frame: (5.0, 558.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-30)), frame: (50.5, 558.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-03-31)), frame: (96.5, 558.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-03)), frame: (188.0, 280.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-03)), frame: (5.0, 280.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-03)), frame: (142.0, 280.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-03)), frame: (142.0, 280.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-03)), frame: (279.5, 280.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-03)), frame: (50.5, 280.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-03)), frame: (233.5, 280.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-03)), frame: (50.5, 280.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-03)), frame: (233.5, 280.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-03)), frame: (96.5, 280.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-03)), frame: (0.0, 200.0, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-04)), frame: (0.0, 609.5, 320.0, 100.0)]", "[itemType: .monthBackground(2020-02), frame: (0.0, -217.0, 320.0, 409.5)]", "[itemType: .monthBackground(2020-03), frame: (0.0, 192.5, 320.0, 409.5)]", - "[itemType: .monthBackground(2020-04), frame: (0.0, 602.0, 320.0, 459.0)]", + "[itemType: .monthBackground(2020-04), frame: (0.0, 602.0, 320.0, 459.5)]", ] XCTAssert( @@ -464,7 +464,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 36.0, 35.5)]", + .description == "[itemType: .layoutItemType(.day(2020-03-11)), frame: (142.0, 391.5, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert(details.contentStartBoundary == nil, "Unexpected content start offset.") @@ -480,59 +480,59 @@ final class VisibleItemsProviderTests: XCTestCase { extendLayoutRegion: false) let expectedVisibleItemDescriptions: Set = [ - "[itemType: .dayBackground(2020-06-11), frame: (188.0, 585.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-06-12), frame: (233.5, 585.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-06-13), frame: (279.5, 585.5, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-06-11), frame: (188.0, 585.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-06-12), frame: (233.5, 585.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-06-13), frame: (279.5, 585.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-06-14), frame: (5.0, 641.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-15), frame: (50.5, 641.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-06-15), frame: (50.5, 641.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-06-16), frame: (96.5, 641.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-17), frame: (142.0, 641.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-06-17), frame: (142.0, 641.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-06-18), frame: (188.0, 641.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-19), frame: (233.5, 641.5, 36.0, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-01)), frame: (50.5, 530.0, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-06-19), frame: (233.5, 641.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-01)), frame: (50.5, 530.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-02)), frame: (96.5, 530.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-03)), frame: (142.0, 530.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-03)), frame: (142.0, 530.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-04)), frame: (188.0, 530.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-05)), frame: (233.5, 530.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-05)), frame: (233.5, 530.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-06)), frame: (279.5, 530.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-07)), frame: (5.0, 585.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-08)), frame: (50.5, 585.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-09)), frame: (96.5, 585.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-10)), frame: (142.0, 585.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-11)), frame: (188.0, 585.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-12)), frame: (233.5, 585.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-13)), frame: (279.5, 585.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-06-07)), frame: (5.0, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-08)), frame: (50.5, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-09)), frame: (96.5, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-10)), frame: (142.0, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-11)), frame: (188.0, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-12)), frame: (233.5, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-13)), frame: (279.5, 585.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-14)), frame: (5.0, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-15)), frame: (50.5, 641.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-15)), frame: (50.5, 641.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-16)), frame: (96.5, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-17)), frame: (142.0, 641.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-17)), frame: (142.0, 641.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-18)), frame: (188.0, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-19)), frame: (233.5, 641.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-19)), frame: (233.5, 641.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-20)), frame: (279.5, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-21)), frame: (5.0, 697.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-22)), frame: (50.5, 697.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-23)), frame: (96.5, 697.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-24)), frame: (142.0, 697.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-25)), frame: (188.0, 697.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-26)), frame: (233.5, 697.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-27)), frame: (279.5, 697.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-06-21)), frame: (5.0, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-22)), frame: (50.5, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-23)), frame: (96.5, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-24)), frame: (142.0, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-25)), frame: (188.0, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-26)), frame: (233.5, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-27)), frame: (279.5, 697.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-28)), frame: (5.0, 753.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-29)), frame: (50.5, 753.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-29)), frame: (50.5, 753.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-30)), frame: (96.5, 753.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-01)), frame: (142.0, 883.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-02)), frame: (188.0, 883.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-03)), frame: (233.5, 883.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-04)), frame: (279.5, 883.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-07-01)), frame: (142.0, 883.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-02)), frame: (188.0, 883.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-03)), frame: (233.5, 883.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-04)), frame: (279.5, 883.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-06)), frame: (0.0, 450.0, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-07)), frame: (0.0, 803.5, 320.0, 50.0)]", "[itemType: .monthBackground(2020-06), frame: (0.0, 442.5, 320.0, 353.5)]", "[itemType: .monthBackground(2020-07), frame: (0.0, 796.0, 320.0, 353.5)]", "[itemType: .pinnedDayOfWeek(.fifth), frame: (188.0, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.first), frame: (5.0, 450.0, 35.5, 35.5)]", - "[itemType: .pinnedDayOfWeek(.fourth), frame: (142.0, 450.0, 36.0, 35.5)]", + "[itemType: .pinnedDayOfWeek(.fourth), frame: (142.0, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.last), frame: (279.5, 450.0, 35.5, 35.5)]", - "[itemType: .pinnedDayOfWeek(.second), frame: (50.5, 450.0, 36.0, 35.5)]", - "[itemType: .pinnedDayOfWeek(.sixth), frame: (233.5, 450.0, 36.0, 35.5)]", + "[itemType: .pinnedDayOfWeek(.second), frame: (50.5, 450.0, 35.5, 35.5)]", + "[itemType: .pinnedDayOfWeek(.sixth), frame: (233.5, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.third), frame: (96.5, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDaysOfWeekRowBackground, frame: (0.0, 450.0, 320.0, 35.5)]", "[itemType: .pinnedDaysOfWeekRowSeparator, frame: (0.0, 484.5, 320.0, 1.0)]", @@ -544,7 +544,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-06-24)), frame: (142.0, 697.0, 36.0, 36.0)]", + .description == "[itemType: .layoutItemType(.day(2020-06-24)), frame: (142.0, 697.0, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert(details.contentStartBoundary == nil, "Unexpected content start offset.") @@ -562,28 +562,28 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .daysOfWeekRowSeparator(2020-1), frame: (0.0, 314.5, 320.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-2), frame: (0.0, 557.0, 320.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-01-25)), frame: (279.5, 335.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-25)), frame: (279.5, 335.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-26)), frame: (5.0, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-27)), frame: (50.5, 391.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-27)), frame: (50.5, 391.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-28)), frame: (96.5, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 391.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 391.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-30)), frame: (188.0, 391.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-31)), frame: (233.5, 391.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-31)), frame: (233.5, 391.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-02-01)), frame: (279.5, 578.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-01)), frame: (188.0, 280.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-02)), frame: (188.0, 522.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-02)), frame: (188.0, 522.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-01)), frame: (5.0, 280.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-02)), frame: (5.0, 522.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-01)), frame: (142.0, 280.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-02)), frame: (142.0, 522.0, 36.0, 36.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-02)), frame: (5.0, 522.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-01)), frame: (142.0, 280.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-02)), frame: (142.0, 522.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-01)), frame: (279.5, 280.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-02)), frame: (279.5, 522.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-01)), frame: (50.5, 280.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-02)), frame: (50.5, 522.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-01)), frame: (233.5, 280.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-02)), frame: (233.5, 522.0, 36.0, 36.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-02)), frame: (279.5, 522.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-01)), frame: (50.5, 280.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-02)), frame: (50.5, 522.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-01)), frame: (233.5, 280.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-02)), frame: (233.5, 522.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-01)), frame: (96.5, 280.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-02)), frame: (96.5, 522.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-02)), frame: (96.5, 522.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-01)), frame: (0.0, 200.0, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-02)), frame: (0.0, 442.0, 320.0, 50.0)]", "[itemType: .monthBackground(2020-01), frame: (0.0, 192.5, 320.0, 242.0)]", @@ -596,7 +596,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 391.5, 36.0, 35.5)]", + .description == "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 391.5, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert(details.contentStartBoundary == 200, "Unexpected content start offset.") @@ -615,60 +615,60 @@ final class VisibleItemsProviderTests: XCTestCase { "[itemType: .dayBackground(2020-04-11), frame: (197.0, 185.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-15), frame: (68.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-16), frame: (111.5, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-04-17), frame: (154.5, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-04-17), frame: (154.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-18), frame: (197.0, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-05-11), frame: (298.0, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-05-11), frame: (298.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-12), frame: (340.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-13), frame: (383.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-17), frame: (255.0, 291.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-05-18), frame: (298.0, 291.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-05-18), frame: (298.0, 291.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-19), frame: (340.5, 291.5, 33.0, 33.0)]", - "[itemType: .dayRange(2020-03-11, 2020-04-05), frame: (-375.0, 133.0, 605.0, 244.0)]", - "[itemType: .dayRange(2020-04-30, 2020-05-14), frame: (111.5, 133.0, 433.5, 244.0)]", + "[itemType: .dayRange(2020-03-11, 2020-04-05), frame: (-375.0, 133.0, 605.0, 244.5)]", + "[itemType: .dayRange(2020-04-30, 2020-05-14), frame: (111.5, 133.0, 433.5, 244.5)]", "[itemType: .daysOfWeekRowSeparator(2020-4), frame: (-65.0, 112.0, 300.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-5), frame: (250.0, 112.0, 300.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-04-01)), frame: (68.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-02)), frame: (111.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-03)), frame: (154.5, 133.0, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-04)), frame: (197.0, 133.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-04-01)), frame: (68.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-02)), frame: (111.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-03)), frame: (154.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-04)), frame: (197.0, 133.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-08)), frame: (68.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-09)), frame: (111.5, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-10)), frame: (154.5, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-10)), frame: (154.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-11)), frame: (197.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-15)), frame: (68.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-16)), frame: (111.5, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-17)), frame: (154.5, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-17)), frame: (154.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-18)), frame: (197.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-22)), frame: (68.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-23)), frame: (111.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-24)), frame: (154.5, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-24)), frame: (154.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-25)), frame: (197.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-29)), frame: (68.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-30)), frame: (111.5, 344.5, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-04-29)), frame: (68.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-30)), frame: (111.5, 344.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-03)), frame: (255.0, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-04)), frame: (298.0, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-04)), frame: (298.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-05)), frame: (340.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-06)), frame: (383.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-10)), frame: (255.0, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-11)), frame: (298.0, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-11)), frame: (298.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-12)), frame: (340.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-13)), frame: (383.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-17)), frame: (255.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-18)), frame: (298.0, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-18)), frame: (298.0, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-19)), frame: (340.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-20)), frame: (383.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-24)), frame: (255.0, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-25)), frame: (298.0, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-26)), frame: (340.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-27)), frame: (383.5, 344.5, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-05-24)), frame: (255.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-25)), frame: (298.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-26)), frame: (340.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-27)), frame: (383.5, 344.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-31)), frame: (255.0, 397.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-04)), frame: (111.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-05)), frame: (255.0, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-04)), frame: (68.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-05)), frame: (383.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-04)), frame: (197.0, 80.0, 33.0, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-05)), frame: (298.0, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-04)), frame: (154.5, 80.0, 32.5, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-05)), frame: (298.0, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-04)), frame: (154.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-05)), frame: (340.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.monthHeader(2020-04)), frame: (-65.0, -50.0, 300.0, 100.0)]", "[itemType: .layoutItemType(.monthHeader(2020-05)), frame: (250.0, 0.0, 300.0, 50.0)]", @@ -698,59 +698,59 @@ final class VisibleItemsProviderTests: XCTestCase { extendLayoutRegion: false) let expectedVisibleItemDescriptions: Set = [ - "[itemType: .dayBackground(2020-05-11), frame: (50.5, 220.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-05-12), frame: (96.5, 220.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-05-13), frame: (142.0, 220.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-05-14), frame: (188.0, 220.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-05-15), frame: (233.5, 220.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-05-16), frame: (279.5, 220.5, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-05-11), frame: (50.5, 220.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-12), frame: (96.5, 220.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-13), frame: (142.0, 220.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-14), frame: (188.0, 220.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-15), frame: (233.5, 220.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-16), frame: (279.5, 220.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-05-17), frame: (5.0, 276.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-05-18), frame: (50.5, 276.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-05-18), frame: (50.5, 276.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-05-19), frame: (96.5, 276.5, 35.5, 35.5)]", "[itemType: .dayRange(2020-04-30, 2020-05-14), frame: (5.0, -77.0, 310.0, 333.5)]", "[itemType: .daysOfWeekRowSeparator(2020-6), frame: (0.0, 553.5, 320.0, 1.0)]", "[itemType: .layoutItemType(.day(2020-05-03)), frame: (5.0, 165.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-04)), frame: (50.5, 165.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-04)), frame: (50.5, 165.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-05)), frame: (96.5, 165.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-06)), frame: (142.0, 165.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-06)), frame: (142.0, 165.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-07)), frame: (188.0, 165.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-08)), frame: (233.5, 165.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-08)), frame: (233.5, 165.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-09)), frame: (279.5, 165.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-10)), frame: (5.0, 220.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-11)), frame: (50.5, 220.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-12)), frame: (96.5, 220.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-13)), frame: (142.0, 220.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-14)), frame: (188.0, 220.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-15)), frame: (233.5, 220.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-16)), frame: (279.5, 220.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-05-10)), frame: (5.0, 220.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-11)), frame: (50.5, 220.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-12)), frame: (96.5, 220.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-13)), frame: (142.0, 220.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-14)), frame: (188.0, 220.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-15)), frame: (233.5, 220.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-16)), frame: (279.5, 220.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-17)), frame: (5.0, 276.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-18)), frame: (50.5, 276.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-18)), frame: (50.5, 276.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-19)), frame: (96.5, 276.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-20)), frame: (142.0, 276.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-20)), frame: (142.0, 276.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-21)), frame: (188.0, 276.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-22)), frame: (233.5, 276.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-22)), frame: (233.5, 276.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-23)), frame: (279.5, 276.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-24)), frame: (5.0, 332.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-25)), frame: (50.5, 332.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-26)), frame: (96.5, 332.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-27)), frame: (142.0, 332.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-28)), frame: (188.0, 332.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-29)), frame: (233.5, 332.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-30)), frame: (279.5, 332.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-05-24)), frame: (5.0, 332.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-25)), frame: (50.5, 332.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-26)), frame: (96.5, 332.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-27)), frame: (142.0, 332.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-28)), frame: (188.0, 332.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-29)), frame: (233.5, 332.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-30)), frame: (279.5, 332.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-31)), frame: (5.0, 388.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-01)), frame: (50.5, 574.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-01)), frame: (50.5, 574.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-02)), frame: (96.5, 574.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-03)), frame: (142.0, 574.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-03)), frame: (142.0, 574.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-04)), frame: (188.0, 574.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-05)), frame: (233.5, 574.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-05)), frame: (233.5, 574.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-06)), frame: (279.5, 574.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-06)), frame: (188.0, 518.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-06)), frame: (5.0, 518.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-06)), frame: (142.0, 518.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-06)), frame: (279.5, 518.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-06)), frame: (50.5, 518.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-06)), frame: (233.5, 518.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-06)), frame: (96.5, 518.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-06)), frame: (188.0, 518.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-06)), frame: (5.0, 518.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-06)), frame: (142.0, 518.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-06)), frame: (279.5, 518.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-06)), frame: (50.5, 518.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-06)), frame: (233.5, 518.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-06)), frame: (96.5, 518.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-06)), frame: (0.0, 438.5, 320.0, 50.0)]", "[itemType: .monthBackground(2020-05), frame: (0.0, -34.0, 320.0, 465.0)]", "[itemType: .monthBackground(2020-06), frame: (0.0, 431.0, 320.0, 409.5)]", @@ -762,7 +762,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-05-27)), frame: (142.0, 332.0, 36.0, 36.0)]", + .description == "[itemType: .layoutItemType(.day(2020-05-27)), frame: (142.0, 332.0, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert(details.contentStartBoundary == nil, "Unexpected content start offset.") @@ -783,49 +783,49 @@ final class VisibleItemsProviderTests: XCTestCase { "[itemType: .dayBackground(2020-02-11), frame: (405.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-02-12), frame: (448.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-02-13), frame: (491.5, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-02-14), frame: (534.5, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-02-14), frame: (534.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-02-15), frame: (577.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-02-16), frame: (320.0, 291.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-02-17), frame: (363.0, 291.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-02-17), frame: (363.0, 291.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-02-18), frame: (405.5, 291.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-02-19), frame: (448.5, 291.5, 33.0, 33.0)]", "[itemType: .daysOfWeekRowSeparator(2020-1), frame: (0.0, 112.0, 300.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-2), frame: (315.0, 112.0, 300.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-02-01)), frame: (577.0, 133.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-02-01)), frame: (577.0, 133.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-02)), frame: (320.0, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-03)), frame: (363.0, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-03)), frame: (363.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-04)), frame: (405.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-05)), frame: (448.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-06)), frame: (491.5, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-07)), frame: (534.5, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-07)), frame: (534.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-08)), frame: (577.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-09)), frame: (320.0, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-10)), frame: (363.0, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-10)), frame: (363.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-11)), frame: (405.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-12)), frame: (448.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-13)), frame: (491.5, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-14)), frame: (534.5, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-14)), frame: (534.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-15)), frame: (577.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-16)), frame: (320.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-17)), frame: (363.0, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-17)), frame: (363.0, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-18)), frame: (405.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-19)), frame: (448.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-20)), frame: (491.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-21)), frame: (534.5, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-21)), frame: (534.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-02-22)), frame: (577.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-02-23)), frame: (320.0, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-02-24)), frame: (363.0, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-02-25)), frame: (405.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-02-26)), frame: (448.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-02-27)), frame: (491.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-02-28)), frame: (534.5, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-02-29)), frame: (577.0, 344.5, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-02-23)), frame: (320.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-24)), frame: (363.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-25)), frame: (405.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-26)), frame: (448.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-27)), frame: (491.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-28)), frame: (534.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-02-29)), frame: (577.0, 344.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-02)), frame: (491.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-02)), frame: (320.0, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-02)), frame: (448.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-02)), frame: (577.0, 80.0, 33.0, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-02)), frame: (363.0, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-02)), frame: (534.5, 80.0, 32.5, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-02)), frame: (363.0, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-02)), frame: (534.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-02)), frame: (405.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.monthHeader(2020-01)), frame: (0.0, 0.0, 300.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-02)), frame: (315.0, 0.0, 300.0, 50.0)]", @@ -850,58 +850,58 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .dayBackground(2020-01-11), frame: (279.5, 191.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-01-12), frame: (5.0, 247.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-01-13), frame: (50.5, 247.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-01-14), frame: (96.5, 247.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-01-15), frame: (142.0, 247.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-01-16), frame: (188.0, 247.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-01-17), frame: (233.5, 247.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-01-18), frame: (279.5, 247.0, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-01-12), frame: (5.0, 247.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-01-13), frame: (50.5, 247.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-01-14), frame: (96.5, 247.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-01-15), frame: (142.0, 247.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-01-16), frame: (188.0, 247.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-01-17), frame: (233.5, 247.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-01-18), frame: (279.5, 247.0, 35.5, 35.5)]", "[itemType: .dayBackground(2020-01-19), frame: (5.0, 303.0, 35.5, 35.5)]", "[itemType: .daysOfWeekRowSeparator(2020-1), frame: (0.0, 114.5, 320.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-2), frame: (0.0, 524.0, 320.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-01-01)), frame: (142.0, 135.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-02)), frame: (188.0, 135.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-03)), frame: (233.5, 135.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-04)), frame: (279.5, 135.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-01)), frame: (142.0, 135.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-02)), frame: (188.0, 135.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-03)), frame: (233.5, 135.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-04)), frame: (279.5, 135.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-05)), frame: (5.0, 191.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-06)), frame: (50.5, 191.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-06)), frame: (50.5, 191.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-07)), frame: (96.5, 191.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-08)), frame: (142.0, 191.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-08)), frame: (142.0, 191.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-09)), frame: (188.0, 191.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-10)), frame: (233.5, 191.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-10)), frame: (233.5, 191.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-11)), frame: (279.5, 191.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-12)), frame: (5.0, 247.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-13)), frame: (50.5, 247.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-14)), frame: (96.5, 247.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-15)), frame: (142.0, 247.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-16)), frame: (188.0, 247.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-17)), frame: (233.5, 247.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-18)), frame: (279.5, 247.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-12)), frame: (5.0, 247.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-13)), frame: (50.5, 247.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-14)), frame: (96.5, 247.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-15)), frame: (142.0, 247.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-16)), frame: (188.0, 247.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-17)), frame: (233.5, 247.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-18)), frame: (279.5, 247.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-19)), frame: (5.0, 303.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-20)), frame: (50.5, 303.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-20)), frame: (50.5, 303.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-21)), frame: (96.5, 303.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-22)), frame: (142.0, 303.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-22)), frame: (142.0, 303.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-23)), frame: (188.0, 303.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-24)), frame: (233.5, 303.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-24)), frame: (233.5, 303.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-25)), frame: (279.5, 303.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-26)), frame: (5.0, 358.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-27)), frame: (50.5, 358.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-28)), frame: (96.5, 358.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 358.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-30)), frame: (188.0, 358.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-31)), frame: (233.5, 358.5, 36.0, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-26)), frame: (5.0, 358.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-27)), frame: (50.5, 358.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-28)), frame: (96.5, 358.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 358.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-30)), frame: (188.0, 358.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-31)), frame: (233.5, 358.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-01)), frame: (188.0, 80.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-01)), frame: (5.0, 80.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-01)), frame: (142.0, 80.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-01)), frame: (142.0, 80.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-01)), frame: (279.5, 80.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-01)), frame: (50.5, 80.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-01)), frame: (233.5, 80.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-01)), frame: (50.5, 80.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-01)), frame: (233.5, 80.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-01)), frame: (96.5, 80.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-01)), frame: (0.0, 0.0, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-02)), frame: (0.0, 409.5, 320.0, 50.0)]", "[itemType: .monthBackground(2020-01), frame: (0.0, -7.5, 320.0, 409.5)]", - "[itemType: .monthBackground(2020-02), frame: (0.0, 402.0, 320.0, 409.0)]", + "[itemType: .monthBackground(2020-02), frame: (0.0, 402.0, 320.0, 409.5)]", "[itemType: .overlayItem(.day(2020-1-19)), frame: (0.0, -50.0, 320.0, 480.0)]", ] @@ -911,7 +911,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-01-08)), frame: (142.0, 191.5, 36.0, 35.5)]", + .description == "[itemType: .layoutItemType(.day(2020-01-08)), frame: (142.0, 191.5, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert(details.contentStartBoundary == 0, "Unexpected content start offset.") @@ -927,47 +927,47 @@ final class VisibleItemsProviderTests: XCTestCase { extendLayoutRegion: false) let expectedVisibleItemDescriptions: Set = [ - "[itemType: .dayBackground(2020-01-11), frame: (279.5, 180.5, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-01-11), frame: (279.5, 180.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-01-12), frame: (5.0, 236.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-01-13), frame: (50.5, 236.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-01-13), frame: (50.5, 236.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-01-14), frame: (96.5, 236.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-01-15), frame: (142.0, 236.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-01-15), frame: (142.0, 236.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-01-16), frame: (188.0, 236.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-01-17), frame: (233.5, 236.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-01-17), frame: (233.5, 236.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-01-18), frame: (279.5, 236.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-01-19), frame: (5.0, 292.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-01)), frame: (142.0, 125.0, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-01-19), frame: (5.0, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-01)), frame: (142.0, 125.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-02)), frame: (188.0, 125.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-03)), frame: (233.5, 125.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-03)), frame: (233.5, 125.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-04)), frame: (279.5, 125.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-05)), frame: (5.0, 180.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-06)), frame: (50.5, 180.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-07)), frame: (96.5, 180.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-08)), frame: (142.0, 180.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-09)), frame: (188.0, 180.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-10)), frame: (233.5, 180.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-11)), frame: (279.5, 180.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-05)), frame: (5.0, 180.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-06)), frame: (50.5, 180.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-07)), frame: (96.5, 180.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-08)), frame: (142.0, 180.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-09)), frame: (188.0, 180.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-10)), frame: (233.5, 180.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-11)), frame: (279.5, 180.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-12)), frame: (5.0, 236.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-13)), frame: (50.5, 236.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-13)), frame: (50.5, 236.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-14)), frame: (96.5, 236.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-15)), frame: (142.0, 236.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-15)), frame: (142.0, 236.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-16)), frame: (188.0, 236.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-17)), frame: (233.5, 236.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-17)), frame: (233.5, 236.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-18)), frame: (279.5, 236.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-19)), frame: (5.0, 292.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-20)), frame: (50.5, 292.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-21)), frame: (96.5, 292.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-22)), frame: (142.0, 292.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-23)), frame: (188.0, 292.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-24)), frame: (233.5, 292.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-01-25)), frame: (279.5, 292.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-19)), frame: (5.0, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-20)), frame: (50.5, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-21)), frame: (96.5, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-22)), frame: (142.0, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-23)), frame: (188.0, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-24)), frame: (233.5, 292.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-25)), frame: (279.5, 292.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-26)), frame: (5.0, 348.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-27)), frame: (50.5, 348.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-27)), frame: (50.5, 348.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-28)), frame: (96.5, 348.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 348.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-01-29)), frame: (142.0, 348.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-01-30)), frame: (188.0, 348.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-01-31)), frame: (233.5, 348.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.day(2020-02-01)), frame: (279.5, 478.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-01-31)), frame: (233.5, 348.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-02-01)), frame: (279.5, 478.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-01)), frame: (0.0, 45.0, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-02)), frame: (0.0, 398.5, 320.0, 50.0)]", "[itemType: .monthBackground(2020-01), frame: (0.0, 37.5, 320.0, 353.5)]", @@ -975,10 +975,10 @@ final class VisibleItemsProviderTests: XCTestCase { "[itemType: .overlayItem(.day(2020-1-19)), frame: (0.0, 50.0, 320.0, 480.0)]", "[itemType: .pinnedDayOfWeek(.fifth), frame: (188.0, 50.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.first), frame: (5.0, 50.0, 35.5, 35.5)]", - "[itemType: .pinnedDayOfWeek(.fourth), frame: (142.0, 50.0, 36.0, 35.5)]", + "[itemType: .pinnedDayOfWeek(.fourth), frame: (142.0, 50.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.last), frame: (279.5, 50.0, 35.5, 35.5)]", - "[itemType: .pinnedDayOfWeek(.second), frame: (50.5, 50.0, 36.0, 35.5)]", - "[itemType: .pinnedDayOfWeek(.sixth), frame: (233.5, 50.0, 36.0, 35.5)]", + "[itemType: .pinnedDayOfWeek(.second), frame: (50.5, 50.0, 35.5, 35.5)]", + "[itemType: .pinnedDayOfWeek(.sixth), frame: (233.5, 50.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.third), frame: (96.5, 50.0, 35.5, 35.5)]", "[itemType: .pinnedDaysOfWeekRowBackground, frame: (0.0, 50.0, 320.0, 35.5)]", "[itemType: .pinnedDaysOfWeekRowSeparator, frame: (0.0, 84.5, 320.0, 1.0)]", @@ -990,7 +990,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-01-22)), frame: (142.0, 292.0, 36.0, 36.0)]", + .description == "[itemType: .layoutItemType(.day(2020-01-22)), frame: (142.0, 292.0, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert( @@ -1009,13 +1009,13 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .daysOfWeekRowSeparator(2020-12), frame: (0.0, 854.5, 320.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-12-01)), frame: (96.5, 875.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-12-01)), frame: (96.5, 875.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-12)), frame: (188.0, 820.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-12)), frame: (5.0, 820.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-12)), frame: (142.0, 820.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-12)), frame: (142.0, 820.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-12)), frame: (279.5, 820.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-12)), frame: (50.5, 820.0, 36.0, 35.5)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-12)), frame: (233.5, 820.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-12)), frame: (50.5, 820.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-12)), frame: (233.5, 820.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-12)), frame: (96.5, 820.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-12)), frame: (0.0, 690.0, 320.0, 100.0)]", "[itemType: .monthBackground(2020-12), frame: (0.0, 682.5, 320.0, 236.5)]", @@ -1027,7 +1027,7 @@ final class VisibleItemsProviderTests: XCTestCase { XCTAssert( details.centermostLayoutItem - .description == "[itemType: .layoutItemType(.day(2020-12-01)), frame: (96.5, 875.5, 35.5, 36.0)]", + .description == "[itemType: .layoutItemType(.day(2020-12-01)), frame: (96.5, 875.5, 35.5, 35.5)]", "Unexpected centermost layout item.") XCTAssert(details.contentStartBoundary == nil, "Unexpected content start offset.") @@ -1048,55 +1048,55 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .dayBackground(2020-11-11), frame: (1018.5, 235.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-11-12), frame: (1061.5, 235.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-11-13), frame: (1104.5, 235.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-11-13), frame: (1104.5, 235.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-11-14), frame: (1147.0, 235.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-11-17), frame: (975.5, 288.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-11-18), frame: (1018.5, 288.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-11-19), frame: (1061.5, 288.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-12-13), frame: (1205.0, 288.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-12-14), frame: (1248.0, 288.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-12-14), frame: (1248.0, 288.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-12-15), frame: (1290.5, 288.5, 33.0, 33.0)]", "[itemType: .daysOfWeekRowSeparator(2020-11), frame: (885.0, 162.0, 300.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-12), frame: (1200.0, 162.0, 300.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-11-03)), frame: (975.5, 183.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-11-04)), frame: (1018.5, 183.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-11-05)), frame: (1061.5, 183.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-11-06)), frame: (1104.5, 183.0, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-11-07)), frame: (1147.0, 183.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-11-03)), frame: (975.5, 183.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-04)), frame: (1018.5, 183.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-05)), frame: (1061.5, 183.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-06)), frame: (1104.5, 183.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-07)), frame: (1147.0, 183.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-10)), frame: (975.5, 235.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-11)), frame: (1018.5, 235.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-12)), frame: (1061.5, 235.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-11-13)), frame: (1104.5, 235.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-13)), frame: (1104.5, 235.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-14)), frame: (1147.0, 235.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-17)), frame: (975.5, 288.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-18)), frame: (1018.5, 288.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-19)), frame: (1061.5, 288.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-11-20)), frame: (1104.5, 288.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-20)), frame: (1104.5, 288.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-21)), frame: (1147.0, 288.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-24)), frame: (975.5, 341.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-25)), frame: (1018.5, 341.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-26)), frame: (1061.5, 341.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-11-27)), frame: (1104.5, 341.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-11-27)), frame: (1104.5, 341.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-11-28)), frame: (1147.0, 341.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-12-01)), frame: (1290.5, 183.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-12-01)), frame: (1290.5, 183.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-12-06)), frame: (1205.0, 235.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-12-07)), frame: (1248.0, 235.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-12-07)), frame: (1248.0, 235.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-12-08)), frame: (1290.5, 235.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-12-13)), frame: (1205.0, 288.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-12-14)), frame: (1248.0, 288.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-12-14)), frame: (1248.0, 288.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-12-15)), frame: (1290.5, 288.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-12-20)), frame: (1205.0, 341.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-12-21)), frame: (1248.0, 341.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-12-21)), frame: (1248.0, 341.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-12-22)), frame: (1290.5, 341.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-12-27)), frame: (1205.0, 394.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-12-28)), frame: (1248.0, 394.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-12-29)), frame: (1290.5, 394.5, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-12-27)), frame: (1205.0, 394.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-12-28)), frame: (1248.0, 394.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-12-29)), frame: (1290.5, 394.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-11)), frame: (1061.5, 130.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.first, 2020-12)), frame: (1205.0, 130.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fourth, 2020-11)), frame: (1018.5, 130.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-11)), frame: (1147.0, 130.0, 33.0, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-12)), frame: (1248.0, 130.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-11)), frame: (1104.5, 130.0, 32.5, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-12)), frame: (1248.0, 130.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-11)), frame: (1104.5, 130.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-11)), frame: (975.5, 130.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-12)), frame: (1290.5, 130.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.monthHeader(2020-11)), frame: (885.0, 50.0, 300.0, 50.0)]", @@ -1131,158 +1131,158 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .dayBackground(2020-04-19), frame: (5.0, -65.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-05-11), frame: (50.5, 232.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-05-12), frame: (96.5, 232.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-05-13), frame: (142.0, 232.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-05-14), frame: (188.0, 232.0, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-05-15), frame: (233.5, 232.0, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-05-16), frame: (279.5, 232.0, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-05-11), frame: (50.5, 232.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-12), frame: (96.5, 232.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-13), frame: (142.0, 232.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-14), frame: (188.0, 232.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-15), frame: (233.5, 232.0, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-05-16), frame: (279.5, 232.0, 35.5, 35.5)]", "[itemType: .dayBackground(2020-05-17), frame: (5.0, 288.0, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-05-18), frame: (50.5, 288.0, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-05-18), frame: (50.5, 288.0, 35.5, 35.5)]", "[itemType: .dayBackground(2020-05-19), frame: (96.5, 288.0, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-11), frame: (188.0, 585.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-06-12), frame: (233.5, 585.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-06-13), frame: (279.5, 585.5, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-06-11), frame: (188.0, 585.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-06-12), frame: (233.5, 585.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-06-13), frame: (279.5, 585.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-06-14), frame: (5.0, 641.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-15), frame: (50.5, 641.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-06-15), frame: (50.5, 641.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-06-16), frame: (96.5, 641.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-17), frame: (142.0, 641.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-06-17), frame: (142.0, 641.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-06-18), frame: (188.0, 641.5, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-06-19), frame: (233.5, 641.5, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-06-19), frame: (233.5, 641.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-07-11), frame: (279.5, 939.5, 35.5, 35.5)]", "[itemType: .dayBackground(2020-07-12), frame: (5.0, 995.0, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-07-13), frame: (50.5, 995.0, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-07-13), frame: (50.5, 995.0, 35.5, 35.5)]", "[itemType: .dayBackground(2020-07-14), frame: (96.5, 995.0, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-07-15), frame: (142.0, 995.0, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-07-15), frame: (142.0, 995.0, 35.5, 35.5)]", "[itemType: .dayBackground(2020-07-16), frame: (188.0, 995.0, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-07-17), frame: (233.5, 995.0, 36.0, 35.5)]", + "[itemType: .dayBackground(2020-07-17), frame: (233.5, 995.0, 35.5, 35.5)]", "[itemType: .dayBackground(2020-07-18), frame: (279.5, 995.0, 35.5, 35.5)]", - "[itemType: .dayBackground(2020-07-19), frame: (5.0, 1050.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-08-11), frame: (96.5, 1398.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-08-12), frame: (142.0, 1398.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-08-13), frame: (188.0, 1398.5, 35.5, 36.0)]", - "[itemType: .dayBackground(2020-08-14), frame: (233.5, 1398.5, 36.0, 36.0)]", - "[itemType: .dayBackground(2020-08-15), frame: (279.5, 1398.5, 35.5, 36.0)]", + "[itemType: .dayBackground(2020-07-19), frame: (5.0, 1050.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-08-11), frame: (96.5, 1398.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-08-12), frame: (142.0, 1398.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-08-13), frame: (188.0, 1398.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-08-14), frame: (233.5, 1398.5, 35.5, 35.5)]", + "[itemType: .dayBackground(2020-08-15), frame: (279.5, 1398.5, 35.5, 35.5)]", "[itemType: .dayRange(2020-04-30, 2020-05-14), frame: (5.0, -10.0, 310.0, 278.0)]", "[itemType: .layoutItemType(.day(2020-04-19)), frame: (5.0, -65.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, -65.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-04-20)), frame: (50.5, -65.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-04-21)), frame: (96.5, -65.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-04-22)), frame: (142.0, -65.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-04-22)), frame: (142.0, -65.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-04-23)), frame: (188.0, -65.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-04-24)), frame: (233.5, -65.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-04-24)), frame: (233.5, -65.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-04-25)), frame: (279.5, -65.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-04-26)), frame: (5.0, -10.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-04-27)), frame: (50.5, -10.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-04-27)), frame: (50.5, -10.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-04-28)), frame: (96.5, -10.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-04-29)), frame: (142.0, -10.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-04-29)), frame: (142.0, -10.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-04-30)), frame: (188.0, -10.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-01)), frame: (233.5, 120.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-02)), frame: (279.5, 120.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-05-01)), frame: (233.5, 120.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-02)), frame: (279.5, 120.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-03)), frame: (5.0, 176.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-04)), frame: (50.5, 176.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-04)), frame: (50.5, 176.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-05)), frame: (96.5, 176.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-06)), frame: (142.0, 176.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-06)), frame: (142.0, 176.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-07)), frame: (188.0, 176.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-08)), frame: (233.5, 176.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-08)), frame: (233.5, 176.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-09)), frame: (279.5, 176.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-10)), frame: (5.0, 232.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-11)), frame: (50.5, 232.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-12)), frame: (96.5, 232.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-13)), frame: (142.0, 232.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-14)), frame: (188.0, 232.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-15)), frame: (233.5, 232.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-16)), frame: (279.5, 232.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-05-10)), frame: (5.0, 232.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-11)), frame: (50.5, 232.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-12)), frame: (96.5, 232.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-13)), frame: (142.0, 232.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-14)), frame: (188.0, 232.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-15)), frame: (233.5, 232.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-16)), frame: (279.5, 232.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-17)), frame: (5.0, 288.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-18)), frame: (50.5, 288.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-18)), frame: (50.5, 288.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-19)), frame: (96.5, 288.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-20)), frame: (142.0, 288.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-20)), frame: (142.0, 288.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-21)), frame: (188.0, 288.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-22)), frame: (233.5, 288.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-22)), frame: (233.5, 288.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-23)), frame: (279.5, 288.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-05-24)), frame: (5.0, 343.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-25)), frame: (50.5, 343.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-26)), frame: (96.5, 343.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-27)), frame: (142.0, 343.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-28)), frame: (188.0, 343.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-29)), frame: (233.5, 343.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-05-30)), frame: (279.5, 343.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-05-24)), frame: (5.0, 343.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-25)), frame: (50.5, 343.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-26)), frame: (96.5, 343.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-27)), frame: (142.0, 343.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-28)), frame: (188.0, 343.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-29)), frame: (233.5, 343.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-05-30)), frame: (279.5, 343.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-05-31)), frame: (5.0, 399.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-01)), frame: (50.5, 530.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-01)), frame: (50.5, 530.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-02)), frame: (96.5, 530.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-03)), frame: (142.0, 530.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-03)), frame: (142.0, 530.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-04)), frame: (188.0, 530.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-05)), frame: (233.5, 530.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-05)), frame: (233.5, 530.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-06)), frame: (279.5, 530.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-07)), frame: (5.0, 585.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-08)), frame: (50.5, 585.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-09)), frame: (96.5, 585.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-10)), frame: (142.0, 585.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-11)), frame: (188.0, 585.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-12)), frame: (233.5, 585.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-13)), frame: (279.5, 585.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-06-07)), frame: (5.0, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-08)), frame: (50.5, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-09)), frame: (96.5, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-10)), frame: (142.0, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-11)), frame: (188.0, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-12)), frame: (233.5, 585.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-13)), frame: (279.5, 585.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-14)), frame: (5.0, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-15)), frame: (50.5, 641.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-15)), frame: (50.5, 641.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-16)), frame: (96.5, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-17)), frame: (142.0, 641.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-17)), frame: (142.0, 641.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-18)), frame: (188.0, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-19)), frame: (233.5, 641.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-19)), frame: (233.5, 641.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-20)), frame: (279.5, 641.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-21)), frame: (5.0, 697.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-22)), frame: (50.5, 697.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-23)), frame: (96.5, 697.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-24)), frame: (142.0, 697.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-25)), frame: (188.0, 697.0, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-26)), frame: (233.5, 697.0, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-06-27)), frame: (279.5, 697.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-06-21)), frame: (5.0, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-22)), frame: (50.5, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-23)), frame: (96.5, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-24)), frame: (142.0, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-25)), frame: (188.0, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-26)), frame: (233.5, 697.0, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-27)), frame: (279.5, 697.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-28)), frame: (5.0, 753.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-06-29)), frame: (50.5, 753.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-06-29)), frame: (50.5, 753.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-06-30)), frame: (96.5, 753.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-01)), frame: (142.0, 883.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-02)), frame: (188.0, 883.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-03)), frame: (233.5, 883.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-04)), frame: (279.5, 883.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-07-01)), frame: (142.0, 883.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-02)), frame: (188.0, 883.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-03)), frame: (233.5, 883.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-04)), frame: (279.5, 883.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-05)), frame: (5.0, 939.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-06)), frame: (50.5, 939.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-06)), frame: (50.5, 939.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-07)), frame: (96.5, 939.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-08)), frame: (142.0, 939.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-08)), frame: (142.0, 939.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-09)), frame: (188.0, 939.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-10)), frame: (233.5, 939.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-10)), frame: (233.5, 939.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-11)), frame: (279.5, 939.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-12)), frame: (5.0, 995.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-13)), frame: (50.5, 995.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-13)), frame: (50.5, 995.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-14)), frame: (96.5, 995.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-15)), frame: (142.0, 995.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-15)), frame: (142.0, 995.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-16)), frame: (188.0, 995.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-17)), frame: (233.5, 995.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-17)), frame: (233.5, 995.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-18)), frame: (279.5, 995.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-19)), frame: (5.0, 1050.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-20)), frame: (50.5, 1050.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-21)), frame: (96.5, 1050.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-22)), frame: (142.0, 1050.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-23)), frame: (188.0, 1050.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-24)), frame: (233.5, 1050.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-07-25)), frame: (279.5, 1050.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-07-19)), frame: (5.0, 1050.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-20)), frame: (50.5, 1050.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-21)), frame: (96.5, 1050.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-22)), frame: (142.0, 1050.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-23)), frame: (188.0, 1050.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-24)), frame: (233.5, 1050.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-25)), frame: (279.5, 1050.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-26)), frame: (5.0, 1106.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-27)), frame: (50.5, 1106.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-27)), frame: (50.5, 1106.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-28)), frame: (96.5, 1106.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-29)), frame: (142.0, 1106.5, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-07-29)), frame: (142.0, 1106.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-07-30)), frame: (188.0, 1106.5, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-07-31)), frame: (233.5, 1106.5, 36.0, 35.5)]", - "[itemType: .layoutItemType(.day(2020-08-01)), frame: (279.5, 1287.0, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-07-31)), frame: (233.5, 1106.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-01)), frame: (279.5, 1287.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-08-02)), frame: (5.0, 1343.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-08-03)), frame: (50.5, 1343.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-03)), frame: (50.5, 1343.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-08-04)), frame: (96.5, 1343.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-08-05)), frame: (142.0, 1343.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-05)), frame: (142.0, 1343.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-08-06)), frame: (188.0, 1343.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-08-07)), frame: (233.5, 1343.0, 36.0, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-07)), frame: (233.5, 1343.0, 35.5, 35.5)]", "[itemType: .layoutItemType(.day(2020-08-08)), frame: (279.5, 1343.0, 35.5, 35.5)]", - "[itemType: .layoutItemType(.day(2020-08-09)), frame: (5.0, 1398.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-08-10)), frame: (50.5, 1398.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-08-11)), frame: (96.5, 1398.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-08-12)), frame: (142.0, 1398.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-08-13)), frame: (188.0, 1398.5, 35.5, 36.0)]", - "[itemType: .layoutItemType(.day(2020-08-14)), frame: (233.5, 1398.5, 36.0, 36.0)]", - "[itemType: .layoutItemType(.day(2020-08-15)), frame: (279.5, 1398.5, 35.5, 36.0)]", + "[itemType: .layoutItemType(.day(2020-08-09)), frame: (5.0, 1398.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-10)), frame: (50.5, 1398.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-11)), frame: (96.5, 1398.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-12)), frame: (142.0, 1398.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-13)), frame: (188.0, 1398.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-14)), frame: (233.5, 1398.5, 35.5, 35.5)]", + "[itemType: .layoutItemType(.day(2020-08-15)), frame: (279.5, 1398.5, 35.5, 35.5)]", "[itemType: .layoutItemType(.monthHeader(2020-05)), frame: (0.0, 40.5, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-06)), frame: (0.0, 450.0, 320.0, 50.0)]", "[itemType: .layoutItemType(.monthHeader(2020-07)), frame: (0.0, 803.5, 320.0, 50.0)]", @@ -1294,10 +1294,10 @@ final class VisibleItemsProviderTests: XCTestCase { "[itemType: .monthBackground(2020-08), frame: (0.0, 1149.5, 320.0, 459.5)]", "[itemType: .pinnedDayOfWeek(.fifth), frame: (188.0, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.first), frame: (5.0, 450.0, 35.5, 35.5)]", - "[itemType: .pinnedDayOfWeek(.fourth), frame: (142.0, 450.0, 36.0, 35.5)]", + "[itemType: .pinnedDayOfWeek(.fourth), frame: (142.0, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.last), frame: (279.5, 450.0, 35.5, 35.5)]", - "[itemType: .pinnedDayOfWeek(.second), frame: (50.5, 450.0, 36.0, 35.5)]", - "[itemType: .pinnedDayOfWeek(.sixth), frame: (233.5, 450.0, 36.0, 35.5)]", + "[itemType: .pinnedDayOfWeek(.second), frame: (50.5, 450.0, 35.5, 35.5)]", + "[itemType: .pinnedDayOfWeek(.sixth), frame: (233.5, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDayOfWeek(.third), frame: (96.5, 450.0, 35.5, 35.5)]", "[itemType: .pinnedDaysOfWeekRowBackground, frame: (0.0, 450.0, 320.0, 35.5)]", "[itemType: .pinnedDaysOfWeekRowSeparator, frame: (0.0, 484.5, 320.0, 1.0)]", @@ -1319,133 +1319,133 @@ final class VisibleItemsProviderTests: XCTestCase { let expectedVisibleItemDescriptions: Set = [ "[itemType: .dayBackground(2020-03-11), frame: (-246.5, 185.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-03-12), frame: (-203.5, 185.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-03-13), frame: (-160.5, 185.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-03-13), frame: (-160.5, 185.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-03-14), frame: (-118.0, 185.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-03-18), frame: (-246.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-03-19), frame: (-203.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-11), frame: (197.0, 185.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-12), frame: (-60.0, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-04-13), frame: (-17.0, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-04-13), frame: (-17.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-14), frame: (25.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-15), frame: (68.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-16), frame: (111.5, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-04-17), frame: (154.5, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-04-17), frame: (154.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-18), frame: (197.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-04-19), frame: (-60.0, 291.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-05-11), frame: (298.0, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-05-11), frame: (298.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-12), frame: (340.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-13), frame: (383.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-14), frame: (426.5, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-05-15), frame: (469.5, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-05-15), frame: (469.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-16), frame: (512.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-17), frame: (255.0, 291.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-05-18), frame: (298.0, 291.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-05-18), frame: (298.0, 291.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-05-19), frame: (340.5, 291.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-06-14), frame: (570.0, 238.5, 33.0, 33.0)]", - "[itemType: .dayBackground(2020-06-15), frame: (613.0, 238.5, 32.5, 33.0)]", + "[itemType: .dayBackground(2020-06-15), frame: (613.0, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-06-16), frame: (655.5, 238.5, 33.0, 33.0)]", "[itemType: .dayBackground(2020-06-17), frame: (698.5, 238.5, 33.0, 33.0)]", - "[itemType: .dayRange(2020-03-11, 2020-04-05), frame: (-375.0, 133.0, 605.0, 244.0)]", - "[itemType: .dayRange(2020-04-30, 2020-05-14), frame: (111.5, 133.0, 433.5, 244.0)]", + "[itemType: .dayRange(2020-03-11, 2020-04-05), frame: (-375.0, 133.0, 605.0, 244.5)]", + "[itemType: .dayRange(2020-04-30, 2020-05-14), frame: (111.5, 133.0, 433.5, 244.5)]", "[itemType: .daysOfWeekRowSeparator(2020-3), frame: (-380.0, 112.0, 300.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-4), frame: (-65.0, 112.0, 300.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-5), frame: (250.0, 112.0, 300.0, 1.0)]", "[itemType: .daysOfWeekRowSeparator(2020-6), frame: (565.0, 112.0, 300.0, 1.0)]", - "[itemType: .layoutItemType(.day(2020-03-04)), frame: (-246.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-03-05)), frame: (-203.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-03-06)), frame: (-160.5, 133.0, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-03-07)), frame: (-118.0, 133.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-03-04)), frame: (-246.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-03-05)), frame: (-203.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-03-06)), frame: (-160.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-03-07)), frame: (-118.0, 133.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-11)), frame: (-246.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-12)), frame: (-203.5, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-03-13)), frame: (-160.5, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-03-13)), frame: (-160.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-14)), frame: (-118.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-18)), frame: (-246.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-19)), frame: (-203.5, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-03-20)), frame: (-160.5, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-03-20)), frame: (-160.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-21)), frame: (-118.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-25)), frame: (-246.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-26)), frame: (-203.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-03-27)), frame: (-160.5, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-03-27)), frame: (-160.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-03-28)), frame: (-118.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-01)), frame: (68.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-02)), frame: (111.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-03)), frame: (154.5, 133.0, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-04)), frame: (197.0, 133.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-04-01)), frame: (68.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-02)), frame: (111.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-03)), frame: (154.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-04)), frame: (197.0, 133.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-05)), frame: (-60.0, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-06)), frame: (-17.0, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-06)), frame: (-17.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-07)), frame: (25.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-08)), frame: (68.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-09)), frame: (111.5, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-10)), frame: (154.5, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-10)), frame: (154.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-11)), frame: (197.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-12)), frame: (-60.0, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-13)), frame: (-17.0, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-13)), frame: (-17.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-14)), frame: (25.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-15)), frame: (68.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-16)), frame: (111.5, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-17)), frame: (154.5, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-17)), frame: (154.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-18)), frame: (197.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-19)), frame: (-60.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-20)), frame: (-17.0, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-20)), frame: (-17.0, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-21)), frame: (25.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-22)), frame: (68.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-23)), frame: (111.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-24)), frame: (154.5, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-24)), frame: (154.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-04-25)), frame: (197.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-04-26)), frame: (-60.0, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-27)), frame: (-17.0, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-28)), frame: (25.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-29)), frame: (68.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-04-30)), frame: (111.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-01)), frame: (469.5, 133.0, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-02)), frame: (512.0, 133.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-04-26)), frame: (-60.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-27)), frame: (-17.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-28)), frame: (25.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-29)), frame: (68.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-04-30)), frame: (111.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-01)), frame: (469.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-02)), frame: (512.0, 133.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-03)), frame: (255.0, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-04)), frame: (298.0, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-04)), frame: (298.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-05)), frame: (340.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-06)), frame: (383.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-07)), frame: (426.5, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-08)), frame: (469.5, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-08)), frame: (469.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-09)), frame: (512.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-10)), frame: (255.0, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-11)), frame: (298.0, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-11)), frame: (298.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-12)), frame: (340.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-13)), frame: (383.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-14)), frame: (426.5, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-15)), frame: (469.5, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-15)), frame: (469.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-16)), frame: (512.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-17)), frame: (255.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-18)), frame: (298.0, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-18)), frame: (298.0, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-19)), frame: (340.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-20)), frame: (383.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-21)), frame: (426.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-22)), frame: (469.5, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-22)), frame: (469.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-23)), frame: (512.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-05-24)), frame: (255.0, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-25)), frame: (298.0, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-26)), frame: (340.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-27)), frame: (383.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-28)), frame: (426.5, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-29)), frame: (469.5, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-05-30)), frame: (512.0, 344.5, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-05-24)), frame: (255.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-25)), frame: (298.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-26)), frame: (340.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-27)), frame: (383.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-28)), frame: (426.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-29)), frame: (469.5, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-05-30)), frame: (512.0, 344.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-05-31)), frame: (255.0, 397.0, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-06-01)), frame: (613.0, 133.0, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-06-02)), frame: (655.5, 133.0, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-06-03)), frame: (698.5, 133.0, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-06-01)), frame: (613.0, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-02)), frame: (655.5, 133.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-03)), frame: (698.5, 133.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-07)), frame: (570.0, 185.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-06-08)), frame: (613.0, 185.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-08)), frame: (613.0, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-09)), frame: (655.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-10)), frame: (698.5, 185.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-14)), frame: (570.0, 238.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-06-15)), frame: (613.0, 238.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-15)), frame: (613.0, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-16)), frame: (655.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-17)), frame: (698.5, 238.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-21)), frame: (570.0, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-06-22)), frame: (613.0, 291.5, 32.5, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-22)), frame: (613.0, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-23)), frame: (655.5, 291.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.day(2020-06-24)), frame: (698.5, 291.5, 33.0, 33.0)]", - "[itemType: .layoutItemType(.day(2020-06-28)), frame: (570.0, 344.5, 33.0, 32.5)]", - "[itemType: .layoutItemType(.day(2020-06-29)), frame: (613.0, 344.5, 32.5, 32.5)]", - "[itemType: .layoutItemType(.day(2020-06-30)), frame: (655.5, 344.5, 33.0, 32.5)]", + "[itemType: .layoutItemType(.day(2020-06-28)), frame: (570.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-29)), frame: (613.0, 344.5, 33.0, 33.0)]", + "[itemType: .layoutItemType(.day(2020-06-30)), frame: (655.5, 344.5, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-03)), frame: (-203.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-04)), frame: (111.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.fifth, 2020-05)), frame: (426.5, 80.0, 33.0, 33.0)]", @@ -1459,12 +1459,12 @@ final class VisibleItemsProviderTests: XCTestCase { "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-03)), frame: (-118.0, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-04)), frame: (197.0, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.last, 2020-05)), frame: (512.0, 80.0, 33.0, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-04)), frame: (-17.0, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-05)), frame: (298.0, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-06)), frame: (613.0, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-03)), frame: (-160.5, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-04)), frame: (154.5, 80.0, 32.5, 33.0)]", - "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-05)), frame: (469.5, 80.0, 32.5, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-04)), frame: (-17.0, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-05)), frame: (298.0, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.second, 2020-06)), frame: (613.0, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-03)), frame: (-160.5, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-04)), frame: (154.5, 80.0, 33.0, 33.0)]", + "[itemType: .layoutItemType(.dayOfWeekInMonth(.sixth, 2020-05)), frame: (469.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-04)), frame: (25.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-05)), frame: (340.5, 80.0, 33.0, 33.0)]", "[itemType: .layoutItemType(.dayOfWeekInMonth(.third, 2020-06)), frame: (655.5, 80.0, 33.0, 33.0)]",