0001    //
0002    //  SwiftDocsTests.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    func compareJSONStringWithFixturesName
ClangTranslationUnitTests.swift:47
        compareJSONStringWithFixturesName("Musician", jsonString: comparisonString)
ClangTranslationUnitTests.swift:56
        compareJSONStringWithFixturesName("SuperScript", jsonString: comparisonString)
ClangTranslationUnitTests.swift:65
        compareJSONStringWithFixturesName("Realm", jsonString: comparisonString)
CodeCompletionTests.swift:25
        compareJSONStringWithFixturesName("SimpleCodeCompletion",
SwiftDocsTests.swift:37
    compareJSONStringWithFixturesName(name, jsonString: comparisonString)
(name: String, jsonString: String) { 0014 func jsonValue(jsonString: String) -> AnyObject { 0015 let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)! 0016 let result = try! NSJSONSerialization.JSONObjectWithData(data, options: []) 0017 return (result as? NSDictionary) ?? (result as! NSArray) 0018 } 0019 let firstValue = jsonValue(jsonString) 0020 let secondValue = jsonValue(File(path: fixturesDirectory + name + ".json")!.contents) 0021 let message = "output should match expected fixture" 0022 if let firstValue = firstValue as? NSDictionary, secondValue = secondValue as? NSDictionary { 0023 XCTAssertEqual(firstValue, secondValue, message) 0024 } else if let firstValue = firstValue as? NSArray, secondValue = secondValue as? NSArray { 0025 XCTAssertEqual(firstValue, secondValue, message) 0026 } else { 0027 XCTFail("output didn't match fixture type") 0028 } 0029 } 0030 0031 func compareDocsWithFixturesName
SwiftDocsTests.swift:50
        compareDocsWithFixturesName("Subscript")
SwiftDocsTests.swift:54
        compareDocsWithFixturesName("Bicycle")
(name: String) { 0032 let swiftFilePath = fixturesDirectory + name + ".swift" 0033 let docs = SwiftDocs(file: File(path: swiftFilePath)!, arguments: ["-j4", swiftFilePath])! 0034 0035 let escapedFixturesDirectory = fixturesDirectory.stringByReplacingOccurrencesOfString("/", withString: "\\/") 0036 let comparisonString = String(docs).stringByReplacingOccurrencesOfString(escapedFixturesDirectory, withString: "") 0037 compareJSONStringWithFixturesName(name, jsonString: comparisonString) 0038 } 0039 0040 class SwiftDocsTests
main_.swift:20
    SwiftDocsTests(),
: XCTestCase { 0041 0042 // protocol XCTestCaseProvider 0043 lazy var allTests: [(String, () throws -> Void)] = [ 0044 // ("testSubscript", self.testSubscript), FIXME: Failing on SPM 0045 // ("testBicycle", self.testBicycle), FIXME: Failing on SPM 0046 ("testParseFullXMLDocs", self.testParseFullXMLDocs), 0047 ] 0048 0049 func testSubscript() { 0050 compareDocsWithFixturesName("Subscript") 0051 } 0052 0053 func testBicycle() { 0054 compareDocsWithFixturesName("Bicycle") 0055 } 0056 0057 func testParseFullXMLDocs
SwiftDocsTests.swift:46
        ("testParseFullXMLDocs", self.testParseFullXMLDocs),
() { 0058 let xmlDocsString = "<Type file=\"file\" line=\"1\" column=\"2\"><Name>name</Name><USR>usr</USR><Declaration>declaration</Declaration><Abstract><Para>discussion</Para></Abstract><Parameters><Parameter><Name>param1</Name><Direction isExplicit=\"0\">in</Direction><Discussion><Para>param1_discussion</Para></Discussion></Parameter></Parameters><ResultDiscussion><Para>result_discussion</Para></ResultDiscussion></Type>" 0059 let parsed = parseFullXMLDocs(xmlDocsString)! 0060 let expected: NSDictionary = [ 0061 "key.doc.type": "Type", 0062 "key.doc.file": "file", 0063 "key.doc.line": 1, 0064 "key.doc.column": 2, 0065 "key.doc.name": "name", 0066 "key.usr": "usr", 0067 "key.doc.declaration": "declaration", 0068 "key.doc.parameters": [[ 0069 "name": "param1", 0070 "discussion": [["Para": "param1_discussion"]] 0071 ]], 0072 "key.doc.result_discussion": [["Para": "result_discussion"]] 0073 ] 0074 XCTAssertEqual(toAnyObject(parsed), expected) 0075 } 0076 } 0077