Selaa lähdekoodia

Change SecEncodeTransformTests to use functions from TransformerKit

Norio Nomura 10 vuotta sitten
vanhempi
commit
ff63715d07

+ 10 - 0
Base32.xcodeproj/project.pbxproj

@@ -8,6 +8,7 @@
 
 /* Begin PBXBuildFile section */
 		6C10E90F1A753A6C006EED90 /* Base32.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA0A79D1A74E80600AC539F /* Base32.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		6C10E91A1A754346006EED90 /* TTTDataTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C10E9141A7540B5006EED90 /* TTTDataTransformer.m */; };
 		6CA0A79E1A74E80600AC539F /* Base32.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA0A79D1A74E80600AC539F /* Base32.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		6CA0A7A41A74E80600AC539F /* Base32.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA0A7981A74E80600AC539F /* Base32.framework */; };
 		6CA0A7AB1A74E80600AC539F /* Base32Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA0A7AA1A74E80600AC539F /* Base32Tests.swift */; };
@@ -38,6 +39,9 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
+		6C10E9121A7540B4006EED90 /* SecEncodeTransformTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SecEncodeTransformTests-Bridging-Header.h"; sourceTree = "<group>"; };
+		6C10E9131A7540B5006EED90 /* TTTDataTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTTDataTransformer.h; sourceTree = "<group>"; };
+		6C10E9141A7540B5006EED90 /* TTTDataTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTTDataTransformer.m; sourceTree = "<group>"; };
 		6CA0A7981A74E80600AC539F /* Base32.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Base32.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		6CA0A79C1A74E80600AC539F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		6CA0A79D1A74E80600AC539F /* Base32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Base32.h; sourceTree = "<group>"; };
@@ -257,8 +261,11 @@
 			isa = PBXGroup;
 			children = (
 				6CA0A80B1A75135D00AC539F /* SecEncodeTransformTests.swift */,
+				6C10E9131A7540B5006EED90 /* TTTDataTransformer.h */,
+				6C10E9141A7540B5006EED90 /* TTTDataTransformer.m */,
 				6CA0A8091A75135D00AC539F /* Supporting Files */,
 				6CA0A8001A750A7F00AC539F /* Frameworks */,
+				6C10E9121A7540B4006EED90 /* SecEncodeTransformTests-Bridging-Header.h */,
 			);
 			path = SecEncodeTransformTests;
 			sourceTree = "<group>";
@@ -505,6 +512,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				6CA0A80C1A75135D00AC539F /* SecEncodeTransformTests.swift in Sources */,
+				6C10E91A1A754346006EED90 /* TTTDataTransformer.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -634,6 +642,7 @@
 			buildSettings = {
 				INFOPLIST_FILE = SecEncodeTransformTests/Info.plist;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "SecEncodeTransformTests/SecEncodeTransformTests-Bridging-Header.h";
 			};
 			name = Debug;
 		};
@@ -643,6 +652,7 @@
 			buildSettings = {
 				INFOPLIST_FILE = SecEncodeTransformTests/Info.plist;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "SecEncodeTransformTests/SecEncodeTransformTests-Bridging-Header.h";
 			};
 			name = Release;
 		};

+ 5 - 0
SecEncodeTransformTests/SecEncodeTransformTests-Bridging-Header.h

@@ -0,0 +1,5 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
+#import "TTTDataTransformer.h"

+ 4 - 20
SecEncodeTransformTests/SecEncodeTransformTests.swift

@@ -10,22 +10,6 @@ import Foundation
 import XCTest
 import Security
 
-public func base32EncodeUsingSecEncodeTransform(data: NSData) -> String {
-    var transform = SecEncodeTransformCreate(kSecBase32Encoding, nil)
-    SecTransformSetAttribute(transform.takeUnretainedValue(), kSecTransformInputAttributeName, data, nil)
-    let encodedData = SecTransformExecute(transform.takeUnretainedValue(), nil) as NSData
-    transform.release()
-    return NSString(data: encodedData, encoding: NSUTF8StringEncoding) as String
-}
-
-public func base32DecodeToDataUsingSecEncodeTransform(string: String) -> NSData? {
-    var transform = SecDecodeTransformCreate(kSecBase32Encoding, nil)
-    SecTransformSetAttribute(transform.takeUnretainedValue(), kSecTransformInputAttributeName, string.dataUsingEncoding(NSUTF8StringEncoding), nil)
-    let decodedData = SecTransformExecute(transform.takeUnretainedValue(), nil) as NSData
-    transform.release()
-    return decodedData
-}
-
 class SecEncodeTransformTests: XCTestCase {
     
     let vectors: [(String,String,String)] = [
@@ -56,8 +40,8 @@ class SecEncodeTransformTests: XCTestCase {
             for _ in 0...100 {
                 for (test, expect, expectHex) in self.vectors {
                     let data = test.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
-                    let result = base32EncodeUsingSecEncodeTransform(data)
-                    XCTAssertEqual(result, expect, "base32EncodeUsingSecEncodeTransform for \(test)")
+                    let result = TTTBase32EncodedStringFromData(data)
+                    XCTAssertEqual(result, expect, "TTTBase32EncodedStringFromData for \(test)")
                 }
             }
         }
@@ -68,8 +52,8 @@ class SecEncodeTransformTests: XCTestCase {
             for _ in 0...100 {
                 for (expect, test, testHex) in self.vectors {
                     let data = expect.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
-                    let result = base32DecodeToDataUsingSecEncodeTransform(test)
-                    XCTAssertEqual(result!, data!, "base32DecodeUsingSecEncodeTransform for \(test)")
+                    let result = TTTDataFromBase32EncodedString(test)
+                    XCTAssertEqual(result, data!, "TTTDataFromBase32EncodedString for \(test)")
                 }
             }
         }

+ 30 - 0
SecEncodeTransformTests/TTTDataTransformer.h

@@ -0,0 +1,30 @@
+// original: https://github.com/mattt/TransformerKit/blob/master/TransformerKit%2FTTTDataTransformer.h
+// copied and modified for benchmarking
+
+// TTTDataTransformer.h
+//
+// Copyright (c) 2014 Mattt Thompson (http://mattt.me)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#import <Foundation/Foundation.h>
+
+NSString * TTTBase32EncodedStringFromData(NSData *data);
+
+NSData * TTTDataFromBase32EncodedString(NSString *string);

+ 46 - 0
SecEncodeTransformTests/TTTDataTransformer.m

@@ -0,0 +1,46 @@
+// original: https://github.com/mattt/TransformerKit/blob/master/TransformerKit%2FTTTDataTransformer.m
+// copied and modified for benchmarking
+
+// TTTDataTransformer.m
+//
+// Copyright (c) 2014 Mattt Thompson (http://mattt.me)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#import <Security/Security.h>
+
+#import "TTTDataTransformer.h"
+
+NSString * TTTBase32EncodedStringFromData(NSData *data) {
+    SecTransformRef transform = SecEncodeTransformCreate(kSecBase32Encoding, NULL);
+    SecTransformSetAttribute(transform, kSecTransformInputAttributeName, (__bridge CFDataRef)data, NULL);
+    NSData *encodedData = (__bridge_transfer NSData *)SecTransformExecute(transform, NULL);
+    CFRelease(transform);
+
+    return [[NSString alloc] initWithData:encodedData encoding:NSUTF8StringEncoding];
+}
+
+NSData * TTTDataFromBase32EncodedString(NSString *string) {
+    SecTransformRef transform = SecDecodeTransformCreate(kSecBase32Encoding, NULL);
+    SecTransformSetAttribute(transform, kSecTransformInputAttributeName, (__bridge CFDataRef)[string dataUsingEncoding:NSUTF8StringEncoding], NULL);
+    NSData *decodedData = (__bridge_transfer NSData *)SecTransformExecute(transform, NULL);
+    CFRelease(transform);
+
+    return decodedData;
+}