// RUN: %target-run-simple-swift // REQUIRES: executable_test // REQUIRES: OS=macosx // REQUIRES: objc_interop import Foundation import StdlibUnittest import SwiftSyntax func integerLiteralElement(_ int: Int) -> ArrayElementSyntax { let literal = SyntaxFactory.makeIntegerLiteral("\(int)") return SyntaxFactory.makeArrayElement( expression: SyntaxFactory.makeIntegerLiteralExpr(digits: literal), trailingComma: nil) } var SyntaxCollectionsAPI = TestSuite("SyntaxCollectionsAPI") SyntaxCollectionsAPI.test("AppendingElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(0) ]) let newArrayElementList = arrayElementList.appending(integerLiteralElement(1)) expectEqual(newArrayElementList.count, 2) expectNotNil(newArrayElementList.child(at: 1)) expectEqual("\(newArrayElementList.child(at: 1)!)", "1") } SyntaxCollectionsAPI.test("InsertingElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(1) ]) var newArrayElementList = arrayElementList.inserting(integerLiteralElement(0), at: 0) expectEqual(newArrayElementList.count, 2) expectNotNil(newArrayElementList.child(at: 0)) expectEqual("\(newArrayElementList.child(at: 0)!)", "0") newArrayElementList = newArrayElementList.inserting(integerLiteralElement(2), at: 2) expectEqual(newArrayElementList.count, 3) expectNotNil(newArrayElementList.child(at: 2)) expectEqual("\(newArrayElementList.child(at: 2)!)", "2") } SyntaxCollectionsAPI.test("PrependingElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(1) ]) let newArrayElementList = arrayElementList.prepending(integerLiteralElement(0)) expectEqual(newArrayElementList.count, 2) expectNotNil(newArrayElementList.child(at: 0)) expectEqual("\(newArrayElementList.child(at: 0)!)", "0") } SyntaxCollectionsAPI.test("RemovingFirstElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(0), integerLiteralElement(1) ]) let newArrayElementList = arrayElementList.removingFirst() expectEqual(newArrayElementList.count, 1) expectNotNil(newArrayElementList.child(at: 0)) expectEqual("\(newArrayElementList.child(at: 0)!)", "1") } SyntaxCollectionsAPI.test("RemovingLastElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(0), integerLiteralElement(1) ]) let newArrayElementList = arrayElementList.removingLast() expectEqual(newArrayElementList.count, 1) expectNotNil(newArrayElementList.child(at: 0)) expectEqual("\(newArrayElementList.child(at: 0)!)", "0") } SyntaxCollectionsAPI.test("RemovingElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(0) ]) let newArrayElementList = arrayElementList.removing(childAt: 0) expectEqual(newArrayElementList.count, 0) expectNil(newArrayElementList.child(at: 0)) } SyntaxCollectionsAPI.test("ReplacingElement") { let arrayElementList = SyntaxFactory.makeArrayElementList([ integerLiteralElement(0), integerLiteralElement(1), integerLiteralElement(2) ]) let newArrayElementList = arrayElementList.replacing(childAt: 2, with: integerLiteralElement(3)) expectNotNil(newArrayElementList.child(at: 2)) expectEqual("\(newArrayElementList.child(at: 2)!)", "3") } runAllTests()