var nomnom = require(“../nomnom”);

function strip(str) {

return str.replace(/\s+/g, '');

}

exports.testCallback = function(test) {

test.expect(1);

var parser = nomnom();
parser.command('run').callback(function(options) {
   test.equal(options.v, 3);
});
parser.command('other').callback(function() {
   test.ok(false, "callback for other command shouldn't be called");
});

parser.parse(["run","-v", "3"]);
test.done();

}

exports.testMissingCommand = function(test) {

test.expect(1);

var parser = nomnom().scriptName("test");

parser.command('run');

parser.printer(function(string) {
   test.equal(string, "test: no such command 'other'");
   test.done();
});

parser.parse(["other"]);

}

exports.testNoCommand = function(test) {

test.expect(2);

var parser = nomnom();

parser.nocommand()
  .options({
     version: {
        flag: true
     }
  })
  .callback(function(options) {
     test.strictEqual(options.version, true);
  })
  .usage("fallback usage");

parser.command('run');

var options = parser.parse(["--version"]);

test.strictEqual(options.version, true);
test.done();

}

function createParser() {

var parser = nomnom().scriptName("test")
   .options({
      debug: {
         flag: true
      }
   });

parser.command('run')
  .options({
     file: {
        help: 'file to run'
     }
  })
  .help("run all");

parser.command('test').usage("test usage");

parser.nocommand()
  .options({
     verbose: {
        flag: true
     }
  })
  .help("nocommand");

return parser;

}

exports.testUsage = function(test) {

test.expect(4);

var parser = createParser();
parser.printer(function(string) {
   test.equal(strip(string), "testusage");
});
parser.parse(["test", "-h"]);

parser = createParser().nocolors();
parser.printer(function(string) {
   test.equal(strip(string), "Usage:testrun[options]Options:--debug--filefiletorunrunall");
});
parser.parse(["run", "-h"]);

parser = createParser().nocolors();
parser.printer(function(string) {
   test.equal(strip(string), "Usage:test[command][options]commandoneof:run,testOptions:--debug--verbosenocommand");
});
parser.parse(["-h"]);

parser = createParser().nocolors();
parser.nocommand()
   .usage("fallback");
parser.printer(function(string) {
   test.equal(strip(string), "fallback");
});
parser.parse(["-h"]);

test.done();

}