template-strings.js 818 B

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