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(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
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) { 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
SwiftDocsTests.swift:50 compareDocsWithFixturesName("Subscript")SwiftDocsTests.swift:54 compareDocsWithFixturesName("Bicycle"): 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
main_.swift:20 SwiftDocsTests(),() { 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
SwiftDocsTests.swift:46 ("testParseFullXMLDocs", self.testParseFullXMLDocs),