A templating language that looks like Lisp and compiles to HTML
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

coreTest.js 758B

12345678910111213141516171819202122232425262728293031323334
  1. const test = require('tape')
  2. const helpers = require('./helpers')
  3. const AST = require('../src/ast')
  4. const OsloError = require('../src/osloError')
  5. test('list function', t => {
  6. t.plan(1)
  7. const tree = helpers.evaluate('(list 1 2 3)')
  8. t.deepEqual(tree[0], new AST.List({
  9. elements: [
  10. new AST.Number({ value: 1, line: 1 }),
  11. new AST.Number({ value: 2, line: 1 }),
  12. new AST.Number({ value: 3, line: 1 }),
  13. ]
  14. }))
  15. })
  16. test('length function', t => {
  17. t.plan(2)
  18. let tree = helpers.evaluate('(length (list 1 2 3))')
  19. t.deepEqual(tree[0], new AST.Number({ value: 3 }))
  20. tree = helpers.evaluate('(length 5)')
  21. t.deepEqual(
  22. tree,
  23. new OsloError({
  24. line: 1,
  25. message: 'length: argument is not a list'
  26. })
  27. )
  28. })