SwifterTestsStringExtensions.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 testBASE64() {
  35. XCTAssertEqual(String.toBase64([UInt8]("".utf8)), "")
  36. // Values copied from OpenSSL:
  37. // https://github.com/openssl/openssl/blob/995197ab84901df1cdf83509c4ce3511ea7f5ec0/test/evptests.txt
  38. XCTAssertEqual(String.toBase64([UInt8]("h".utf8)), "aA==")
  39. XCTAssertEqual(String.toBase64([UInt8]("hello".utf8)), "aGVsbG8=")
  40. XCTAssertEqual(String.toBase64([UInt8]("hello world!".utf8)), "aGVsbG8gd29ybGQh")
  41. XCTAssertEqual(String.toBase64([UInt8]("OpenSSLOpenSSL\n".utf8)), "T3BlblNTTE9wZW5TU0wK")
  42. XCTAssertEqual(String.toBase64([UInt8]("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".utf8)),
  43. "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==")
  44. XCTAssertEqual(String.toBase64([UInt8]("h".utf8)), "aA==")
  45. }
  46. func testMiscUnquote() {
  47. XCTAssertEqual("".unquote(), "")
  48. XCTAssertEqual("\"".unquote(), "\"")
  49. XCTAssertEqual("\"\"".unquote(), "")
  50. XCTAssertEqual("1234".unquote(), "1234")
  51. XCTAssertEqual("1234\"".unquote(), "1234\"")
  52. XCTAssertEqual("\"1234".unquote(), "\"1234")
  53. XCTAssertEqual("\"1234\"".unquote(), "1234")
  54. XCTAssertEqual("\"1234\"".unquote(), "1234")
  55. XCTAssertEqual("\"\"\"".unquote(), "\"")
  56. XCTAssertEqual("\"\" \"\"".unquote(), "\" \"")
  57. }
  58. func testMiscTrim() {
  59. XCTAssertEqual("".trim(), "")
  60. XCTAssertEqual("\n".trim(), "")
  61. XCTAssertEqual("\t".trim(), "")
  62. XCTAssertEqual("\r".trim(), "")
  63. XCTAssertEqual(" ".trim(), "")
  64. XCTAssertEqual(" ".trim(), "")
  65. XCTAssertEqual("1 test ".trim(), "1 test")
  66. XCTAssertEqual(" test ".trim(), "test")
  67. XCTAssertEqual(" \t\n\rtest ".trim(), "test")
  68. XCTAssertEqual(" \t\n\rtest n \n\t asd ".trim(), "test n \n\t asd")
  69. }
  70. func testMiscReplace() {
  71. XCTAssertEqual("".replace("+", "-"), "")
  72. XCTAssertEqual("test".replace("+", "-"), "test")
  73. XCTAssertEqual("+++".replace("+", "-"), "---")
  74. XCTAssertEqual("t&e&s&t12%3%".replace("&", "+").replace("%", "+"), "t+e+s+t12+3+")
  75. XCTAssertEqual("test 1234 #$%^&*( test ".replace(" ", "_"), "test_1234_#$%^&*(_test___")
  76. }
  77. func testMiscRemovePercentEncoding() {
  78. XCTAssertEqual("".removePercentEncoding(), "")
  79. XCTAssertEqual("%20".removePercentEncoding(), " ")
  80. XCTAssertEqual("%22".removePercentEncoding(), "\"")
  81. XCTAssertEqual("%25".removePercentEncoding(), "%")
  82. XCTAssertEqual("%2d".removePercentEncoding(), "-")
  83. XCTAssertEqual("%2e".removePercentEncoding(), ".")
  84. XCTAssertEqual("%3C".removePercentEncoding(), "<")
  85. XCTAssertEqual("%3E".removePercentEncoding(), ">")
  86. XCTAssertEqual("%5C".removePercentEncoding(), "\\")
  87. XCTAssertEqual("%5E".removePercentEncoding(), "^")
  88. XCTAssertEqual("%5F".removePercentEncoding(), "_")
  89. XCTAssertEqual("%60".removePercentEncoding(), "`")
  90. XCTAssertEqual("%7B".removePercentEncoding(), "{")
  91. XCTAssertEqual("%7C".removePercentEncoding(), "|")
  92. XCTAssertEqual("%7D".removePercentEncoding(), "}")
  93. XCTAssertEqual("%7E".removePercentEncoding(), "~")
  94. XCTAssertEqual("%7e".removePercentEncoding(), "~")
  95. }
  96. }