     XCTAssertTrue(s.truncate(at: 11) == "Hello World")
     XCTAssertTrue(s.truncate(at: 11,withTrailing: nil) == "Hello World")
     XCTAssertTrue(s.truncate(at: 100) == "Hello World")
-
+    
     let s2 = "Hello 🗺"
     XCTAssertTrue(s2.truncate(at: 5) == "Hello…")
     XCTAssertTrue(s2.truncate(at: 6) == "Hello …")
     XCTAssertTrue(s2.truncate(at: 7) == "Hello 🗺")
-
+    
     let s3 = "a😀bb😄😄ccc😄😬😄"
     XCTAssertTrue(s3.truncate(at: 0) == "…")
     XCTAssertTrue(s3.truncate(at: 1) == "a…")

    XCTAssertTrue("a1🤔".ends(with:"🤔"))
    XCTAssertTrue("a1🖖🏽".ends(with:"🖖🏽"))
    XCTAssertTrue(" 🖖🏽🇮🇹🇮🇹".ends(with:"🇮🇹"))

    //case insensitive
    XCTAssertTrue(" 🖖🏽🇮🇹🇮🇹".ends(with:"🇮🇹", caseSensitive: false))
    XCTAssertTrue("a".ends(with:"A", caseSensitive: false))
    XCTAssertTrue("Hello".ends(with:"hello", caseSensitive: false))
    XCTAssertFalse("Hello".ends(with:"helloo", caseSensitive: false))
  }

  func test_reverse() {
    var a = "a"
    a.reverse()

    XCTAssertTrue("AaBbCc".replace("", with: "A") == "AaBbCc")
    XCTAssertTrue("AaBbCc".replace("AaBbCc", with: "123") == "123")
    XCTAssertTrue("aaBbCa".replace("a", with: "1") == "11BbC1")
    
    XCTAssertTrue("AaBbCc🤔".replace("🤔", with: "🤔🤔") == "AaBbCc🤔🤔")
    XCTAssertTrue("".replace("🤔", with: "🤔🤔") == "")
    XCTAssertTrue("".replace("", with: "🤔") == "")
    
    XCTAssertTrue("Italy 🇮🇹\u{200B}🇮🇹\u{200B}🇮🇹".replace("\u{200B}", with: " ") == "Italy 🇮🇹 🇮🇹 🇮🇹")
    
    XCTAssertTrue("AaBbCc".replace("a", with: "Z", caseSensitive: false) == "ZZBbCc")
    XCTAssertTrue("AaBbCc".replace("a", with: "a", caseSensitive: false) == "aaBbCc")
    XCTAssertTrue("AaBbCc".replace("a", with: "A", caseSensitive: false) == "AABbCc")
    XCTAssertTrue("AaBbCc".replace("", with: "A", caseSensitive: false) == "AaBbCc")
  }
  
  func test_trim() {
    var s1 = "   Hello World   "
    s1.trim()
    XCTAssertTrue(s1 == "Hello World")
  }
  
  func test_trimmed() {
    let s1 = "   Hello World   "
    XCTAssertTrue(s1.trimmedLeft() == "Hello World   ")
    XCTAssertTrue(s1.trimmedRight() == "   Hello World")
    XCTAssertTrue(s1.trimmed() == "Hello World")
    
    let s2 = "   \u{200B} Hello World   "
    XCTAssertTrue(s2.trimmedLeft() == "Hello World   ")
    XCTAssertTrue(s2.trimmed() == "Hello World")
    
    let s3 = "Hello World\n\n   "
    XCTAssertTrue(s3.trimmedRight() == "Hello World")
    XCTAssertTrue(s3.trimmed() == "Hello World")
    
    
    let s4 = "abcdefg"
    XCTAssertTrue(s4.trimmedRight(characterSet: NSCharacterSet.alphanumerics) == "")
    XCTAssertTrue(s4.trimmedLeft(characterSet: NSCharacterSet.alphanumerics) == "")
    
    let s5 = "  abcdefg  "
    XCTAssertTrue(s5.trimmedRight(characterSet: NSCharacterSet.alphanumerics) == "  abcdefg  ")
    XCTAssertTrue(s5.trimmedLeft(characterSet: NSCharacterSet.alphanumerics) == "  abcdefg  ")
    XCTAssertTrue(s5.trimmed() == "abcdefg")
  }
  
  func test_capitalizedFirstCharacter() {
    let s1 = "   hello world   "
    XCTAssertTrue(s1.capitalizedFirstCharacter() == s1)
