mathjs/test/expression/node/SymbolNode.test.js
2014-01-07 16:12:57 +01:00

47 lines
1.3 KiB
JavaScript

// test SymbolNode
var assert = require('assert'),
approx = require('../../../tools/approx'),
math = require('../../../index')(),
Node = require('../../../lib/expression/node/Node'),
Scope = require('../../../lib/expression/Scope'),
ConstantNode = require('../../../lib/expression/node/ConstantNode'),
SymbolNode = require('../../../lib/expression/node/SymbolNode');
describe('SymbolNode', function() {
it ('should throw an error when evaluating an undefined symbol', function () {
var scope = new Scope(math);
var s = new SymbolNode('foo', scope);
assert.throws(function () {s.eval()}, Error);
});
it ('should compile a SymbolNode', function () {
var s = new SymbolNode('a');
var expr = s.compile(math);
var scope = {a: 5};
assert.equal(expr.eval(scope), 5);
assert.throws(function () {expr.eval({})}, Error);
var s2 = new SymbolNode('sqrt');
var expr2 = s2.compile(math);
var scope2 = {};
assert.strictEqual(expr2.eval(scope2), math.sqrt);
});
it ('should find a SymbolNode', function () {
// TODO
});
it ('should match a SymbolNode', function () {
// TODO
});
it ('should stringify a SymbolNode', function () {
var s = new SymbolNode('foo');
assert.equal(s.toString(), 'foo');
});
});