Base16Tests.swift 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. //
  2. // Base16Tests.swift
  3. // Base32
  4. //
  5. // Created by 野村 憲男 on 2/7/15.
  6. // Copyright (c) 2015 Norio Nomura. All rights reserved.
  7. //
  8. import Foundation
  9. import XCTest
  10. import Base32
  11. class Base16Tests: XCTestCase {
  12. let vectors: [(String, String)] = [
  13. ("", ""),
  14. ("f", "66"),
  15. ("fo", "666F"),
  16. ("foo", "666F6F"),
  17. ("foob", "666F6F62"),
  18. ("fooba", "666F6F6261"),
  19. ("foobar", "666F6F626172"),
  20. ]
  21. override func setUp() {
  22. super.setUp()
  23. // Put setup code here. This method is called before the invocation of each test method in the class.
  24. }
  25. override func tearDown() {
  26. // Put teardown code here. This method is called after the invocation of each test method in the class.
  27. super.tearDown()
  28. }
  29. // MARK: https://tools.ietf.org/html/rfc4648
  30. func test_RFC4648_base16Encode() {
  31. let convertedVectors = self.vectors.map {($0.dataUsingUTF8StringEncoding, $1)}
  32. self.measureBlock{
  33. for _ in 0...100 {
  34. for (test, expect) in convertedVectors {
  35. let result = base16Encode(test)
  36. XCTAssertEqual(result, expect, "base16Encode for \(test)")
  37. }
  38. }
  39. }
  40. }
  41. func test_RFC4648_base16Decode() {
  42. let convertedVectors = self.vectors.map {($0.dataUsingUTF8StringEncoding, $1)}
  43. self.measureBlock{
  44. for _ in 0...100 {
  45. for (expect, test) in convertedVectors {
  46. let result = base16DecodeToData(test)
  47. XCTAssertEqual(result!, expect, "base16Decode for \(test)")
  48. }
  49. }
  50. }
  51. }
  52. // MARK: -
  53. func test_Base16ExtensionString() {
  54. self.measureBlock{
  55. for _ in 0...100 {
  56. for (test, expect) in self.vectors {
  57. let result = test.base16EncodedString
  58. XCTAssertEqual(result, expect, "\(test).base16EncodedString")
  59. let decoded = result.base16DecodedString()
  60. XCTAssertEqual(decoded!, test, "\(result).base16DecodedString()")
  61. }
  62. }
  63. }
  64. }
  65. func test_Base16ExtensionData() {
  66. let dataVectors = vectors.map {
  67. (
  68. $0.dataUsingUTF8StringEncoding,
  69. $1.dataUsingUTF8StringEncoding
  70. )
  71. }
  72. self.measureBlock{
  73. for _ in 0...100 {
  74. for (test, expect) in dataVectors {
  75. let result = test.base16EncodedData
  76. XCTAssertEqual(result, expect, "\(test).base16EncodedData")
  77. let decoded = result.base16DecodedData
  78. XCTAssertEqual(decoded!, test, "\(result).base16DecodedData")
  79. }
  80. }
  81. }
  82. }
  83. func test_Base16ExtensionDataAndString() {
  84. let dataAndStringVectors = vectors.map {($0.dataUsingUTF8StringEncoding, $1)}
  85. self.measureBlock{
  86. for _ in 0...100 {
  87. for (test, expect) in dataAndStringVectors {
  88. let result = test.base16EncodedString
  89. XCTAssertEqual(result, expect, "\(test).base16EncodedString")
  90. let decoded = result.base16DecodedData
  91. XCTAssertEqual(decoded!, test, "\(result).base16DecodedData")
  92. }
  93. }
  94. }
  95. }
  96. func test_lowercase() {
  97. let lowercaseDataString = "abcdef"
  98. let decodedArray = base16Decode(lowercaseDataString)!
  99. let encodedFromArray = base16Encode(decodedArray, uppercase: false)
  100. XCTAssertEqual(encodedFromArray, lowercaseDataString)
  101. let decodedData = base16DecodeToData(lowercaseDataString)!
  102. let encodedFromData = base16Encode(decodedData, uppercase: false)
  103. XCTAssertEqual(encodedFromData, lowercaseDataString)
  104. }
  105. }