'use strict';

var grunt = require('../../lib/grunt');

exports.option = {
  setUp: function(done) {
    grunt.option.init();
    done();
  },
  tearDown: function(done) {
    grunt.option.init();
    done();
  },
  'option.init': function(test) {
    test.expect(1);
    var expected = {foo: 'bar', bool: true, 'bar': {foo: 'bar'}};
    test.deepEqual(grunt.option.init(expected), expected);
    test.done();
  },
  'option': function(test) {
    test.expect(4);
    test.equal(grunt.option('foo', 'bar'), grunt.option('foo'));
    grunt.option('foo', {foo: 'bar'});
    test.deepEqual(grunt.option('foo'), {foo: 'bar'});
    test.equal(grunt.option('no-there'), false);
    grunt.option('there', false);
    test.equal(grunt.option('no-there'), true);
    test.done();
  },
  'option.flags': function(test) {
    test.expect(1);
    grunt.option.init({
      foo: 'bar',
      there: true,
      obj: {foo: 'bar'},
      arr: []
    });
    test.deepEqual(grunt.option.flags(), ['--foo=bar', '--there', '--obj=[object Object]']);
    test.done();
  },
  'option.keys': function(test) {
    test.expect(1);
    grunt.option.init({
      foo: 'bar',
      there: true,
      obj: {foo: 'bar'},
      arr: []
    });
    test.deepEqual(grunt.option.keys(), ['foo', 'there', 'obj', 'arr']);
    test.done();
  }
};
