From f3acc0d67e6cd4e7245c1e169a3c0469da4373a3 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 12 Oct 2017 01:27:48 -0400 Subject: - Compilation and tests for primitive conversions. --- .../test/luxc/generator/procedure/host.jvm.lux | 100 +++++++++++++++++++++ new-luxc/test/tests.lux | 3 +- 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 new-luxc/test/test/luxc/generator/procedure/host.jvm.lux (limited to 'new-luxc/test') diff --git a/new-luxc/test/test/luxc/generator/procedure/host.jvm.lux b/new-luxc/test/test/luxc/generator/procedure/host.jvm.lux new file mode 100644 index 000000000..1dd60bc76 --- /dev/null +++ b/new-luxc/test/test/luxc/generator/procedure/host.jvm.lux @@ -0,0 +1,100 @@ +(;module: + lux + (lux [io] + (control [monad #+ do] + pipe) + (data ["R" result] + [number "int/" Number] + text/format) + ["r" math/random "r/" Monad] + [macro #+ Monad] + [host] + test) + (luxc (lang ["ls" synthesis]) + [analyser] + [synthesizer] + (generator ["@" expr] + ["@;" eval] + ["@;" runtime] + ["@;" common])) + (test/luxc common)) + +(context: "Conversions [Part 1]" + [int-sample (|> r;int (:: @ map (i.% 128))) + #let [frac-sample (int-to-frac int-sample)]] + (with-expansions [<2step> (do-template [ ] + [(test (format " / " ) + (|> (do macro;Monad + [sampleI (@;generate (|> ( ) + (list) (#ls;Procedure ) + (list) (#ls;Procedure )))] + (@eval;eval sampleI)) + (macro;run (init-compiler [])) + (case> (#R;Success valueG) + ( (:! valueG)) + + (#R;Error error) + false)))] + + ["jvm convert double-to-float" "jvm convert float-to-double" #ls;Frac frac-sample Frac f.=] + ["jvm convert double-to-int" "jvm convert int-to-double" #ls;Frac frac-sample Frac f.=] + ["jvm convert double-to-long" "jvm convert long-to-double" #ls;Frac frac-sample Frac f.=] + + ["jvm convert long-to-float" "jvm convert float-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-int" "jvm convert int-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-short" "jvm convert short-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-byte" "jvm convert byte-to-long" #ls;Int int-sample Int i.=] + )] + ($_ seq + <2step> + ))) + +(context: "Conversions [Part 2]" + [int-sample (|> r;int (:: @ map (|>. (i.% 128) int/abs))) + #let [frac-sample (int-to-frac int-sample)]] + (with-expansions [<3step> (do-template [ ] + [(test (format " / " " / " ) + (|> (do macro;Monad + [sampleI (@;generate (|> ( ) + (list) (#ls;Procedure ) + (list) (#ls;Procedure ) + (list) (#ls;Procedure )))] + (@eval;eval sampleI)) + (macro;run (init-compiler [])) + (case> (#R;Success valueG) + ( (:! valueG)) + + (#R;Error error) + false)))] + + ["jvm convert long-to-int" "jvm convert int-to-char" "jvm convert char-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-int" "jvm convert int-to-byte" "jvm convert byte-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-int" "jvm convert int-to-short" "jvm convert short-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-float" "jvm convert float-to-int" "jvm convert int-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-int" "jvm convert int-to-float" "jvm convert float-to-long" #ls;Int int-sample Int i.=] + ) + <4step> (do-template [ ] + [(test (format " / " " / " ) + (|> (do macro;Monad + [sampleI (@;generate (|> ( ) + (list) (#ls;Procedure ) + (list) (#ls;Procedure ) + (list) (#ls;Procedure ) + (list) (#ls;Procedure )))] + (@eval;eval sampleI)) + (macro;run (init-compiler [])) + (case> (#R;Success valueG) + ( (:! valueG)) + + (#R;Error error) + false)))] + + ["jvm convert long-to-int" "jvm convert int-to-char" "jvm convert char-to-byte" "jvm convert byte-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-int" "jvm convert int-to-char" "jvm convert char-to-short" "jvm convert short-to-long" #ls;Int int-sample Int i.=] + ["jvm convert long-to-int" "jvm convert int-to-char" "jvm convert char-to-int" "jvm convert int-to-long" #ls;Int int-sample Int i.=] + ) + ] + ($_ seq + <3step> + <4step> + ))) diff --git a/new-luxc/test/tests.lux b/new-luxc/test/tests.lux index 311b6666f..731667bdd 100644 --- a/new-luxc/test/tests.lux +++ b/new-luxc/test/tests.lux @@ -24,7 +24,8 @@ ["_;G" structure] ["_;G" case] ["_;G" function] - (procedure ["_;G" common])) + (procedure ["_;G" common] + ["_;G" host])) )) ) -- cgit v1.2.3