1
0

SwifterTestsStringExtensions.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //
  2. // SwifterTests.swift
  3. // SwifterTests
  4. //
  5. // Copyright © 2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import XCTest
  8. class SwifterTestsStringExtensions: XCTestCase {
  9. func testSHA1() {
  10. XCTAssertEqual("".sha1(), "da39a3ee5e6b4b0d3255bfef95601890afd80709")
  11. XCTAssertEqual("test".sha1(), "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
  12. // Values copied from OpenSSL:
  13. // https://github.com/openssl/openssl/blob/master/test/sha1test.c
  14. XCTAssertEqual("abc".sha1(), "a9993e364706816aba3e25717850c26c9cd0d89d")
  15. XCTAssertEqual("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".sha1(),
  16. "84983e441c3bd26ebaae4aa1f95129e5e54670f1")
  17. XCTAssertEqual(
  18. ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  19. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  20. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  21. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  22. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  23. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  24. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  25. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  26. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  27. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  28. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  29. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  30. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq").sha1(),
  31. "a377b0c42d685fdc396e29a9eda7101d900947ca")
  32. }
  33. func testBASE64() {
  34. XCTAssertEqual(String.toBase64([UInt8]("".utf8)), "")
  35. // Values copied from OpenSSL:
  36. // https://github.com/openssl/openssl/blob/995197ab84901df1cdf83509c4ce3511ea7f5ec0/test/evptests.txt
  37. XCTAssertEqual(String.toBase64([UInt8]("h".utf8)), "aA==")
  38. XCTAssertEqual(String.toBase64([UInt8]("hello".utf8)), "aGVsbG8=")
  39. XCTAssertEqual(String.toBase64([UInt8]("hello world!".utf8)), "aGVsbG8gd29ybGQh")
  40. XCTAssertEqual(String.toBase64([UInt8]("OpenSSLOpenSSL\n".utf8)), "T3BlblNTTE9wZW5TU0wK")
  41. XCTAssertEqual(String.toBase64([UInt8]("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".utf8)),
  42. "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==")
  43. XCTAssertEqual(String.toBase64([UInt8]("h".utf8)), "aA==")
  44. }
  45. func testMiscUnquote() {
  46. XCTAssertEqual("".unquote(), "")
  47. XCTAssertEqual("\"".unquote(), "\"")
  48. XCTAssertEqual("\"\"".unquote(), "")
  49. XCTAssertEqual("1234".unquote(), "1234")
  50. XCTAssertEqual("1234\"".unquote(), "1234\"")
  51. XCTAssertEqual("\"1234".unquote(), "\"1234")
  52. XCTAssertEqual("\"1234\"".unquote(), "1234")
  53. XCTAssertEqual("\"1234\"".unquote(), "1234")
  54. XCTAssertEqual("\"\"\"".unquote(), "\"")
  55. XCTAssertEqual("\"\" \"\"".unquote(), "\" \"")
  56. }
  57. func testMiscTrim() {
  58. XCTAssertEqual("".trimmingCharacters(in: .whitespacesAndNewlines), "")
  59. XCTAssertEqual(" ".trimmingCharacters(in: .whitespacesAndNewlines), "")
  60. XCTAssertEqual(" ".trimmingCharacters(in: .whitespacesAndNewlines), "")
  61. XCTAssertEqual("1 test ".trimmingCharacters(in: .whitespacesAndNewlines), "1 test")
  62. XCTAssertEqual(" test ".trimmingCharacters(in: .whitespacesAndNewlines), "test")
  63. XCTAssertEqual(" \t\n\rtest ".trimmingCharacters(in: .whitespacesAndNewlines), "test")
  64. XCTAssertEqual(" \t\n\rtest n \n\t asd ".trimmingCharacters(in: .whitespacesAndNewlines), "test n \n\t asd")
  65. }
  66. func testMiscReplace() {
  67. XCTAssertEqual("".replacingOccurrences(of: "+", with: "-"), "")
  68. XCTAssertEqual("test".replacingOccurrences(of: "+", with: "-"), "test")
  69. XCTAssertEqual("+++".replacingOccurrences(of: "+", with: "-"), "---")
  70. XCTAssertEqual("t&e&s&t12%3%".replacingOccurrences(of: "&", with: "+").replacingOccurrences(of: "%", with: "+"), "t+e+s+t12+3+")
  71. XCTAssertEqual("test 1234 #$%^&*( test ".replacingOccurrences(of: " ", with: "_"), "test_1234_#$%^&*(_test___")
  72. }
  73. func testMiscRemovePercentEncoding() {
  74. XCTAssertEqual("".removingPercentEncoding!, "")
  75. XCTAssertEqual("%20".removingPercentEncoding!, " ")
  76. XCTAssertEqual("%22".removingPercentEncoding!, "\"")
  77. XCTAssertEqual("%25".removingPercentEncoding!, "%")
  78. XCTAssertEqual("%2d".removingPercentEncoding!, "-")
  79. XCTAssertEqual("%2e".removingPercentEncoding!, ".")
  80. XCTAssertEqual("%3C".removingPercentEncoding!, "<")
  81. XCTAssertEqual("%3E".removingPercentEncoding!, ">")
  82. XCTAssertEqual("%5C".removingPercentEncoding!, "\\")
  83. XCTAssertEqual("%5E".removingPercentEncoding!, "^")
  84. XCTAssertEqual("%5F".removingPercentEncoding!, "_")
  85. XCTAssertEqual("%60".removingPercentEncoding!, "`")
  86. XCTAssertEqual("%7B".removingPercentEncoding!, "{")
  87. XCTAssertEqual("%7C".removingPercentEncoding!, "|")
  88. XCTAssertEqual("%7D".removingPercentEncoding!, "}")
  89. XCTAssertEqual("%7E".removingPercentEncoding!, "~")
  90. XCTAssertEqual("%7e".removingPercentEncoding!, "~")
  91. }
  92. }