1
0

SwifterTestsStringExtensions.swift 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //
  2. // SwifterTests.swift
  3. // SwifterTests
  4. //
  5. // Copyright © 2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import XCTest
  8. import Swifter
  9. class SwifterTestsStringExtensions: XCTestCase {
  10. func testSHA1() {
  11. XCTAssertEqual("".sha1(), "da39a3ee5e6b4b0d3255bfef95601890afd80709")
  12. XCTAssertEqual("test".sha1(), "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
  13. // Values copied from OpenSSL:
  14. // https://github.com/openssl/openssl/blob/master/test/sha1test.c
  15. XCTAssertEqual("abc".sha1(), "a9993e364706816aba3e25717850c26c9cd0d89d")
  16. XCTAssertEqual("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq".sha1(),
  17. "84983e441c3bd26ebaae4aa1f95129e5e54670f1")
  18. XCTAssertEqual(
  19. ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  20. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  21. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  22. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  23. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  24. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  25. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  26. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  27. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  28. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  29. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" +
  30. "a9993e364706816aba3e25717850c26c9cd0d89d" +
  31. "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq").sha1(),
  32. "a377b0c42d685fdc396e29a9eda7101d900947ca")
  33. }
  34. func testMD5() {
  35. // Values from: https://tools.ietf.org/html/rfc1321
  36. XCTAssertEqual("".md5(), "d41d8cd98f00b204e9800998ecf8427e")
  37. XCTAssertEqual("The quick brown fox jumps over the lazy dog.".md5(), "e4d909c290d0fb1ca068ffaddf22cbd0")
  38. XCTAssertEqual("a".md5(), "0cc175b9c0f1b6a831c399e269772661")
  39. XCTAssertEqual("abc".md5(), "900150983cd24fb0d6963f7d28e17f72")
  40. XCTAssertEqual("message digest".md5(), "f96b697d7cb7938d525a2f31aaf161d0")
  41. XCTAssertEqual("abcdefghijklmnopqrstuvwxyz".md5(), "c3fcd3d76192e4007dfb496cca67e13b")
  42. XCTAssertEqual("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".md5(), "d174ab98d277d9f5a5611c2c9f419d9f")
  43. XCTAssertEqual("12345678901234567890123456789012345678901234567890123456789012345678901234567890".md5(), "57edf4a22be3c955ac49da2e2107b67a")
  44. }
  45. func testBASE64() {
  46. XCTAssertEqual(String.toBase64([UInt8]("".utf8)), "")
  47. // Values copied from OpenSSL:
  48. // https://github.com/openssl/openssl/blob/995197ab84901df1cdf83509c4ce3511ea7f5ec0/test/evptests.txt
  49. XCTAssertEqual(String.toBase64([UInt8]("h".utf8)), "aA==")
  50. XCTAssertEqual(String.toBase64([UInt8]("hello".utf8)), "aGVsbG8=")
  51. XCTAssertEqual(String.toBase64([UInt8]("hello world!".utf8)), "aGVsbG8gd29ybGQh")
  52. XCTAssertEqual(String.toBase64([UInt8]("OpenSSLOpenSSL\n".utf8)), "T3BlblNTTE9wZW5TU0wK")
  53. XCTAssertEqual(String.toBase64([UInt8]("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".utf8)),
  54. "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==")
  55. XCTAssertEqual(String.toBase64([UInt8]("h".utf8)), "aA==")
  56. }
  57. func testMiscUnquote() {
  58. XCTAssertEqual("".unquote(), "")
  59. XCTAssertEqual("\"".unquote(), "\"")
  60. XCTAssertEqual("\"\"".unquote(), "")
  61. XCTAssertEqual("1234".unquote(), "1234")
  62. XCTAssertEqual("1234\"".unquote(), "1234\"")
  63. XCTAssertEqual("\"1234".unquote(), "\"1234")
  64. XCTAssertEqual("\"1234\"".unquote(), "1234")
  65. XCTAssertEqual("\"1234\"".unquote(), "1234")
  66. XCTAssertEqual("\"\"\"".unquote(), "\"")
  67. XCTAssertEqual("\"\" \"\"".unquote(), "\" \"")
  68. }
  69. func testMiscTrim() {
  70. XCTAssertEqual("".trim(), "")
  71. XCTAssertEqual("\n".trim(), "")
  72. XCTAssertEqual("\t".trim(), "")
  73. XCTAssertEqual("\r".trim(), "")
  74. XCTAssertEqual(" ".trim(), "")
  75. XCTAssertEqual(" ".trim(), "")
  76. XCTAssertEqual("1 test ".trim(), "1 test")
  77. XCTAssertEqual(" test ".trim(), "test")
  78. XCTAssertEqual(" \t\n\rtest ".trim(), "test")
  79. XCTAssertEqual(" \t\n\rtest n \n\t asd ".trim(), "test n \n\t asd")
  80. }
  81. func testMiscReplace() {
  82. XCTAssertEqual("".replace("+", "-"), "")
  83. XCTAssertEqual("test".replace("+", "-"), "test")
  84. XCTAssertEqual("+++".replace("+", "-"), "---")
  85. XCTAssertEqual("t&e&s&t12%3%".replace("&", "+").replace("%", "+"), "t+e+s+t12+3+")
  86. XCTAssertEqual("test 1234 #$%^&*( test ".replace(" ", "_"), "test_1234_#$%^&*(_test___")
  87. }
  88. func testMiscRemovePercentEncoding() {
  89. XCTAssertEqual("".removePercentEncoding(), "")
  90. XCTAssertEqual("%20".removePercentEncoding(), " ")
  91. XCTAssertEqual("%22".removePercentEncoding(), "\"")
  92. XCTAssertEqual("%25".removePercentEncoding(), "%")
  93. XCTAssertEqual("%2d".removePercentEncoding(), "-")
  94. XCTAssertEqual("%2e".removePercentEncoding(), ".")
  95. XCTAssertEqual("%3C".removePercentEncoding(), "<")
  96. XCTAssertEqual("%3E".removePercentEncoding(), ">")
  97. XCTAssertEqual("%5C".removePercentEncoding(), "\\")
  98. XCTAssertEqual("%5E".removePercentEncoding(), "^")
  99. XCTAssertEqual("%5F".removePercentEncoding(), "_")
  100. XCTAssertEqual("%60".removePercentEncoding(), "`")
  101. XCTAssertEqual("%7B".removePercentEncoding(), "{")
  102. XCTAssertEqual("%7C".removePercentEncoding(), "|")
  103. XCTAssertEqual("%7D".removePercentEncoding(), "}")
  104. XCTAssertEqual("%7E".removePercentEncoding(), "~")
  105. XCTAssertEqual("%7e".removePercentEncoding(), "~")
  106. }
  107. }