0001
0009 import Foundation
0010 import SourceKittenFramework
0011 import XCTest
0012
0013 class StructureTests| main_.swift:19 | StructureTests(), |
: XCTestCase {
0014
0015 lazy var allTests: [(String, () throws -> Void)] = [
0017 ("testPrintEmptyStructure", self.testPrintEmptyStructure),
0018 ("testEnum", self.testEnum),
0020 ("testStructurePrintValidJSON", self.testStructurePrintValidJSON),
0021 ]
0022
0023 func testPrintEmptyStructure| StructureTests.swift:17 | ("testPrintEmptyStructure", self.testPrintEmptyStructure), |
() {
0024 let expected: NSDictionary = [
0025 "key.offset": 0,
0026 "key.length": 0,
0027 "key.diagnostic_stage": "source.diagnostic.stage.swift.parse"
0028 ]
0029 let structure = Structure(file: File(contents: ""))
0030 XCTAssertEqual(toAnyObject(structure.dictionary), expected, "should generate expected structure")
0031 }
0032
0033 func testGenerateSameStructureFileAndContents() {
0034 let fileContents = try! NSString(contentsOfFile: __FILE__, encoding: NSUTF8StringEncoding) as String!
0035 XCTAssertEqual(Structure(file: File(path: __FILE__)!),
0036 Structure(file: File(contents: fileContents)),
0037 "should generate the same structure for a file as raw text")
0038 }
0039
0040 func testEnum| StructureTests.swift:19 | ("testEnum", self.testEnum), |
() {
0041 let structure = Structure(file: File(contents: "enum MyEnum { case First }"))
0042 let expectedStructure: NSDictionary = [
0043 "key.substructure": [
0044 [
0045 "key.kind": "source.lang.swift.decl.enum",
0046 "key.accessibility": "source.lang.swift.accessibility.internal",
0047 "key.offset": 0,
0048 "key.nameoffset": 5,
0049 "key.namelength": 6,
0050 "key.bodyoffset": 13,
0051 "key.bodylength": 12,
0052 "key.length": 26,
0053 "key.substructure": [
0054 [
0055 "key.kind": "source.lang.swift.decl.enumcase",
0056 "key.offset": 14,
0057 "key.length": 10,
0058 "key.nameoffset": 0,
0059 "key.namelength": 0,
0060 "key.substructure": [
0061 [
0062 "key.kind": "source.lang.swift.decl.enumelement",
0063 "key.accessibility": "source.lang.swift.accessibility.internal",
0064 "key.name": "First",
0065 "key.offset": 19,
0066 "key.length": 5,
0067 "key.nameoffset": 19,
0068 "key.namelength": 5
0069 ]
0070 ]
0071 ]
0072 ],
0073 "key.name": "MyEnum"
0074 ]
0075 ],
0076 "key.offset": 0,
0077 "key.diagnostic_stage": "source.diagnostic.stage.swift.parse",
0078 "key.length": 26
0079 ]
0080 XCTAssertEqual(toAnyObject(structure.dictionary), expectedStructure, "should generate expected structure")
0081 }
0082
0083 func testStructurePrintValidJSON| StructureTests.swift:20 | ("testStructurePrintValidJSON", self.testStructurePrintValidJSON), |
() {
0084 let structure = Structure(file: File(contents: "struct A { func b() {} }"))
0085 let expectedStructure: NSDictionary = [
0086 "key.substructure": [
0087 [
0088 "key.kind": "source.lang.swift.decl.struct",
0089 "key.accessibility": "source.lang.swift.accessibility.internal",
0090 "key.offset": 0,
0091 "key.nameoffset": 7,
0092 "key.namelength": 1,
0093 "key.bodyoffset": 10,
0094 "key.bodylength": 13,
0095 "key.length": 24,
0096 "key.substructure": [
0097 [
0098 "key.kind": "source.lang.swift.decl.function.method.instance",
0099 "key.accessibility": "source.lang.swift.accessibility.internal",
0100 "key.offset": 11,
0101 "key.nameoffset": 16,
0102 "key.namelength": 3,
0103 "key.bodyoffset": 21,
0104 "key.bodylength": 0,
0105 "key.length": 11,
0106 "key.name": "b()"
0107 ]
0108 ],
0109 "key.name": "A"
0110 ]
0111 ],
0112 "key.offset": 0,
0113 "key.diagnostic_stage": "source.diagnostic.stage.swift.parse",
0114 "key.length": 24
0115 ]
0116 XCTAssertEqual(toAnyObject(structure.dictionary), expectedStructure, "should generate expected structure")
0117
0118 let structureJSON = structure.description
0119 do {
0120 let jsonDictionary = try NSJSONSerialization.JSONObjectWithData(structureJSON.dataUsingEncoding(NSUTF8StringEncoding)!, options: []) as? NSDictionary
0121 XCTAssertNotNil(jsonDictionary, "JSON should be propery parsed")
0122 if let jsonDictionary = jsonDictionary {
0123 XCTAssertEqual(jsonDictionary, expectedStructure, "JSON should match expected structure")
0124 }
0125 } catch {
0126 XCTFail("JSON should be propery parsed")
0127 }
0128 }
0129 }
0130