Skip to content

Commit

Permalink
Added mocha test support.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbebenita committed Jul 26, 2012
1 parent 5cf3908 commit 80652b8
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 50 deletions.
6 changes: 3 additions & 3 deletions docs/index.html
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ <h2>Data Types and Arithmetic</h2>
let int x = 3; let int x = 3;
let int y = 2; let int y = 2;


/* Arithmetic follows C semantics. Arithmetic on integers begets /* Arithmetic follows C semantics. Arithmetic on integers begets
integers, truncated with | 0. */ integers, truncated with | 0. */
trace("Result is an integer: " + x / y); trace("Result is an integer: " + x / y);
trace("Integral literals are typed as integers: " + 1 / 2); trace("Integral literals are typed as integers: " + 1 / 2);
Expand Down Expand Up @@ -482,7 +482,7 @@ <h4>Acknowledgements</h4>
} }
var source = this.getValue(); var source = this.getValue();
source = 'extern trace;\n' + source; source = 'extern trace;\n' + source;
result.innerHTML = LJC.compile(name, name, source, { bare: true, memcheck: false }); result.innerHTML = LJC.compile(source, { bare: true, memcheck: false, filename: name });
} catch (x) { } catch (x) {
result.innerHTML = x.message; result.innerHTML = x.message;
if (x.lineNumber) { if (x.lineNumber) {
Expand Down Expand Up @@ -548,7 +548,7 @@ <h4>Acknowledgements</h4>
} else { } else {
source = 'extern trace;\n' + source; source = 'extern trace;\n' + source;
} }
var code = LJC.compile("ex" + number, "ex" + number, source, { memcheck: !!enableMemCheck }); var code = LJC.compile(source, { memcheck: !!enableMemCheck, filename: "ex" + number});
result.innerHTML += "Compiled in: " + (new Date() - start) + " ms\n"; result.innerHTML += "Compiled in: " + (new Date() - start) + " ms\n";
result.innerHTML += "-----------------------------------------------------\n"; result.innerHTML += "-----------------------------------------------------\n";


Expand Down
2 changes: 1 addition & 1 deletion src/compiler.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1434,7 +1434,7 @@
} }
body.push(new VariableDeclaration("const", [mdecl])); body.push(new VariableDeclaration("const", [mdecl]));
// todo: broken just like above // todo: broken just like above
if(name !== "memory") { if (name !== "memory") {
assert (memcheck !== undefined); assert (memcheck !== undefined);
body.push(new ExpressionStatement( body.push(new ExpressionStatement(
new CallExpression(new MemberExpression(cachedMEMORY, new Identifier("set_memcheck")), new CallExpression(new MemberExpression(cachedMEMORY, new Identifier("set_memcheck")),
Expand Down
17 changes: 13 additions & 4 deletions src/ljc.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
var mode; var mode;
if (typeof process !== "undefined") { if (typeof process !== "undefined") {
mode = NODE_JS; mode = NODE_JS;
// Install compiler as an extension for '.ljs' files that are loaded using the
// |require| function. This is how mocha tests are executed.
var fs = require('fs');
require.extensions['.ljs'] = function(module, filename) {
var source = fs.readFileSync(filename, 'utf8');
return module._compile(compile(source, {filename: filename, memcheck: false}), filename);
};
} else if (typeof snarf !== "undefined") { } else if (typeof snarf !== "undefined") {
mode = JS_SHELL; mode = JS_SHELL;
} else { } else {
Expand Down Expand Up @@ -143,7 +150,9 @@
basename = basename.substr(0, basename.lastIndexOf(".")) || basename; basename = basename.substr(0, basename.lastIndexOf(".")) || basename;


var source = snarf(filename); var source = snarf(filename);
var code = compile(basename, filename, source, options); options.filename = filename;
options.basename = basename;
var code = compile(source, options);


if (options["pretty-print"]) { if (options["pretty-print"]) {
print(pretty(code)); print(pretty(code));
Expand All @@ -167,7 +176,7 @@
} }
} }


function compile(name, logName, source, options) { function compile(source, options) {
// -W anything infers -W. // -W anything infers -W.
for (var p in options) { for (var p in options) {
if (p.charAt(0) === "W") { if (p.charAt(0) === "W") {
Expand All @@ -180,7 +189,7 @@
options.warn = false; options.warn = false;
} }


var logger = new util.Logger("ljc", logName, source, options); var logger = new util.Logger("ljc", options.filename, source, options);
var code; var code;


try { try {
Expand All @@ -191,7 +200,7 @@
if (options["only-parse"]) { if (options["only-parse"]) {
code = node; code = node;
} else { } else {
node = compiler.compile(node, name, logger, options); node = compiler.compile(node, options.filename, logger, options);
if (options["emit-ast"]) { if (options["emit-ast"]) {
code = node; code = node;
} else { } else {
Expand Down
31 changes: 0 additions & 31 deletions src/ply.html

This file was deleted.

11 changes: 0 additions & 11 deletions src/ply.js

This file was deleted.

28 changes: 28 additions & 0 deletions test/array-0.ljs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,28 @@
extern describe, it;
extern Number;

let assert = require("assert");

describe('Array 0', function() {
function testElements(int * a, int length) {
for (let int i = 0; i < length; i++) {
a[i] = i;
}
let int sum = 0;
for (let int i = 0; i < length; i++) {
sum += a[i];
}
sum.should.equal((length * (length - 1)) / 2);
}

it('allocates an array on the heap', function () {
testElements(new int [1024], 1024);
});

it('allocates an array on the stack', function () {
let int a [1024];
testElements(a, 1024);
});
});


0 comments on commit 80652b8

Please sign in to comment.