Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,20 @@ extension DisplayList.Item {
switch content.value {
case let .placeholder(id: identity):
printer.print("(placeholder \(identity))")
case let .color(resolved):
// FIXME
printer.print("(color \(resolved))")
default:
// TOOD
break
}
case let .effect(effect, displayList):
// FIXME
printer.push("effect")
for item in displayList.items {
item.print(into: &printer)
}
printer.pop()
default:
// TODO
break
Expand All @@ -52,10 +62,20 @@ extension DisplayList.Item {
switch content.value {
case let .placeholder(id: identity):
printer.print("@\(identity))")
case let .color(resolved):
// FIXME
printer.print("(c \(resolved))")
default:
// TOOD
break
}
case let .effect(effect, displayList):
// FIXME
printer.push("E")
for item in displayList.items {
item.printMinimally(into: &printer)
}
printer.pop()
default:
// TODO
break
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
//
// DisplayListPrinterTests.swift
// OpenSwiftUICoreTests

import OpenSwiftUICore
import Testing

struct DisplayListPrinterTests {
@Test
func plain() {
let emptyList = DisplayList()
#expect(emptyList.description == "(display-list)")
#expect(emptyList.minimalDescription == "(DL)")
}

@Test
func emptyItem() {
let item = DisplayList.Item(
.empty,
frame: .zero,
identity: .init(decodedValue: 1),
version: .init(decodedValue: 0)
)
let d = item.description
print(d)

#expect(item.description == """
(display-list-item
(item #:identity 1 #:version 0
(frame (0.0 0.0; 0.0 0.0))))
""")

let list = DisplayList(item)
#expect(list.description == "(display-list)")
#expect(list.minimalDescription == "(DL)")

let list2 = DisplayList([item])
#expect(list2.description == """
(display-list
(item #:identity 1 #:version 0
(frame (0.0 0.0; 0.0 0.0))))
""")
#expect(list2.minimalDescription == "(DL(I:1))")
}

func placeholderItem() {
let item = DisplayList.Item(
.content(.init(
.placeholder(id: .init(decodedValue: 2)),
seed: .init(decodedValue: 4)
)),
frame: .zero,
identity: .init(decodedValue: 1),
version: .init(decodedValue: 0)
)
let expectedDescription = """
(display-list
(item #:identity 1 #:version 0 #:views true
(frame (0.0 0.0; 0.0 0.0))
(content-seed 4)
(placeholder #2)))
"""

let expectedMinimalDescription = """
(DL(I:1 @#2))
"""


let list = DisplayList(item)
#expect(list.description == expectedDescription)
#expect(list.minimalDescription == expectedMinimalDescription)

let list2 = DisplayList([item])
#expect(list2.description == expectedDescription)
#expect(list2.minimalDescription == expectedMinimalDescription)
}

@Test
func colorItem() {
let item = DisplayList.Item(
.content(.init(
.color(.white),
seed: .init(decodedValue: 2))
),
frame: .zero,
identity: .init(decodedValue: 1),
version: .init(decodedValue: 0)
)
#expect(DisplayList(item).description == """
(display-list
(item #:identity 1 #:version 0
(frame (0.0 0.0; 0.0 0.0))
(content-seed 2)
(color #FFFFFFFF)))
""")
#expect(DisplayList(item).minimalDescription == """
(DL(I:1 (c #FFFFFFFF)))
""")
}

@Test
func effectItem() {
let colorItem = DisplayList.Item(
.content(.init(
.color(.white),
seed: .init(decodedValue: 2))
),
frame: .zero,
identity: .init(decodedValue: 1),
version: .init(decodedValue: 0)
)
let effectItem = DisplayList.Item(
.effect(
.opacity(1),
.init(colorItem)
),
frame: .zero,
identity: .init(decodedValue: 4),
version: .init(decodedValue: 3)
)
// FIXME: opacity value should be printed since it is not canonicalized here
#expect(DisplayList(effectItem).description == """
(display-list
(item #:identity 4 #:version 3
(frame (0.0 0.0; 0.0 0.0))
(effect
(item #:identity 1 #:version 0
(frame (0.0 0.0; 0.0 0.0))
(content-seed 2)
(color #FFFFFFFF)))))
""")
#expect(DisplayList(effectItem).minimalDescription == """
(DL(I:4(E(I:1 (c #FFFFFFFF)))))
""")
}
}
29 changes: 10 additions & 19 deletions Tests/OpenSwiftUICoreTests/View/IDViewTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,30 +35,21 @@ struct IDViewTests {
graph.setRootView(ContentView())
graph.setProposedSize(CGSize(width: 100, height: 100))
let (displayList, _) = graph.displayList()

let expectRegex = try! Regex(#"""
\(display-list
\(item #:identity \d+ #:version \d+
\(frame \([^)]+\)\)\)\)
"""#)
#expect(displayList.description.contains(expectRegex))
withKnownIssue("Blocked by DisplayList.print and canonicalize") {
let expectRegex = try! Regex(#"""
\(display-list
\(frame \([^)]+\)\)
\(effect
\(item #:identity \d+ #:version \d+
\(frame \([^)]+\)\)
\(effect
\(item #:identity \d+ #:version \d+
\(frame \([^)]+\)\)
\(content-seed \d+\)
\(color #[0-9A-F]{8}\)\)
\(item #:identity \d+ #:version \d+
\(frame \([^)]+\)\)
\(content-seed \d+\)
\(color #[0-9A-F]{8}\)\)\)\)\)
"""#)
#expect(displayList.description.contains(expectRegex))
}
\(content-seed \d+\)
\(color #[0-9A-F]{8}\)\)
\(item #:identity \d+ #:version \d+
\(frame \([^)]+\)\)
\(content-seed \d+\)
\(color #[0-9A-F]{8}\)\)\)\)\)
"""#)
#expect(displayList.description.contains(expectRegex))
}
#endif
}
Loading