123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- load("test-common.js");
- try {
- assertThrowsError(() => {
- foo`bar${baz}`;
- }, {
- error: ReferenceError,
- message: "'foo' is not defined"
- });
- assertThrowsError(() => {
- function foo() { }
- foo`bar${baz}`;
- }, {
- error: ReferenceError,
- message: "'baz' is not defined"
- });
- assertThrowsError(() => {
- undefined``````;
- }, {
- error: TypeError,
- message: "undefined is not a function"
- });
- function test1(strings) {
- assert(strings instanceof Array);
- assert(strings.length === 1);
- assert(strings[0] === "");
- return 42;
- }
- assert(test1`` === 42);
- function test2(s) {
- return function (strings) {
- assert(strings instanceof Array);
- assert(strings.length === 1);
- assert(strings[0] === "bar");
- return s + strings[0];
- }
- }
- assert(test2("foo")`bar` === "foobar");
- var test3 = {
- foo(strings, p1) {
- assert(strings instanceof Array);
- assert(strings.length === 2);
- assert(strings[0] === "");
- assert(strings[1] === "");
- assert(p1 === "bar");
- }
- };
- test3.foo`${"bar"}`;
- function test4(strings, p1) {
- assert(strings instanceof Array);
- assert(strings.length === 2);
- assert(strings[0] === "foo");
- assert(strings[1] === "");
- assert(p1 === 42);
- }
- var bar = 42;
- test4`foo${bar}`;
- function test5(strings, p1, p2) {
- assert(strings instanceof Array);
- assert(strings.length === 3);
- assert(strings[0] === "foo");
- assert(strings[1] === "baz");
- assert(strings[2] === "");
- assert(p1 === 42);
- assert(p2 === "qux");
- return (strings, value) => `${value}${strings[0]}`;
- }
- var bar = 42;
- assert(test5`foo${bar}baz${"qux"}``test${123}` === "123test");
- function review(strings, name, rating) {
- return `${strings[0]}**${name}**${strings[1]}_${rating}_${strings[2]}`;
- }
- var name = "SerenityOS";
- var rating = "great";
- assert(review`${name} is a ${rating} project!` === "**SerenityOS** is a _great_ project!");
- const getTemplateObject = (...rest) => rest;
- const getRawTemplateStrings = arr => arr.raw;
- let o = getTemplateObject`foo\nbar`;
- assert(Object.getOwnPropertyNames(o[0]).includes('raw'));
- let raw = getRawTemplateStrings`foo${1 + 3}\nbar`;
- assert(!Object.getOwnPropertyNames(raw).includes('raw'));
- assert(raw.length === 2);
- assert(raw[0] === 'foo');
- assert(raw[1].length === 5 && raw[1] === '\\nbar');
- console.log("PASS");
- } catch (e) {
- console.log("FAIL: " + e);
- }
|