1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-17 16:47:22 +03:00
Commit Graph

204 Commits

Author SHA1 Message Date
Joel Martin
dd7a4f55f3 Test uncaught throw, catchless try* . Fix 46 impls.
Fixes made to: ada, c, chuck, clojure, coffee, common-lisp, cpp,
crystal, d, dart, elm, erlang, es6, factor, fsharp, gnu-smalltalk,
groovy, guile, haxe, hy, js, livescript, matlab, miniMAL, nasm, nim,
objc, objpascal, ocaml, perl, perl6, php, plsql, ps, python, r,
rpython, ruby, scheme, swift3, tcl, ts, vb, vimscript, wasm, yorick.

Catchless try* test is an optional test. Not all implementations
support catchless try* but a number were fixed so they at least don't
crash on catchless try*.
2018-12-12 14:18:26 -06:00
Joel Martin
f6f5d4f2a3 runtest.py: process output/errors as regex match.
Update output test data to be regex compatible.
2018-11-30 14:57:45 -06:00
Joel Martin
6da59ec2f4 perf: fix perf3 to show total iters instead of / 3
The run-fn-for function was originally name run-fn and was hard-coded
to run for 3 seconds. I forgot to replace the 3 with the max-secs
variable. However, given that some implementations have less than
1 iteration per second, I'm just going to drop that division and
report the iterations per max-seconds so that for the slowest
implementations we have some relative comparison instead of all of
them just reporting 0.

Thanks to Tim Morgan for discovering this bug:
699f0ad23a
2018-07-16 09:34:37 -05:00
Joel Martin
b26c8329c8
Merge pull request #324 from seven1m/add-not-test-for-nil
Test that (not nil) returns true
2018-07-12 15:44:10 -07:00
Joel Martin
bbd62dc97c tests/stepA: allow time-ms result to be signed.
In Java the time-ms value was negative. This actually still works fine
because arithmetic comparison is still correct. So allow signed
time-ms results.
2018-07-12 14:24:14 -05:00
Tim Morgan
e2352e739b Test that (not nil) returns true 2018-07-08 22:21:01 -05:00
Ben Dudson
f86d275f08 Fix bug in map: should pass args as list
This appeared only for variadic function which is used in EVAL.

Added a test to step 9 to catch this earlier.
2017-12-29 22:47:16 +00:00
Ben Dudson
40eb57d65c Fix bug in concat, add test to step 7
Concatenating multiple empty lists resulted in a return
which should be empty but was not checked.

(concat (list) (list))
-> ()

Test added to step 7 to catch, since this appeared in
self-hosting step 8 in the -> macro expansion.
2017-12-29 22:47:10 +00:00
Ben Dudson
89f7cef6dc Adding test to step7 for quasiquote
Handling of the last element of the AST
is tested by having an unquote as the last element.
2017-12-29 22:46:52 +00:00
Joel Martin
393d1140a3 tests: move number?, fn? and macro? to optional 2017-11-01 21:56:29 -05:00
Vasilij Schneidermann
2ff47a342f Fix typo 2017-10-23 17:15:42 +02:00
Dov Murik
69edbad782 tests: Use a real user-defined function when testing fn? and macro? 2017-10-14 12:20:53 +00:00
Dov Murik
59436f1a12 Add number?, fn?, macro? in stepA - tests and process guide
Ref #298
2017-10-09 20:23:39 +00:00
Dov Murik
8e59b7151b tests: Add test for unescaping "\\n" in step4
Several implementations fail when unescaping "\\n" in their reader
module because string-wide replacements of the two chars '\' and 'n' by
a newline char will replace the last two chars.
2017-09-28 07:38:23 -05:00
Dov Murik
55c2524201 tests: Add test cases in step4 and step9 2017-07-20 11:36:36 +00:00
Joel Martin
a112da51b4 Merge pull request #260 from def-/master
Update to Nim 0.17.0
2017-05-23 13:48:51 -05:00
Dennis Felsing
4603f2a931 Update to Nim 0.17.0 2017-05-23 19:07:34 +02:00
Joel Martin
681ce637b6 Deprecate tests/docker/Dockerfile 2017-05-23 11:04:32 -05:00
Joel Martin
b3658328e4 Merge branch 'master' of github.com:kanaka/mal 2016-10-31 17:41:58 -05:00
Joel Martin
37d75dc6dd Basic: pass required tests. Printer fix.
Also, move dissoc and hashmap equality tests to optional/soft since
they aren't actually needed for self-hosting.
2016-10-28 22:02:59 -05:00
Joel Martin
4e7d8a1bcf Basic: fix step6 arg test. Gensym. Misc cleanup.
- Strip linefeeds in run_argv_test.sh so that step6 arg test passes
  for basic.
- Add gensym and convert or macro.
- Add gitignore entries for transpiled basic sources.
- Add conj/seq stubs so that step4 self-host loads (if non-step4
  functions are commented out in core.mal)
- Bump up Z% value space by 256 spaces (1K)
- Remove old qb2cbm.sh
2016-10-28 00:09:56 -05:00
Vasilij Schneidermann
3c7b63d2e1 Ensure assoc updates maps properly 2016-10-24 22:50:15 +02:00
Joel Martin
70f29a2b3c Basic: step8 basics. Fix def!, let*, concat, scalars.
- Move apply logic in swap! to APPLY function in types and use that
  for macroexpand
- Abort def! if error before updating the environment
- let* wasn't properly saving A2% for the final eval. Also, the
  environment release check should be against the top-level EVAL env,
  not the root repl env.
- (concat (list) ...) was broken so fix it to ignore empty lists that
  aren't in the trailing position.
- nil, false and true in the reader were always being returned as
  references (with an ref cnt) but we have the assumption that
  references (14) are not ref cnt'd and are always part of a compound
  type so fix the reader to just return the interned addresses.
2016-10-06 22:22:57 -05:00
Joel Martin
9e8f521118 Basic: step7 basics, reader macros. step1,3 tests.
Also:
- Add some step1 and step3 tests that were discovered during Basic
  development.
- Move PR_MEMORY* to debug.in.bas
- Simplify Makefile deps
- Fix freeing in steps4-7 when error at deeper level
  i.e. (prn (abc))
- add SLICE function to support concat implementation.
2016-09-21 23:27:12 -05:00
Joel Martin
b7b1787f83 Basic: step2 basics. Vectors and hash-maps.
Adjust step2 tests to keep values within 2 byte int range.
2016-09-10 22:13:27 -05:00
Joel Martin
5e38bc9922 Fix step4 case sensitivity test. 2016-08-24 17:48:56 -05:00
Joel Martin
a7ed71b9e2 tests: additional tests based on PowerShell impl
- step1: empty list and vector
- step4: special forms case-sensitivity
- step9: apply with an empty list/vector
2016-08-24 17:39:24 -05:00
Dov Murik
eb63e565f3 tests: Verify case sensitivity of names and strings 2016-06-13 01:11:41 -04:00
Dov Murik
d3c401c1e8 tests: Test *ARGV* is set correctly in step 6
Add new mini test harness run_argv_test.sh to run the Mal interpreter
with different command-line arguments and test the stdout of that
process.

The main Makefile will automatically run the new harness whenever step 6
is tested (either directly or during REGRESS=1 of a more advanced step).
2016-05-11 11:31:04 -04:00
Joel Martin
c4dd3eb8c4 Merge pull request #210 from dubek/test-slurp-newline
tests: Test slurp captures final newline in step6
2016-05-10 12:41:44 -05:00
Dov Murik
2cd015e56a tests: Test slurp captures final newline in step6 2016-05-10 12:36:06 -04:00
Joel Martin
a1eb30fcc9 Use more common spelling of deferrable.
Deferable is apprently a less common but correct spelling.
2016-05-10 10:26:39 -05:00
Joel Martin
46e2568944 Makefile/runtest/tests: deferable/optional options
- tests/*: marked with deferable and optional runtest flags. Some
  moving around of tests within different sections to more closely
  align with the guide.
- runtest.py has --deferable/--no-deferable and
  --optional/--no-optional to control whether tests marked as
  deferable and optional are tested.
- Makefile: DEFERABLE and OPTIONAL top level flags to be passed to
  runtest when running tests.
- Also, fix problems in java quoting revealed by step7 test changes.
2016-05-09 21:14:15 -05:00
Joel Martin
c3a87f5174 tests: make throw of non-strings optional/soft. 2016-05-02 23:37:15 -05:00
Joel Martin
a26c2568b9 tests: move empty list test from step3 to step2. 2016-04-02 17:50:07 -05:00
Dov Murik
2318398419 tests: Add test for literal empty list in step3 2016-03-27 22:16:55 -04:00
Joel Martin
dca6b58578 Tests: move step5 non-TCO tests to per impl.
- Remove most of the step5 excludes in the Makefile except for ones
  which don't have TCO capability at all (or the implementation is too
  slow): bash, make, mal, matlab.

- Make perf_EXCLUDES consistent with other excludes.

- Add a print-FOO target which prints the resolved value of Makefile
  variable FOO. For example, `make print-IMPLS` to print the list of
  implementations.
2016-03-14 23:39:21 -05:00
Joel Martin
0067158f6d Object Pascal: full implementation. Test cleanup.
- Move vector related step4 and step6 tests to optional.
- Fix two step9 tests that weren't checking return value.
2016-03-13 17:12:01 -05:00
Joel Martin
077cdf6ff2 Merge pull request #184 from dubek/mal-time-ms
mal: Add time-ms to core; add tests for time-ms
2016-03-09 14:18:07 -06:00
Dov Murik
05ad2bf6cd ruby: concat should not modify its argument 2016-03-09 14:23:13 -05:00
Dov Murik
44c9a7d8be mal: Add time-ms to core; add tests for time-ms 2016-03-09 13:09:11 -05:00
Joel Martin
de3f3ed1ff tests/step3: test def! within let*. Fix groovy build. 2016-03-07 22:25:30 -06:00
Joel Martin
a61be4d37d bash: fix negative nums, more complex test.
Issue #178
2016-02-26 21:00:14 -06:00
Dov Murik
2c1eb1af68 ocaml: fix negative numbers handling 2016-02-25 17:39:32 -08:00
Joel Martin
8e32dbb6aa groovy, java, scala: add seq/string?.
Issue #166.

Also, add keyword? step9 test on zero length strings.
2016-02-12 09:59:39 -06:00
Joel Martin
329b6db3cf Add seq and string? tests.
Issue #166
2016-02-11 09:17:49 -06:00
Joel Martin
17946efbad Haxe, Julia, miniMAL: self-hosting fixes.
- Haxe: correctly set *ARGV*
- Julia: fix map function concatenation of results
- miniMAL: fix (= 'abc nil) and add test in step7 to catch it.
2016-02-05 13:27:30 -06:00
Dov Murik
4e284171ed tests: Add tests for (first nil) and (rest nil) 2016-02-03 21:23:45 -05:00
Joel Martin
35ea7a9ec7 Remove soft around nested equality tests
Related to issue #123
2016-02-01 15:10:12 -06:00
Dov Murik
163964afe1 tests: verify list/vector equality in hash-map values
This is still in the soft-tests section of tests/step9_try.mal.

Issues: #116, #123
2016-02-01 11:06:00 -05:00
Dov Murik
6205526a91 tests: Verify extra args (after &) are in a mal list
step4: before TCO
step9: after TCO and bypass TCO using `apply`
2016-01-29 21:37:30 -05:00
Dov Murik
a16bb08f51 python: Fix equality of unicode/normal strings in Python 2.x 2016-01-27 13:02:14 -05:00
Joel Martin
9bca0b57e3 tests: make macro result evaluation mandatory. 2016-01-26 14:21:05 -06:00
Dov Murik
718f8e4d6c tests/stepA: add gensym and clean or macro tests 2016-01-22 23:47:51 -05:00
Dov Murik
a193b2c470 tests/step8: remove and macro tests, add ->> macro tests
1. `gensym` isn't yet available in step8
2. `and` tests are very slow in some implementations
3. ->> macro is more complex
4. moved core.mal to the end so it won't override the builtin `or` macro
2016-01-22 23:47:50 -05:00
Joel Martin
6523be9f1a Add macro result eval test.
Test to cover bug https://github.com/kanaka/mal/issues/142
2016-01-20 15:28:55 -06:00
Dov Murik
627bd6f766 process, tests: move atoms implementation from stepA to step6 2016-01-06 14:33:55 +02:00
Dov Murik
3dcaa6ce43 js: Fix exception in `(nil) 2015-12-28 10:22:58 +02:00
Dov Murik
c4cd270022 tests: Add str and pr-str tests in step4 and step9
Specifically test serializing nil, empty collections and `str` of
collections.  The Mal implementation is *not* identical to Clojure for
these cases.
2015-12-17 22:01:31 +02:00
Dov Murik
539427f0db nim: fix tokenizer endless loop (and out-of-memory) on bad input
The input string `(prn "abc` caused the nim implementaion (from step1
onwards) to enter an endless loop in tokenize (which eventually caused
out-of-memory).

The fix verfies that indeed the regex matches a non-empty substring
before adding that substring as a token.
2015-12-04 15:35:39 -05:00
Joel Martin
c46b421a24 Haskell: fix simple vector equality. Add test.
- Was missing vector to vector equality but never noticed because test
  was missing.
- Related to #123
2015-12-03 16:27:47 -06:00
Dov Murik
6496cd1d17 tests: add tests for nil hashmap values 2015-12-02 15:52:32 -05:00
Joel Martin
5044ce44f4 Tests: add nested hash-map tests. 2015-12-02 11:16:09 -06:00
Dov Murik
4b7f92e5d6 tests: add soft tests for nested vector/list equality in step 4 2015-11-30 10:35:14 -05:00
Dov Murik
c362489f35 tests: add more hash equality test cases in step 9 2015-11-17 21:19:30 -05:00
Joel Martin
a0b63ee477 hash-map equality: bash, c, coffee, cs, es6, ...
- hash-map equality support for bash, c, coffee, cs, es6, java, js,
  julia, make, php.
- also, add another test to catch another hash-map in-equality: same
  keys, different values
2015-11-16 23:28:58 -06:00
Dov Murik
9af1191f5d tests: step9: add hash-map equality tests (as soft tests) 2015-11-09 22:24:02 -05:00
Joel Martin
595376919b Misc cleanup for midwest.io presentation. 2015-11-07 15:31:25 -06:00
Joel Martin
8d78bc26bf All: fix read/print of \\, and \n 2015-10-30 22:05:49 -05:00
Joel Martin
953772ca00 step5 test: group related test code together. 2015-10-27 15:33:53 -05:00
Javier Fernandez-Ivern
b25e3d29fb Reduced the mutually recursive function test size 2015-10-27 15:05:40 -05:00
Javier Fernandez-Ivern
5e43076014 Added TCO test for mutually recursive functions 2015-10-27 13:17:56 -05:00
Javier Fernandez-Ivern
6132da853d Fixed final bug with swap, added tests 2015-10-26 21:49:58 -05:00
Javier Fernandez-Ivern
f39c5a2633 Fixed step 6 tests 2015-10-26 21:31:44 -05:00
Javier Fernandez-Ivern
2eb2cac230 Fixed several self-hosting issues, added atom? tests 2015-10-26 20:27:29 -05:00
Joel Martin
922d4c3b9b Makefile and tests/step4: Self-host test fixes.
- Always use stepA for the RUNSTEP macro in addition to the
  STEP_TO_PROG macro.
- Disable the (fib 10) test because this is really too slow for
  several self-hosted implementations to complete before a timeout.
2015-10-11 22:10:59 -05:00
Joel Martin
378d1ff68e tests/step0: fix tests to not confuse runtest.py
- the test starts with ';' which is meaningful to runtest.py.
2015-10-11 22:10:06 -05:00
Joel Martin
98af2ae360 runtest.py: add --soft option, refactor test reader.
- also, mark later stepA optional as soft.
2015-10-09 09:31:29 -05:00
ekmartin
bb52697591 Update README/Makefile/Dockerfile 2015-09-10 01:47:55 +02:00
Mitsuru Kariya
8c7587af67 Adds GNU awk implementaion 2015-08-26 00:46:31 +09:00
Joel Martin
a9cd654347 Add groovy implementation.
I'm away from my main workstation for a week and unfortunately, I only
copied the code but not the branch with full history so this is just
the implementation. However, the history isn't all that interesting
(mostly just the steps one at a time) and I wanted to get this out
there.
2015-05-18 19:54:18 -07:00
def
de69b63902 Use Nim 0.11.0 2015-04-30 17:51:20 +02:00
Joel Martin
cd80c38146 Dockerfile: move Julia & Erlang. Add guile & factor. 2015-04-08 17:31:01 -05:00
Nathan Fiedler
83d3c03370 Update Dockerfile to install Erlang/OTP R17 2015-04-04 09:15:44 -07:00
Joel Martin
520051615c tests: add test to make sure *host-language* is set 2015-04-03 18:31:14 -05:00
Joel Martin
7e0bb668cf Julia: self-hosting.
- fix meta and swap! functions and add missing tests
- fix eval_ast of hash-maps across all steps
2015-03-31 23:04:45 -05:00
Joel Martin
fc15535c69 Julia: add Dockerfile dependencies. 2015-03-31 23:04:45 -05:00
Stephen Thirlwall
79f8ce3ec5 Add C++ packages to tests/docker/Dockerfile
Thought I'd already done this. Must've got lost in all the rebasing...
2015-03-28 12:41:45 +11:00
Joel Martin
8b142f0828 Swift: lang cnt to 28, note XCode, skip in docker.
- Update the README to 28 languages.
- Note that Swift impl currently requires XCode/OS X :-(
- Add Swift to skip list in Dockerfile.
2015-03-24 09:29:53 -06:00
Joel Martin
20c05e3561 racket: fix apply/vector
- re-order apply/vector tests into optional section.
2015-03-22 14:43:26 -05:00
Stephen Thirlwall
3fcc9c8d01 Step 9 test cases for apply on vectors 2015-03-22 22:45:45 +11:00
Joel Martin
0afb3ee867 Dockerfile: make Nim build one layer.
Save couple hundred MB or so.
2015-03-18 14:51:32 -05:00
Joel Martin
b3c30da9fc runtest: set pty size to fix readline of long lines.
- Also, add a long line test to step0 tests.
- Fix java step0 arg parsing.
- Fix postscript long line reads (larger buffer)
- Add mal step0_repl
2015-03-18 13:08:08 -05:00
Joel Martin
6b9eb18e01 tests: move reorder tests to better match guide. 2015-03-18 08:12:19 -05:00
Stephen Thirlwall
ba53efc2b5 Add test that (with-meta X ...) returns an X 2015-03-17 11:14:13 +11:00
Joel Martin
11df60ad8c Merge pull request #44 from sdt/step9-typo-fix
Remove extra ) from step9 test snippet
2015-03-16 09:51:21 -05:00
Stephen Thirlwall
617bdb3552 Remove extra ) from step9 test snippet
My reader complains if there is extra input after the top-level
read_form, so this test was inadvertently failing for me.
2015-03-16 16:55:34 +11:00
Stephen Thirlwall
58002e1bf3 Step 9 apply tests test user fns as well as core
I had a bug in my apply core function. It worked for core functions, but
not for user-defined functions.

This bug escaped direct testing, but caused problems in self-host
testing.

Here's a couple of simple test cases that catch those errors.
2015-03-16 16:49:28 +11:00
Joel Martin
4e7296f90a guide clarifications, but order for step5 tests. 2015-03-14 17:34:49 -05:00
Joel Martin
dbac60df00 All: move metadata, atoms, readline, conj to stepA.
- Move some of the more optional things (conj, readline) to stepA. All
  implementations pass step9 tests now.
- Move metadata and atoms to stepA.
- Update step9 and stepA diagrams.
2015-03-14 17:17:14 -05:00