import test from 'ava';
import fn from './';

const fixture = {
	_: ['some', 'option'],
	a: 'foo',
	b: true,
	c: false,
	d: 5,
	e: ['foo', 'bar'],
	f: null,
	g: undefined,
	h: 'with a space',
	i: 'let\'s try quotes',
	camelCaseCamel: true
};

test('convert options to cli flags', t => {
	t.same(fn(fixture), [
		'--a=foo',
		'--b',
		'--no-c',
		'--d=5',
		'--e=foo',
		'--e=bar',
		'--h=with a space',
		'--i=let\'s try quotes',
		'--camel-case-camel',
		'some',
		'option'
	]);
});

test('raises a TypeError if  \'_\' value is not an Array', t => {
	t.throws(fn.bind(fn, {a: 'foo', _: 'baz'}), TypeError);
});

test('useEquals options', t => {
	t.same(fn(fixture, {
		useEquals: false
	}), [
		'--a foo',
		'--b',
		'--no-c',
		'--d 5',
		'--e foo',
		'--e bar',
		'--h with a space',
		'--i let\'s try quotes',
		'--camel-case-camel',
		'some',
		'option'
	]);
});

test('exclude options', t => {
	t.same(fn(fixture, {excludes: ['b', /^e$/, 'h', 'i']}), [
		'--a=foo',
		'--no-c',
		'--d=5',
		'--camel-case-camel',
		'some',
		'option'
	]);
});

test('includes options', t => {
	t.same(fn(fixture, {includes: ['a', 'c', 'd', 'e', /^camelCase.*/]}), [
		'--a=foo',
		'--no-c',
		'--d=5',
		'--e=foo',
		'--e=bar',
		'--camel-case-camel'
	]);
});

test('excludes and includes options', t => {
	t.same(fn(fixture, {
		excludes: ['a', 'd'],
		includes: ['a', 'c', /^[de]$/, 'camelCaseCamel']
	}), [
		'--no-c',
		'--e=foo',
		'--e=bar',
		'--camel-case-camel'
	]);
});

test('option to ignore false values', t => {
	t.same(fn({foo: false}, {ignoreFalse: true}), []);
});

test('aliases option', t => {
	t.same(fn({a: 'foo', file: 'test'}, {
		aliases: {file: 'f'}
	}),
		[
			'--a=foo',
			'-f test'
		]);
});

test('includes and aliases options', t => {
	t.same(fn(fixture, {
		includes: ['a', 'c', 'd', 'e', 'camelCaseCamel'],
		aliases: {a: 'a'}
	}),
		[
			'-a foo',
			'--no-c',
			'--d=5',
			'--e=foo',
			'--e=bar',
			'--camel-case-camel'
		]);
});

@@ -275,36 +275,41 @@
 ags', t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(fixture), %5B%0A
@@ -639,36 +639,41 @@
 ons', t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(fixture, %7B%0A%09
@@ -898,36 +898,41 @@
 ons', t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(fixture, %7Bex
@@ -1085,36 +1085,41 @@
 ons', t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(fixture, %7Bin
@@ -1303,36 +1303,41 @@
 ons', t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(fixture, %7B%0A%09
@@ -1532,28 +1532,33 @@
 , t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(%7Bfoo: fa
@@ -1624,28 +1624,33 @@
 , t =%3E %7B%0A%09t.
-same
+deepEqual
 (fn(%7Ba: 'foo
@@ -1696,24 +1696,21 @@
 f'%7D%0A%09%7D),
-%0A%09%09
+ 
 %5B%0A%09%09
-%09
 '--a=foo
@@ -1714,17 +1714,16 @@
 foo',%0A%09%09
-%09
 '-f test
@@ -1724,17 +1724,16 @@
 f test'%0A
-%09
 %09%5D);%0A%7D);
@@ -1785,12 +1785,17 @@
 %0A%09t.
-same
+deepEqual
 (fn(
@@ -1885,14 +1885,11 @@
 %09%7D),
-%0A%09%09
+ 
 %5B%0A
-%09
 %09%09'-
@@ -1892,25 +1892,24 @@
 %09%09'-a foo',%0A
-%09
 %09%09'--no-c',%0A
@@ -1910,17 +1910,16 @@
 o-c',%0A%09%09
-%09
 '--d=5',
@@ -1919,17 +1919,16 @@
 --d=5',%0A
-%09
 %09%09'--e=f
@@ -1932,17 +1932,16 @@
 e=foo',%0A
-%09
 %09%09'--e=b
@@ -1947,17 +1947,16 @@
 bar',%0A%09%09
-%09
 '--camel
@@ -1968,17 +1968,16 @@
 -camel'%0A
-%09
 %09%5D);%0A%7D);

upgrade to latest AVA