Loop labels
This commit is contained in:
committed by
David Jennes
parent
a7448b74cf
commit
91df84b1a5
@@ -390,6 +390,33 @@ final class ForNodeTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
func testBreakLabeled() {
|
||||
it("breaks labeled loop") {
|
||||
let template = Template(templateString: """
|
||||
{% outer: for item in items %}\
|
||||
outer: {{ item }}
|
||||
{% for item in items %}\
|
||||
{% break outer %}\
|
||||
inner: {{ item }}
|
||||
{% endfor %}\
|
||||
{% endfor %}
|
||||
""")
|
||||
try expect(template.render(self.context)) == """
|
||||
outer: 1
|
||||
|
||||
"""
|
||||
}
|
||||
|
||||
it("throws when breaking with unknown label") {
|
||||
let template = Template(templateString: """
|
||||
{% outer: for item in items %}
|
||||
{% break inner %}
|
||||
{% endfor %}
|
||||
""")
|
||||
try expect(template.render(self.context)).toThrow()
|
||||
}
|
||||
}
|
||||
|
||||
func testContinue() {
|
||||
it("can continue loop") {
|
||||
let template = Template(templateString: """
|
||||
@@ -458,6 +485,35 @@ final class ForNodeTests: XCTestCase {
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
func testContinueLabeled() {
|
||||
it("continues labeled loop") {
|
||||
let template = Template(templateString: """
|
||||
{% outer: for item in items %}\
|
||||
{% for item in items %}\
|
||||
inner: {{ item }}
|
||||
{% continue outer %}\
|
||||
{% endfor %}\
|
||||
outer: {{ item }}
|
||||
{% endfor %}
|
||||
""")
|
||||
try expect(template.render(self.context)) == """
|
||||
inner: 1
|
||||
inner: 1
|
||||
inner: 1
|
||||
|
||||
"""
|
||||
}
|
||||
|
||||
it("throws when continuing with unknown label") {
|
||||
let template = Template(templateString: """
|
||||
{% outer: for item in items %}
|
||||
{% continue inner %}
|
||||
{% endfor %}
|
||||
""")
|
||||
try expect(template.render(self.context)).toThrow()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
Reference in New Issue
Block a user