discard """ file: "tstrutil.nim" output: "ha/home/a1xyz/usr/bin" """ # test the new strutils module import strutils proc testStrip() = write(stdout, strip(" ha ")) proc testRemoveSuffix = var s = "hello\n\r" s.removeSuffix assert s == "hello\n" s.removeSuffix assert s == "hello" s.removeSuffix assert s == "hello" s = "hello\n\n" s.removeSuffix assert s == "hello\n" s = "hello\r" s.removeSuffix assert s == "hello" s = "hello \n there" s.removeSuffix assert s == "hello \n there" s = "hello" s.removeSuffix("llo") assert s == "he" s.removeSuffix('e') assert s == "h" s = "hellos" s.removeSuffix({'s','z'}) assert s == "hello" s.removeSuffix({'l','o'}) assert s == "hell" # Contrary to Chomp in other languages # empty string does not change behaviour s = "hello\r\n\r\n" s.removeSuffix("") assert s == "hello\r\n\r\n" proc main() = testStrip() testRemoveSuffix() for p in split("/home/a1:xyz:/usr/bin", {':'}): write(stdout, p) proc testDelete = var s = "0123456789ABCDEFGH" delete(s, 4, 5) assert s == "01236789ABCDEFGH" delete(s, s.len-1, s.len-1) assert s == "01236789ABCDEFG" delete(s, 0, 0) assert s == "1236789ABCDEFG" proc testFind = assert "0123456789ABCDEFGH".find('A') == 10 assert "0123456789ABCDEFGH".find('A', 5) == 10 assert "0123456789ABCDEFGH".find('A', 5, 10) == 10 assert "0123456789ABCDEFGH".find('A', 5, 9) == -1 assert "0123456789ABCDEFGH".find("A") == 10 assert "0123456789ABCDEFGH".find("A", 5) == 10 assert "0123456789ABCDEFGH".find("A", 5, 10) == 10 assert "0123456789ABCDEFGH".find("A", 5, 9) == -1 assert "0123456789ABCDEFGH".find({'A'..'C'}) == 10 assert "0123456789ABCDEFGH".find({'A'..'C'}, 5) == 10 assert "0123456789ABCDEFGH".find({'A'..'C'}, 5, 10) == 10 assert "0123456789ABCDEFGH".find({'A'..'C'}, 5, 9) == -1 proc testRFind = assert "0123456789ABCDEFGAH".rfind('A') == 17 assert "0123456789ABCDEFGAH".rfind('A', 13) == 10 assert "0123456789ABCDEFGAH".rfind('H', 13) == -1 assert "0123456789ABCDEFGAH".rfind("A") == 17 assert "0123456789ABCDEFGAH".rfind("A", 13) == 10 assert "0123456789ABCDEFGAH".rfind("H", 13) == -1 assert "0123456789ABCDEFGAH".rfind({'A'..'C'}) == 17 assert "0123456789ABCDEFGAH".rfind({'A'..'C'}, 13) == 12 assert "0123456789ABCDEFGAH".rfind({'G'..'H'}, 13) == -1 testDelete() testFind() testRFind() assert(insertSep($1000_000) == "1_000_000") assert(insertSep($232) == "232") assert(insertSep($12345, ',') == "12,345") assert(insertSep($0) == "0") assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffix") == 0) assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffi1") == 1) assert(editDistance("prefix__hallo_suffix", "prefix__HALLO_suffix") == 5) assert(editDistance("prefix__hallo_suffix", "prefix__ha_suffix") == 3) assert(editDistance("prefix__hallo_suffix", "prefix") == 14) assert(editDistance("prefix__hallo_suffix", "suffix") == 14) assert(editDistance("prefix__hallo_suffix", "prefix__hao_suffix") == 2) assert(editDistance("main", "malign") == 2) assert "/1/2/3".rfind('/') == 4 assert "/1/2/3".rfind('/', 1) == 0 assert "/1/2/3".rfind('0') == -1 assert(toHex(100i16, 32) == "00000000000000000000000000000064") assert(toHex(-100i16, 32) == "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C") assert(' '.repeat(8)== " ") assert(" ".repeat(8) == " ") assert(spaces(8) == " ") assert(' '.repeat(0) == "") assert(" ".repeat(0) == "") assert(spaces(0) == "") main() #OUT ha/home/a1xyz/usr/bin