1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
--
-- tests/test_string.lua
-- Automated test suite for the new string functions.
-- Copyright (c) 2008 Jason Perkins and the Premake project
--
local suite = test.declare("string")
--
-- string.endswith() tests
--
function suite.endswith_ReturnsTrue_OnMatch()
test.istrue(string.endswith("Abcdef", "def"))
end
function suite.endswith_ReturnsFalse_OnMismatch()
test.isfalse(string.endswith("Abcedf", "efg"))
end
function suite.endswith_ReturnsFalse_OnLongerNeedle()
test.isfalse(string.endswith("Abc", "Abcdef"))
end
function suite.endswith_ReturnsFalse_OnNilHaystack()
test.isfalse(string.endswith(nil, "ghi"))
end
function suite.endswith_ReturnsFalse_OnNilNeedle()
test.isfalse(string.endswith("Abc", nil))
end
function suite.endswith_ReturnsTrue_OnExactMatch()
test.istrue(string.endswith("/", "/"))
end
--
-- string.explode() tests
--
function suite.explode_ReturnsParts_OnValidCall()
test.isequal({"aaa","bbb","ccc"}, string.explode("aaa/bbb/ccc", "/", true))
end
--
-- string.startswith() tests
--
function suite.startswith_OnMatch()
test.istrue(string.startswith("Abcdef", "Abc"))
end
function suite.startswith_OnMismatch()
test.isfalse(string.startswith("Abcdef", "ghi"))
end
function suite.startswith_OnLongerNeedle()
test.isfalse(string.startswith("Abc", "Abcdef"))
end
function suite.startswith_OnEmptyHaystack()
test.isfalse(string.startswith("", "Abc"))
end
function suite.startswith_OnEmptyNeedle()
test.istrue(string.startswith("Abcdef", ""))
end
--
-- string.escapepattern() tests
--
function suite.escapepattern_escapes()
test.isequal("boost_filesystem%-vc140%.1%.61%.0%.0", string.escapepattern("boost_filesystem-vc140.1.61.0.0"))
test.isequal("footage/down/temp/cars_%[100%]_upper/cars_%[100%]_upper%.exr", string.escapepattern("footage/down/temp/cars_[100]_upper/cars_[100]_upper.exr"))
end
function suite.escapepattern_doesntEscape()
local s = '<something foo="bar" />'
test.isequal(s, s:escapepattern())
s = 'lorem ipsum dolor sit amet'
test.isequal(s, s:escapepattern())
s = 'forward/slashes/foo/bar'
test.isequal(s, s:escapepattern())
s = '\\back\\slashes'
test.isequal(s, s:escapepattern())
s = 'new\nlines'
test.isequal(s, s:escapepattern())
end
|