import { assertEquals } from "jsr:@std/assert"
// aliasing our functions for brevity
const eq = assertEquals, fn = trimEndDotSlashes
eq(fn("a/b.zip/c.txt"), "a/b.zip/c.txt")
eq(fn("//a/b.zip//"), "//a/b.zip")
eq(fn("/"), "")
eq(fn("./"), "")
eq(fn("//././//./"), "")
eq(fn(".//././//./"), "")
eq(fn(".//./..///./"), ".//./../")
eq(fn("/a/b.zip/./"), "/a/b.zip")
eq(fn("/a/b.zip/../"), "/a/b.zip/../")
eq(fn("/a/b.zip/..//"), "/a/b.zip/../")
eq(fn("/a/b.zip/.././"), "/a/b.zip/../")
eq(fn("a/b.zip///././///.////"), "a/b.zip")
eq(fn("/a/b.zip///././///.////"), "/a/b.zip")
eq(fn("/a/b.zip/.././/.././///.////"), "/a/b.zip/.././/../")
eq(fn("/a/b.zip/././././///.////"), "/a/b.zip")
eq(fn("/a/b.zip./././././///.////"), "/a/b.zip.")
eq(fn("/a/b.zip../././././///.////"), "/a/b.zip..")
eq(fn("/a/b.zip.../././././///.////"), "/a/b.zip...")
eq(fn("file:///a/b.zip//c.txt"), "file:///a/b.zip//c.txt")
trim all trivial trailing forward-slashes ("/") and dot-slashes ("./"), at the end a string. but exclude non-trivial dotdotslash ("/../") from being wrongfully trimmed.
TODO: this operation is somewhat expensive, because: