Browse Source

tests

pull/1/head
nisstyre56 11 years ago
parent
commit
74b2c9b310
  1. 2
      cexps.js
  2. 2
      closure_conversion.js
  3. 72
      test.js
  4. 17
      tools.js

2
cexps.js

@ -102,7 +102,7 @@ var lessoreq = Primop("<=");
var greatthan = Primop(">");
var greatoreq = Primop(">=");
var bang = Primop("!");
var subscript = Protoype("subscript");
var subscript = Primop("subscript");
var ordof = Primop("ordof");
var assign = Primop(":=");
var unboxedassign = Primop("unboxedassign");

2
closure_conversion.js

@ -147,8 +147,6 @@ function test(src) {
console.log(JSON.stringify(closure_convert_all(ast), null, 4));
}
test("(lambda a -> (+ a b c))");
module.export = {
test : test,
closureConvert : closure_convert_all

72
test.js

@ -1,4 +1,76 @@
#! /usr/bin/node
var parser = require("./parse.js");
var cexps = require("./cexps.js");
var closures = require("./closure_conversion.js");
var desugar = require("./desugar.js");
var environments = require("./environments.js");
var errors = require("./errors.js");
var tokens = require("./tokenize.js");
var tools = require("./tools.js");
var typecheck = require("./typecheck.js");
var _ = require("underscore");
var qc = require("quickcheck");
var assert = require("assert");
/* my own generators */
function arbArray(gen) {
return qc.arbArray(gen);
}
function arbPair(gen) {
return function() {
return [gen(), gen()];
};
}
function arbArrayofPairs() {
return arbArray(function() {
return arbArray(arbPair(qc.arbString));
});
}
function arbPairs() {
return arbArray(arbPair(qc.arbString));
}
/* Tests for misc tools */
function emptyProp(xs) {
return (tools.empty(xs) === tools.empty(xs) &&
((tools.empty(xs) === true) ||
(tools.empty(xs) === false)));
}
function dictProp(pairs) {
var dict = tools.dict(pairs);
return _.map(pairs,
function(pair) {
dict[pair[0]] === pair[1];
});
}
function extendProp(pair) {
if (pair.length < 2) {
// empty lists or lists with one item are undefined
// so just return true because extend can't handle them
return true;
}
var x = _.first(pair);
var y = _.first(_.rest(pair));
var extended = tools.extend(x,y);
return x.length + y.length === extended.length;
}
function toolsTests() {
assert.equal(true, tools.empty([]));
assert.equal(true, qc.forAll(dictProp, arbArrayofPairs));
assert.equal(true, qc.forAll(extendProp, arbPairs));
}
toolsTests();

17
tools.js

@ -41,21 +41,10 @@ function dict(pairs) {
return o;
}
function flatten(xs) {
if (!(xs instanceof Array)) {
return xs;
}
if (xs.every(function (x) {
return !(x instanceof Array);
})) {
return xs;
}
return [].concat.apply([], xs);
}
function extend(xs, ys) {
xs.push.apply(xs, ys);
return xs;
var result = _.clone(xs);
result.push.apply(result, ys);
return result;
}
RegExp.escape= function(s) {

Loading…
Cancel
Save