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

function strip(str) {

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

};

var opts = {

apple: {
   abbr: 'a',
   help: 'how many apples'
},

banana: {
   full: "b-nana"
},

carrot: {
   string: '-c NUM, --carrots=NUM'
},

dill: {
   metavar: 'PICKLE'
},

egg: {
   position: 0,
   help: 'robin'
}

}

var parser = nomnom().options(opts).help(“all the best foods”).scriptName(“test”).nocolors();

var expected = “Usage:test[options]eggrobinOptions:-a,–applehowmanyapples–b-nana-cNUM,–carrots=NUM–dillPICKLEallthebestfoods”

exports.testH = function(test) {

test.expect(1);

parser.printer(function(string) {
   test.equal(strip(string), expected)
   test.done();
})
.nocolors()
.parse(["-h"]);

}

exports.testHelp = function(test) {

test.expect(1);

parser.printer(function(string) {
   test.equal(strip(string), expected)
   test.done();
})
.nocolors()
.parse(["--help"]);

}

exports.testScriptName = function(test) {

test.expect(1);

nomnom()
  .script("test")
  .printer(function(string) {
     test.equal(strip(string),"Usage:test")
     test.done();
  })
  .nocolors()
  .parse(["-h"]);

}

exports.testUsage = function(test) {

test.expect(1);

parser
   .usage("test usage")
   .printer(function(string) {
      test.equal(string, "test usage")
      test.done();
   })
   .nocolors()
   .parse(["--help"]);

}

exports.testHidden = function(test) {

test.expect(1);

nomnom().options({
   file: {
      hidden: true
   }
})
.scriptName("test")
.printer(function(string) {
   test.equal(strip("Usage:test[options]Options:"), strip(string))
   test.done();
})
.nocolors()
.parse(["-h"]);

}

exports.testRequiredOptional = function(test) {

test.expect(1);

nomnom().options({
   foo: {
      position: 0,
      required: true,
      help: 'The foo'
   },
   bar: {
      position: 1,
      help: 'The bar'
   }
})
.scriptName("test")
.printer(function(string) {
   test.equal(strip("Usage:test<foo>[bar]fooThefoobarThebar"), strip(string))
   test.done();
})
.nocolors()
.parse(["-h"]);

}