diff --git a/bin/cli.js b/bin/cli.js index ba9951ba6..653489b6e 100755 --- a/bin/cli.js +++ b/bin/cli.js @@ -22,6 +22,7 @@ * * Example usage: * mathjs Open a command prompt + * mathjs 1+2 Evaluate expression * mathjs script.txt Run a script file * mathjs script1.txt script2.txt Run two script files * mathjs script.txt > results.txt Run a script file, output to file @@ -336,7 +337,7 @@ function outputHelp() { console.log('functions, and a flexible expression parser.'); console.log(); console.log('Usage:'); - console.log(' mathjs [scriptfile(s)] {OPTIONS}'); + console.log(' mathjs [scriptfile(s)|expression] {OPTIONS}'); console.log(); console.log('Options:'); console.log(' --version, -v Show application version'); @@ -348,6 +349,7 @@ function outputHelp() { console.log(); console.log('Example usage:'); console.log(' mathjs Open a command prompt'); + console.log(' mathjs 1+2 Evaluate expression'); console.log(' mathjs script.txt Run a script file'); console.log(' mathjs script.txt script2.txt Run two script files'); console.log(' mathjs script.txt > results.txt Run a script file, output to file'); @@ -420,9 +422,15 @@ else if (scripts.length === 0) { runStream(process.stdin, process.stdout, mode, parenthesis); } else { - //work through the queue of scripts - scripts.forEach(function (arg) { - // run a script file - runStream(fs.createReadStream(arg), process.stdout, mode, parenthesis); - }); + fs.stat(scripts[0], function(e, f) { + if (e) { + console.log(getMath().eval(scripts.join(' ')).toString()) + } else { + //work through the queue of scripts + scripts.forEach(function (arg) { + // run a script file + runStream(fs.createReadStream(arg), process.stdout, mode, parenthesis); + }); + } + }) } diff --git a/test/cli/cli.js b/test/cli/cli.js new file mode 100644 index 000000000..56e8428d5 --- /dev/null +++ b/test/cli/cli.js @@ -0,0 +1,40 @@ +var assert = require('assert') +var cp = require('child_process') + +function run(args, done) { + cp.exec('bin/cli.js "' + args +'"', function(e,r) { + done(e, r.replace(/\n$/g, '')) + }) +} +describe('evaluate expression', function() { + it('should sum numbers', function(done) { + run('1+1', function(e, result) { + assert.equal(result, 2) + done() + }) + }) + + it('should multiply matrices', function(done) { + run('[1,2] * [3,4]', function(e, result) { + assert.equal(result, 11) + done() + }) + }) + + it('should thow error', function(done) { + run('y=x', function(e, result) { + assert.equal(/^Error/g.test(e.toString()),true) + done() + }) + }) + + it('should interpret scripts', function(done) { + run('test/cli/script1" "test/cli/script2', function(e, result){ + result = result.split('\n') + assert.equal(result[0], 2) + assert.equal(result[1], 8) + done() + }) + }) + +}) diff --git a/test/cli/script1 b/test/cli/script1 new file mode 100644 index 000000000..c040fa67d --- /dev/null +++ b/test/cli/script1 @@ -0,0 +1 @@ +1+1 diff --git a/test/cli/script2 b/test/cli/script2 new file mode 100644 index 000000000..63c10fdf2 --- /dev/null +++ b/test/cli/script2 @@ -0,0 +1 @@ +2*4