Ver código fonte

Expose `uppercase` option of `base16Encode()`

Norio Nomura 10 anos atrás
pai
commit
d9526249c2
2 arquivos alterados com 17 adições e 5 exclusões
  1. 5 5
      Base32/Base16.swift
  2. 12 0
      Base32Tests/Base16Tests.swift

+ 5 - 5
Base32/Base16.swift

@@ -10,8 +10,8 @@ import Foundation
 
 // MARK: - Base16 NSData <-> String
 
-public func base16Encode(data: NSData) -> String {
-    return base16encode(data.bytes, data.length)
+public func base16Encode(data: NSData, uppercase: Bool = true) -> String {
+    return base16encode(data.bytes, data.length, uppercase: uppercase)
 }
 
 public func base16DecodeToData(string: String) -> NSData? {
@@ -24,8 +24,8 @@ public func base16DecodeToData(string: String) -> NSData? {
 
 // MARK: - Base16 [UInt8] <-> String
 
-public func base16Encode(array: [UInt8]) -> String {
-    return base16encode(array, array.count)
+public func base16Encode(array: [UInt8], uppercase: Bool = true) -> String {
+    return base16encode(array, array.count, uppercase: uppercase)
 }
 
 public func base16Decode(string: String) -> [UInt8]? {
@@ -77,7 +77,7 @@ extension NSData {
 }
 
 // MARK: encode
-private func base16encode(data: UnsafePointer<Void>, var length: Int, uppercase: Bool = true) -> String {
+private func base16encode(data: UnsafePointer<Void>, length: Int, uppercase: Bool = true) -> String {
     let array = UnsafeBufferPointer<UInt8>(start: UnsafePointer<UInt8>(data), count: length)
     return map(array) { String(format: uppercase ? "%02X" : "%02x", $0) }.reduce("", +)
 }

+ 12 - 0
Base32Tests/Base16Tests.swift

@@ -106,4 +106,16 @@ class Base16Tests: XCTestCase {
             }
         }
     }
+    
+    func test_lowercase() {
+        let lowercaseDataString = "abcdef"
+        
+        let decodedArray = base16Decode(lowercaseDataString)!
+        let encodedFromArray = base16Encode(decodedArray, uppercase: false)
+        XCTAssertEqual(encodedFromArray, lowercaseDataString)
+        
+        let decodedData = base16DecodeToData(lowercaseDataString)!
+        let encodedFromData = base16Encode(decodedData, uppercase: false)
+        XCTAssertEqual(encodedFromData, lowercaseDataString)
+    }
 }