feat(parse_transition): first version of parse_transition, with tests

This commit is contained in:
swaits committed 2025-02-02 20:11:01 -08:00
commit bdc28c4e83
9 files changed
+342

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
require "src.util.string"
describe "string.split", ->
it "returns an empty table when given an empty string", ->
result = split ""
assert.is_table result
assert.are.equal 0, #result
it "returns an empty table when given a string containing only whitespace", ->
result = split " \t \n"
assert.is_table result
assert.are.equal 0, #result
it "splits a single word correctly", ->
result = split "hello"
assert.are.same { "hello" }, result
it "splits two words separated by a single space", ->
result = split "hello world"
assert.are.same { "hello", "world" }, result
it "handles multiple spaces between words", ->
result = split "hello world"
assert.are.same { "hello", "world" }, result
it "handles leading and trailing whitespace", ->
result = split " hello world "
assert.are.same { "hello", "world" }, result
it "handles tabs and newline characters as whitespace", ->
result = split "hello\tworld\nLua"
assert.are.same { "hello", "world", "Lua" }, result
it "treats punctuation as part of the word", ->
result = split "hello, world!"
assert.are.same { "hello,", "world!" }, result
it "splits a string with various whitespace characters", ->
result = split " one \t two\n three \n\t four"
assert.are.same { "one", "two", "three", "four" }, result
it "returns a new table on each call", ->
result1 = split "a b c"
result2 = split "a b c"
assert.not_equal result1, result2
it "errors when the input is not a string", ->
assert.has_error => split nil
assert.has_error => split 123
it "does not modify the input string", ->
s = " immutable test "
original = s
split s
assert.are.equal original, s