1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-11 21:57:38 +03:00
mal/impls/lua/tests/stepA_mal.mal
Joel Martin 8a19f60386 Move implementations into impls/ dir
- Reorder README to have implementation list after "learning tool"
  bullet.

- This also moves tests/ and libs/ into impls. It would be preferrable
  to have these directories at the top level.  However, this causes
  difficulties with the wasm implementations which need pre-open
  directories and have trouble with paths starting with "../../". So
  in lieu of that, symlink those directories to the top-level.

- Move the run_argv_test.sh script into the tests directory for
  general hygiene.
2020-02-10 23:50:16 -06:00

39 lines
789 B
Plaintext

;; Testing basic Lua interop
;;; lua-eval adds the string "return " to the beginning of the evaluated string
;;; and supplies that to Lua's loadstring(). If complex programs are needed,
;;; those can be wrapped by an anonymous function which is called immediately
;;; (see the foo = 8 example below).
(lua-eval "7")
;=>7
(lua-eval "'7'")
;=>"7"
(lua-eval "123 == 123")
;=>true
(lua-eval "123 == 456")
;=>false
(lua-eval "{7,8,9}")
;=>(7 8 9)
(lua-eval "{abc = 789}")
;=>{"abc" 789}
(lua-eval "print('hello')")
;/hello
;=>nil
(lua-eval "(function() foo = 8 end)()")
(lua-eval "foo")
;=>8
(lua-eval "string.gsub('This sentence has five words', '%w+', function(w) return '*'..#w..'*' end)")
;=>"*4* *8* *3* *4* *5*"
(lua-eval "table.concat({3, 'a', 45, 'b'}, '|')")
;=>"3|a|45|b"