UNPKG

jsx

Version:

a faster, safer, easier JavaScript

137 lines (114 loc) 5.84 kB
// JSX_TEST import "test-case.jsx"; import "../../src/util.jsx"; class _Test extends TestCase { function testFormat() : void { this.expect( Util.format("foo", new string[]) ).toBe("foo"); this.expect( Util.format("foo %1", ["bar"])).toBe("foo bar"); this.expect( Util.format("foo %1 %1", ["bar"])).toBe("foo bar bar"); this.expect( Util.format("foo %2 %1", ["bar", "baz"]) ).toBe('foo baz bar'); this.expect( Util.format("100%%1 %1", ["foo"]) ).toBe("100%1 foo"); } function testRepeat() : void { this.expect( Util.repeat("x", 4) ).toBe("xxxx"); this.expect( Util.repeat("ab", 4) ).toBe("abababab"); this.expect( Util.repeat("z", 0) ).toBe(""); } function testEncodeStringLiteral() : void { this.expect(Util.encodeStringLiteral("")).toBe('""'); this.expect(Util.encodeStringLiteral("abc")).toBe('"abc"'); this.expect(Util.encodeStringLiteral(" ")).toBe('" "'); this.expect(Util.encodeStringLiteral('"')).toBe('"\\""'); this.expect(Util.encodeStringLiteral('\0')).toBe('"\\0"'); this.expect(Util.encodeStringLiteral('\\')).toBe('"\\\\"'); this.expect(Util.encodeStringLiteral('\r')).toBe('"\\r"'); this.expect(Util.encodeStringLiteral('\n')).toBe('"\\n"'); this.expect(Util.encodeStringLiteral('\t')).toBe('"\\t"'); this.expect(Util.encodeStringLiteral('\u0345')).toBe('"\\u0345"'); this.expect(Util.encodeStringLiteral('foo\nbar\nbaz\n')).toBe('"foo\\nbar\\nbaz\\n"'); } function testDecodeStringLiteral() : void { this.expect(Util.decodeStringLiteral("''")).toBe(""); this.expect(Util.decodeStringLiteral('""')).toBe(""); this.expect(Util.decodeStringLiteral("'abc'")).toBe("abc"); this.expect(Util.decodeStringLiteral("'\\''")).toBe("'"); this.expect(Util.decodeStringLiteral('"\\""')).toBe('"'); this.expect(Util.decodeStringLiteral("'\\\\'")).toBe("\\"); this.expect(Util.decodeStringLiteral("'\\b'")).toBe("\b"); this.expect(Util.decodeStringLiteral("'\\f'")).toBe("\f"); this.expect(Util.decodeStringLiteral("'\\n'")).toBe("\n"); this.expect(Util.decodeStringLiteral("'\\t'")).toBe("\t"); this.expect(Util.decodeStringLiteral("'\\v'")).toBe("\v"); this.expect(Util.decodeStringLiteral("'\\u0041'")).toBe("A"); this.expect(Util.decodeStringLiteral("'\\0'")).toBe("\0"); this.expect(Util.decodeStringLiteral("'!\\u0041!\\0!\\n!'")).toBe("!A!\0!\n!"); } function testResolvePath() : void { this.expect(Util.resolvePath("a/b/c")).toBe("a/b/c"); this.expect(Util.resolvePath("a/./b")).toBe("a/b"); this.expect(Util.resolvePath("./a/b")).toBe("a/b"); this.expect(Util.resolvePath("a/../b")).toBe("b"); this.expect(Util.resolvePath("a/../../b")).toBe("../b"); this.expect(Util.resolvePath("../../a")).toBe("../../a"); this.expect(Util.resolvePath("/a")).toBe("/a"); this.expect(Util.resolvePath("/a/b/c")).toBe("/a/b/c"); this.expect(Util.resolvePath("/a/../b")).toBe("/b"); this.expect(Util.resolvePath("/a/b/../../c")).toBe("/c"); this.expect(Util.resolvePath("/a/../../c")).toBe("c"); this.expect(Util.resolvePath("a//b//c")).toBe("a/b/c"); this.expect(Util.resolvePath("a\\b\\c")).toBe("a/b/c"); this.expect(Util.resolvePath("."), ".").toBe("."); this.expect(Util.resolvePath("/"), "/").toBe("/"); } function testRelativePath() : void { this.expect(Util.relativePath("a/b/c", "a/b/d", false)).toBe("../d"); this.expect(Util.relativePath("a/b/c", "a/x/d", false)).toBe("../../x/d"); this.expect(Util.relativePath("/a/b/c", "a/b/d", false), "for abs path").toBe("../d"); this.expect(Util.relativePath("/a/b/c", "a/x/d", false), "for abs path").toBe("../../x/d"); this.expect(Util.relativePath("a/b/c", "a/b/d", true)).toBe("d"); this.expect(Util.relativePath("a/b/c", "a/x/d", true)).toBe("../x/d"); this.expect(Util.relativePath("/a/b/c", "a/b/d", true), "for abs path").toBe("d"); this.expect(Util.relativePath("/a/b/c", "a/x/d", true), "for abs path").toBe("../x/d"); } function testDirname() : void { this.expect(Util.dirname("/foo/bar")).toBe("/foo"); this.expect(Util.dirname("/foo//bar")).toBe("/foo"); this.expect(Util.dirname("foo/bar")).toBe("foo"); this.expect(Util.dirname("foo//bar")).toBe("foo"); this.expect(Util.dirname("t//t")).toBe("t"); this.expect(Util.dirname("")).toBe("."); } function testToOrdinal() : void { this.expect(Util.toOrdinal(1)).toBe("1st"); this.expect(Util.toOrdinal(2)).toBe("2nd"); this.expect(Util.toOrdinal(3)).toBe("3rd"); this.expect(Util.toOrdinal(4)).toBe("4th"); this.expect(Util.toOrdinal(10)).toBe("10th"); this.expect(Util.toOrdinal(11)).toBe("11th"); this.expect(Util.toOrdinal(12)).toBe("12th"); this.expect(Util.toOrdinal(13)).toBe("13th"); this.expect(Util.toOrdinal(20)).toBe("20th"); this.expect(Util.toOrdinal(21)).toBe("21st"); this.expect(Util.toOrdinal(22)).toBe("22nd"); this.expect(Util.toOrdinal(23)).toBe("23rd"); } function testTypedMap() : void { var map = new TypedMap.<Pair.<int,int>,int>((a, b) -> { return a.first == b.first && a.second == b.second; }); map.set(new Pair.<int,int>(10, 20), 30); map.set(new Pair.<int,int>(10, 20), 40); map.set(new Pair.<int,int>(10, 30), 50); map.set(new Pair.<int,int>(20, 30), 60); this.expect(map.has(new Pair.<int,int>(10, 20)), "has").toBe(true); this.expect(map.has(new Pair.<int,int>(20, 20)), "has").toBe(false); this.expect(map.get(new Pair.<int,int>(10, 20)), "get").toBe(40); this.expect(map.get(new Pair.<int,int>(20, 20)), "get").toBe(null); this.expect(map.get(new Pair.<int,int>(20, 30)), "get").toBe(60); map.delete(new Pair.<int,int>(20, 30)); this.expect(map.get(new Pair.<int,int>(20, 30)), "get").toBe(null); map.clear(); this.expect(map.has(new Pair.<int,int>(10, 20)), "has after clear").toBe(false); this.expect(map.has(new Pair.<int,int>(20, 20)), "has after clear").toBe(false); } }