SwifterTestsStringExtensions.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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("".trim(), "")
  59. XCTAssertEqual("\n".trim(), "")
  60. XCTAssertEqual("\t".trim(), "")
  61. XCTAssertEqual("\r".trim(), "")
  62. XCTAssertEqual(" ".trim(), "")
  63. XCTAssertEqual(" ".trim(), "")
  64. XCTAssertEqual("1 test ".trim(), "1 test")
  65. XCTAssertEqual(" test ".trim(), "test")
  66. XCTAssertEqual(" \t\n\rtest ".trim(), "test")
  67. XCTAssertEqual(" \t\n\rtest n \n\t asd ".trim(), "test n \n\t asd")
  68. }
  69. func testMiscReplace() {
  70. XCTAssertEqual("".replace(old: "+", "-"), "")
  71. XCTAssertEqual("test".replace(old: "+", "-"), "test")
  72. XCTAssertEqual("+++".replace(old: "+", "-"), "---")
  73. XCTAssertEqual("t&e&s&t12%3%".replace(old: "&", "+").replace(old: "%", "+"), "t+e+s+t12+3+")
  74. XCTAssertEqual("test 1234 #$%^&*( test ".replace(old: " ", "_"), "test_1234_#$%^&*(_test___")
  75. }
  76. func testMiscRemovePercentEncoding() {
  77. XCTAssertEqual("".removePercentEncoding(), "")
  78. XCTAssertEqual("%20".removePercentEncoding(), " ")
  79. XCTAssertEqual("%22".removePercentEncoding(), "\"")
  80. XCTAssertEqual("%25".removePercentEncoding(), "%")
  81. XCTAssertEqual("%2d".removePercentEncoding(), "-")
  82. XCTAssertEqual("%2e".removePercentEncoding(), ".")
  83. XCTAssertEqual("%3C".removePercentEncoding(), "<")
  84. XCTAssertEqual("%3E".removePercentEncoding(), ">")
  85. XCTAssertEqual("%5C".removePercentEncoding(), "\\")
  86. XCTAssertEqual("%5E".removePercentEncoding(), "^")
  87. XCTAssertEqual("%5F".removePercentEncoding(), "_")
  88. XCTAssertEqual("%60".removePercentEncoding(), "`")
  89. XCTAssertEqual("%7B".removePercentEncoding(), "{")
  90. XCTAssertEqual("%7C".removePercentEncoding(), "|")
  91. XCTAssertEqual("%7D".removePercentEncoding(), "}")
  92. XCTAssertEqual("%7E".removePercentEncoding(), "~")
  93. XCTAssertEqual("%7e".removePercentEncoding(), "~")
  94. }
  95. }