     XCTAssertTrue(s.removingPrefix(upToPosition: -1) == "")
     XCTAssertTrue("".removingPrefix(upToPosition: 1) == "")
   }
-
+  
   func test_removingSuffix() {
-
+    
     let s = "hello"
     XCTAssertTrue(s.removingSuffix(fromPosition: 0) == "hello")
     XCTAssertTrue(s.removingSuffix() == "hell")

    /// https://oleb.net/blog/2016/12/emoji-4-0/
    XCTAssertTrue(s4.truncate(at: 5) == "a🇮🇹bb🇮🇹🇮🇹…")
    XCTAssertTrue(s4.truncate(at: 6) == "a🇮🇹bb🇮🇹🇮🇹c…")

    let s5 = "\u{2126}"
    XCTAssertTrue(s5.truncate(at: 0) == "…")
    XCTAssertTrue(s5.truncate(at: 4) == "Ω")
    XCTAssertTrue(s5.truncate(at: 100) == "Ω")

    let s6 = "cafè"
    XCTAssertTrue(s6.truncate(at: 1) == "c…")
    XCTAssertTrue(s6.truncate(at: 4) == "cafè")

    let s7 = "👍👍👍👍" // 4 characters
    XCTAssertTrue(s7.truncate(at: 1) == "👍…")
    XCTAssertTrue(s7.truncate(at: 2) == "👍👍…")
    XCTAssertTrue(s7.truncate(at: 3) == "👍👍👍…")

    let s8 = "👍👍🏻👍🏼👍🏾" // 7 characters (4x👍 + 3 skin tone)
    XCTAssertTrue(s8.truncate(at: 1) == "👍…")
    XCTAssertTrue(s8.truncate(at: 2) == "👍👍…") //skin tone truncated
    XCTAssertTrue(s8.truncate(at: 3) == "👍👍🏻…")
    XCTAssertTrue(s8.truncate(at: 4) == "👍👍🏻👍…") //skin tone truncated
    XCTAssertTrue(s8.truncate(at: 5) == "👍👍🏻👍🏼…")

    //flags sperated by a ZERO WIDTH SPACE
    let s9 = "🇮🇹\u{200B}🇮🇹\u{200B}🇮🇹"
    XCTAssertTrue(s9.truncate(at: 1) == "🇮🇹…")

    XCTAssertTrue("Italy 🇮🇹\u{200B}🇮🇹\u{200B}🇮🇹".contains("🇮🇹", caseSensitive: false))
    XCTAssertFalse("Italy 🇮🇹\u{200B}🇮🇹\u{200B}🇮🇹".contains("{20", caseSensitive: true))
  }
  
  func test_replace() {
    XCTAssertTrue("AaBbCc".replace("a", with: "Z") == "AZBbCc")
    XCTAssertTrue("AaBbCc".replace("a", with: "a") == "AaBbCc")
