0001    //
0002    //  StructureTests.swift
0003    //  SourceKitten
0004    //
0005    //  Created by JP Simard on 2015-01-03.
0006    //  Copyright (c) 2015 SourceKitten. All rights reserved.
0007    //
0008    
0009    import Foundation
0010    import SourceKittenFramework
0011    import XCTest
0012    
0013    class StructureTests
main_.swift:19
    StructureTests(),
: XCTestCase { 0014 0015 // protocol XCTestCaseProvider 0016 lazy var allTests: [(String, () throws -> Void)] = [ 0017 ("testPrintEmptyStructure", self.testPrintEmptyStructure), 0018 // ("testGenerateSameStructureFileAndContents", self.testGenerateSameStructureFileAndContents), FIXME: Failing on SPM 0019 ("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