| 1 | var test = require('tape');
|
|---|
| 2 | var evaluate = require('../');
|
|---|
| 3 | var parse = require('esprima').parse;
|
|---|
| 4 |
|
|---|
| 5 | test('untagged template strings', function (t) {
|
|---|
| 6 | t.plan(1);
|
|---|
| 7 |
|
|---|
| 8 | var src = '`${1},${2 + n},${`4,5`}`';
|
|---|
| 9 | var ast = parse(src).body[0].expression;
|
|---|
| 10 | var res = evaluate(ast, {
|
|---|
| 11 | n: 6
|
|---|
| 12 | });
|
|---|
| 13 | t.deepEqual(res, '1,8,4,5');
|
|---|
| 14 | });
|
|---|
| 15 |
|
|---|
| 16 | test('tagged template strings', function (t) {
|
|---|
| 17 | t.plan(3);
|
|---|
| 18 |
|
|---|
| 19 | var src = 'template`${1},${2 + n},${`4,5`}`';
|
|---|
| 20 | var ast = parse(src).body[0].expression;
|
|---|
| 21 | var res = evaluate(ast, {
|
|---|
| 22 | template: function (strings) {
|
|---|
| 23 | t.deepEqual(strings, ['', ',', ',', '']);
|
|---|
| 24 |
|
|---|
| 25 | var values = [].slice.call(arguments, 1);
|
|---|
| 26 | t.deepEqual(values, [1, 8, '4,5']);
|
|---|
| 27 |
|
|---|
| 28 | return 'foo';
|
|---|
| 29 | },
|
|---|
| 30 | n: 6
|
|---|
| 31 | });
|
|---|
| 32 | t.deepEqual(res, 'foo');
|
|---|
| 33 | })
|
|---|