| 'use strict'; | |
| 
 | |
| module.exports = { | |
|     emptyTestCases: [ | |
|         { | |
|             input: '&', | |
|             withEmptyKeys: {}, | |
|             stringifyOutput: { | |
|                 brackets: '', | |
|                 indices: '', | |
|                 repeat: '' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '&&', | |
|             withEmptyKeys: {}, | |
|             stringifyOutput: { | |
|                 brackets: '', | |
|                 indices: '', | |
|                 repeat: '' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '&=', | |
|             withEmptyKeys: { '': '' }, | |
|             stringifyOutput: { | |
|                 brackets: '=', | |
|                 indices: '=', | |
|                 repeat: '=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '&=&', | |
|             withEmptyKeys: { '': '' }, | |
|             stringifyOutput: { | |
|                 brackets: '=', | |
|                 indices: '=', | |
|                 repeat: '=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '&=&=', | |
|             withEmptyKeys: { '': ['', ''] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=&[]=', | |
|                 indices: '[0]=&[1]=', | |
|                 repeat: '=&=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '&=&=&', | |
|             withEmptyKeys: { '': ['', ''] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=&[]=', | |
|                 indices: '[0]=&[1]=', | |
|                 repeat: '=&=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '=', | |
|             withEmptyKeys: { '': '' }, | |
|             noEmptyKeys: {}, | |
|             stringifyOutput: { | |
|                 brackets: '=', | |
|                 indices: '=', | |
|                 repeat: '=' | |
|             } | |
|         }, | |
|         { | |
|             input: '=&', | |
|             withEmptyKeys: { '': '' }, | |
|             stringifyOutput: { | |
|                 brackets: '=', | |
|                 indices: '=', | |
|                 repeat: '=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '=&&&', | |
|             withEmptyKeys: { '': '' }, | |
|             stringifyOutput: { | |
|                 brackets: '=', | |
|                 indices: '=', | |
|                 repeat: '=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '=&=&=&', | |
|             withEmptyKeys: { '': ['', '', ''] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=&[]=&[]=', | |
|                 indices: '[0]=&[1]=&[2]=', | |
|                 repeat: '=&=&=' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '=&a[]=b&a[1]=c', | |
|             withEmptyKeys: { '': '', a: ['b', 'c'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c', | |
|                 indices: '=&a[0]=b&a[1]=c', | |
|                 repeat: '=&a=b&a=c' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c'] } | |
|         }, | |
|         { | |
|             input: '=a', | |
|             withEmptyKeys: { '': 'a' }, | |
|             noEmptyKeys: {}, | |
|             stringifyOutput: { | |
|                 brackets: '=a', | |
|                 indices: '=a', | |
|                 repeat: '=a' | |
|             } | |
|         }, | |
|         { | |
|             input: 'a==a', | |
|             withEmptyKeys: { a: '=a' }, | |
|             noEmptyKeys: { a: '=a' }, | |
|             stringifyOutput: { | |
|                 brackets: 'a==a', | |
|                 indices: 'a==a', | |
|                 repeat: 'a==a' | |
|             } | |
|         }, | |
|         { | |
|             input: '=&a[]=b', | |
|             withEmptyKeys: { '': '', a: ['b'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b', | |
|                 indices: '=&a[0]=b', | |
|                 repeat: '=&a=b' | |
|             }, | |
|             noEmptyKeys: { a: ['b'] } | |
|         }, | |
|         { | |
|             input: '=&a[]=b&a[]=c&a[2]=d', | |
|             withEmptyKeys: { '': '', a: ['b', 'c', 'd'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c&a[]=d', | |
|                 indices: '=&a[0]=b&a[1]=c&a[2]=d', | |
|                 repeat: '=&a=b&a=c&a=d' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c', 'd'] } | |
|         }, | |
|         { | |
|             input: '=a&=b', | |
|             withEmptyKeys: { '': ['a', 'b'] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=a&[]=b', | |
|                 indices: '[0]=a&[1]=b', | |
|                 repeat: '=a&=b' | |
|             }, | |
|             noEmptyKeys: {} | |
|         }, | |
|         { | |
|             input: '=a&foo=b', | |
|             withEmptyKeys: { '': 'a', foo: 'b' }, | |
|             noEmptyKeys: { foo: 'b' }, | |
|             stringifyOutput: { | |
|                 brackets: '=a&foo=b', | |
|                 indices: '=a&foo=b', | |
|                 repeat: '=a&foo=b' | |
|             } | |
|         }, | |
|         { | |
|             input: 'a[]=b&a=c&=', | |
|             withEmptyKeys: { '': '', a: ['b', 'c'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c', | |
|                 indices: '=&a[0]=b&a[1]=c', | |
|                 repeat: '=&a=b&a=c' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c'] } | |
|         }, | |
|         { | |
|             input: 'a[]=b&a=c&=', | |
|             withEmptyKeys: { '': '', a: ['b', 'c'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c', | |
|                 indices: '=&a[0]=b&a[1]=c', | |
|                 repeat: '=&a=b&a=c' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c'] } | |
|         }, | |
|         { | |
|             input: 'a[0]=b&a=c&=', | |
|             withEmptyKeys: { '': '', a: ['b', 'c'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c', | |
|                 indices: '=&a[0]=b&a[1]=c', | |
|                 repeat: '=&a=b&a=c' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c'] } | |
|         }, | |
|         { | |
|             input: 'a=b&a[]=c&=', | |
|             withEmptyKeys: { '': '', a: ['b', 'c'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c', | |
|                 indices: '=&a[0]=b&a[1]=c', | |
|                 repeat: '=&a=b&a=c' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c'] } | |
|         }, | |
|         { | |
|             input: 'a=b&a[0]=c&=', | |
|             withEmptyKeys: { '': '', a: ['b', 'c'] }, | |
|             stringifyOutput: { | |
|                 brackets: '=&a[]=b&a[]=c', | |
|                 indices: '=&a[0]=b&a[1]=c', | |
|                 repeat: '=&a=b&a=c' | |
|             }, | |
|             noEmptyKeys: { a: ['b', 'c'] } | |
|         }, | |
|         { | |
|             input: '[]=a&[]=b& []=1', | |
|             withEmptyKeys: { '': ['a', 'b'], ' ': ['1'] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=a&[]=b& []=1', | |
|                 indices: '[0]=a&[1]=b& [0]=1', | |
|                 repeat: '=a&=b& =1' | |
|             }, | |
|             noEmptyKeys: { 0: 'a', 1: 'b', ' ': ['1'] } | |
|         }, | |
|         { | |
|             input: '[0]=a&[1]=b&a[0]=1&a[1]=2', | |
|             withEmptyKeys: { '': ['a', 'b'], a: ['1', '2'] }, | |
|             noEmptyKeys: { 0: 'a', 1: 'b', a: ['1', '2'] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=a&[]=b&a[]=1&a[]=2', | |
|                 indices: '[0]=a&[1]=b&a[0]=1&a[1]=2', | |
|                 repeat: '=a&=b&a=1&a=2' | |
|             } | |
|         }, | |
|         { | |
|             input: '[deep]=a&[deep]=2', | |
|             withEmptyKeys: { '': { deep: ['a', '2'] } | |
|             }, | |
|             stringifyOutput: { | |
|                 brackets: '[deep][]=a&[deep][]=2', | |
|                 indices: '[deep][0]=a&[deep][1]=2', | |
|                 repeat: '[deep]=a&[deep]=2' | |
|             }, | |
|             noEmptyKeys: { deep: ['a', '2'] } | |
|         }, | |
|         { | |
|             input: '%5B0%5D=a&%5B1%5D=b', | |
|             withEmptyKeys: { '': ['a', 'b'] }, | |
|             stringifyOutput: { | |
|                 brackets: '[]=a&[]=b', | |
|                 indices: '[0]=a&[1]=b', | |
|                 repeat: '=a&=b' | |
|             }, | |
|             noEmptyKeys: { 0: 'a', 1: 'b' } | |
|         } | |
|     ] | |
| };
 |