     }
 }
 
-public func assertEquals <T : Equatable, K> (expected: T, _ actual:K? , file: String = __FILE__, line: UInt = __LINE__ ) {
+public func assertEquals <T : Equatable, K> (_ expected: T, _ actual:K? , file: StaticString = #file, line: UInt = #line ) {
     if let checkedActual = actual as? T {
         XCTAssert(expected == checkedActual, "Expected: \(expected) was not: \(checkedActual)", file: file, line: line)
     } else {
-        XCTFail("These were not of the same type \(expected) \(actual).", file: file, line: line)
-    }
-}
-
-public func assertSame <T : AnyObject> (expected: T, _ actual: T, file: String = __FILE__, line: UInt = __LINE__ ) {
+        XCTFail("These were not of the same type \(expected) \(String(describing: actual)).", file: file, line: line)
+    }
+}
+
+public func assertSame <T : AnyObject> (_ expected: T, _ actual: T, file: StaticString = #file, line: UInt = #line ) {
     XCTAssert(expected === actual, "Expected: \(expected) was not: \(actual)", file: file, line: line)
 }
 
-public func assertSame <T : AnyObject, K> (expected: T, _ actual: K!, file: String = __FILE__, line: UInt = __LINE__ ) {
+public func assertSame <T : AnyObject, K> (_ expected: T, _ actual: K!, file: StaticString = #file, line: UInt = #line ) {
     if let checkedActual = actual as? T {
         XCTAssert(expected === checkedActual, "Expected: \(expected) was not: \(checkedActual)", file: file, line: line)
     } else {

    }
}

public func assertHasOneElement<Seq : SequenceType>(collection: Seq, file: String = __FILE__, line: UInt = __LINE__, _ andContinue : (withValue : Seq.Generator.Element) -> Void = { value in return }) {
    
    let array = Array(collection)
    if array.count == 1 {
        andContinue(withValue: array[0])
    } else {
        XCTFail("Collection did not have that value: \(collection)", file: file, line: line)
    }
}

public func assertHasOneOfType<T, Seq : SequenceType>(values: Seq, file: String = __FILE__, line: UInt = __LINE__, _ andContinue : (withValue : T) -> Void = { value in return }) {
    for value in values {
        if let value = value as? T {
            andContinue(withValue: value)
            return
        }
    }

    }
}

public func assertEquals (_ expected: Double, _ actual : Double, delta: Double, file: StaticString = #file, line: UInt = #line ) {
    XCTAssert(abs(expected - actual) <= delta, "Actual: \(actual) was not within \(delta) of \(expected)", file: file, line: line)
}

public func assertEqualsImplementation <T : Equatable> (_ original : T, _ equal : T, _ notEqualObjects : [T], file: StaticString = #file, line: UInt = #line) {
    assertEquals(original, actual: original, file: file, line: line)
    assertEquals(original, actual: equal, file: file, line: line)
    assertEquals(equal, actual: original, file: file, line: line)
