diff --git a/test/test-cli.js b/test/test-cli.js
new file mode 100644
index 0000000..ad3f86e
--- /dev/null
+++ b/test/test-cli.js
@@ -0,0 +1,98 @@
+var expect = require('chai').expect;
+var fs = require('fs');
+
+var exec = require('child_process').exec;
+
+function runWithInputAndExpect(input, args, expectedOutput, done) {
+ exec('echo "' + input.replace(/"/g, '\\"') + '" | node bin/cli.js ' + args, function callback(error, stdout, stderr) {
+ expect(error).to.be.a('null');
+ expect(stderr).to.equal('');
+ expect(stdout).to.equal(expectedOutput + '\n');
+ done(error);
+ });
+}
+
+describe('cli arguments', function() {
+ it('should output nothing with empty input', function(done) {
+ runWithInputAndExpect('', '', '', done);
+ });
+
+ it('should not ignore images by default', function (done) {
+ runWithInputAndExpect(
+ 'Hello !',
+ '',
+ 'Hello alt text [http://my.img/here.jpg]!',
+ done);
+ });
+
+ it('should ignore images with --ignore-image=true', function (done) {
+ runWithInputAndExpect(
+ 'Hello !',
+ '--ignore-image=true',
+ 'Hello !',
+ done);
+ });
+
+ it('should not ignore href by default', function (done) {
+ runWithInputAndExpect(
+ 'test',
+ '',
+ 'test [http://my.link]',
+ done);
+ });
+
+ it('should ignore href with --ignore-href=true', function (done) {
+ runWithInputAndExpect(
+ 'test',
+ '--ignore-href=true',
+ 'test',
+ done);
+ });
+
+ it('should wordwrap at 80 characters by default', function (done) {
+ runWithInputAndExpect(
+ ' 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789',
+ '',
+ ' 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789\n123456789',
+ done);
+ });
+
+ it('should wordwrap at 40 with --wordwrap=40', function (done) {
+ runWithInputAndExpect(
+ ' 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789',
+ '--wordwrap=40',
+ ' 123456789 123456789 123456789 123456789\n123456789 123456789 123456789 123456789\n123456789',
+ done);
+ });
+
+ it('should return link with brackets by default', function (done) {
+ runWithInputAndExpect(
+ 'test',
+ '',
+ 'test [http://my.link]',
+ done);
+ });
+
+ it('should return link without brackets with --noLinkBrackets=true', function (done) {
+ runWithInputAndExpect(
+ 'test',
+ '--noLinkBrackets=true',
+ 'test http://my.link',
+ done);
+ });
+
+ it('should support --tables definitions with commas', function(done) {
+ var expectedTxt = fs.readFileSync('test/test.txt', 'utf8');
+
+ function runWithArgs(args, callback) {
+ exec('cat test/test.html | node bin/cli.js ' + args, callback);
+ }
+
+ runWithArgs('--tables=#invoice,.address', function callback(error, stdout, stderr) {
+ expect(error).to.be.a('null');
+ expect(stderr).to.equal('');
+ expect(stdout).to.equal(expectedTxt + '\n');
+ done(error);
+ });
+ });
+});
\ No newline at end of file