text: 
  /**
   * Module dependencies.
   */
  
  var qs = require('../')
    , should = require('should')
    , str_identities = {
      'basics': [
        { str: 'foo=bar', obj: {'foo' : 'bar'}},
        { str: 'foo=%22bar%22', obj: {'foo' : '\"bar\"'}},
        { str: 'foo=', obj: {'foo': ''}},
        { str: 'foo=1&bar=2', obj: {'foo' : '1', 'bar' : '2'}},
        { str: 'my%20weird%20field=q1!2%22\'w%245%267%2Fz8)%3F', obj: {'my weird field': "q1!2\"'w$5&7/z8)?"}},
        { str: 'foo%3Dbaz=bar', obj: {'foo=baz': 'bar'}},
        { str: 'foo=bar&bar=baz', obj: {foo: 'bar', bar: 'baz'}}
      ],
      'escaping': [
        { str: 'foo=foo%20bar', obj: {foo: 'foo bar'}},
        { str: 'cht=p3&chd=t%3A60%2C40&chs=250x100&chl=Hello%7CWorld', obj: {
            cht: 'p3'
          , chd: 't:60,40'
          , chs: '250x100'
          , chl: 'Hello|World'
        }}
      ],
      'nested': [
        { str: 'foo[]=bar&foo[]=quux', obj: {'foo' : ['bar', 'quux']}},
        { str: 'foo[]=bar', obj: {foo: ['bar']}},
        { str: 'foo[]=1&foo[]=2', obj: {'foo' : ['1', '2']}},
        { str: 'foo=bar&baz[]=1&baz[]=2&baz[]=3', obj: {'foo' : 'bar', 'baz' : ['1', '2', '3']}},
        { str: 'foo[]=bar&baz[]=1&baz[]=2&baz[]=3', obj: {'foo' : ['bar'], 'baz' : ['1', '2', '3']}},
        { str: 'x[y][z]=1', obj: {'x' : {'y' : {'z' : '1'}}}},
        { str: 'x[y][z][]=1', obj: {'x' : {'y' : {'z' : ['1']}}}},
        { str: 'x[y][z]=2', obj: {'x' : {'y' : {'z' : '2'}}}},
        { str: 'x[y][z][]=1&x[y][z][]=2', obj: {'x' : {'y' : {'z' : ['1', '2']}}}},
        { str: 'x[y][][z]=1', obj: {'x' : {'y' : [{'z' : '1'}]}}},
        { str: 'x[y][][z][]=1', obj: {'x' : {'y' : [{'z' : ['1']}]}}},
        { str: 'x[y][][z]=1&x[y][][w]=2', obj: {'x' : {'y' : [{'z' : '1', 'w' : '2'}]}}},
        { str: 'x[y][][v][w]=1', obj: {'x' : {'y' : [{'v' : {'w' : '1'}}]}}},
        { str: 'x[y][][z]=1&x[y][][v][w]=2', obj: {'x' : {'y' : [{'z' : '1', 'v' : {'w' : '2'}}]}}},
        { str: 'x[y][][z]=1&x[y][][z]=2', obj: {'x' : {'y' : [{'z' : '1'}, {'z' : '2'}]}}},
        { str: 'x[y][][z]=1&x[y][][w]=a&x[y][][z]=2&x[y][][w]=3', obj: {'x' : {'y' : [{'z' : '1', 'w' : 'a'}, {'z' : '2', 'w' : '3'}]}}},
        { str: 'user[name][first]=tj&user[name][last]=holowaychuk', obj: { user: { name: { first: 'tj', last: 'holowaychuk' }}}}
      ],
      'errors': [
        { obj: 'foo=bar',     message: 'stringify expects an object' },
        { obj: ['foo', 'bar'], message: 'stringify expects an object' }
      ],
      'numbers': [
        { str: 'limit[]=1&limit[]=2&limit[]=3', obj: { limit: [1, 2, '3'] }},
        { str: 'limit=1', obj: { limit: 1 }}
      ]
    };
    
  
  // Assert error
  function err(fn, msg){
    var err;
    try {
      fn();
    } catch (e) {
      should.equal(e.message, msg);
      return;
    }
    throw new Error('no exception thrown, expected "' + msg + '"');
  }
  
  function test(type) {
    var str, obj;
    for (var i = 0; i < str_identities[type].length; i++) {
      str = str_identities[type][i].str;
      obj = str_identities[type][i].obj;
      qs.stringify(obj).should.eql(str);
    }
  }
  
  module.exports = {
    'test basics': function() {
      test('basics');
    },
  
    'test escaping': function() {
      test('escaping');
    },
  
    'test nested': function() {
      test('nested');
    },
    
    'test numbers': function(){
      test('numbers');
    },
  
    'test errors': function() {
      var obj, message;
      for (var i = 0; i < str_identities['errors'].length; i++) {
        message = str_identities['errors'][i].message;
        obj = str_identities['errors'][i].obj;
        err(function(){ qs.stringify(obj) }, message);
      }
    }
  };