equal(decodeURIComponent(jQuery.param({a:[1,2,3],"b[]":[4,5,6],"c[d]":[7,8,9],e:{f:[10],g:[11,12],h:13}})),"a[]=1&a[]=2&a[]=3&b[]=4&b[]=5&b[]=6&c[d][]=7&c[d][]=8&c[d][]=9&e[f][]=10&e[g][]=11&e[g][]=12&e[h]=13","Make sure params are not double-encoded.");
equal(decodeURIComponent(jQuery.param({a:[1,2,3],"b[]":[4,5,6],"c[d]":[7,8,9],e:{f:[10],g:[11,12],h:13}})),"a[]=1&a[]=2&a[]=3&b[]=4&b[]=5&b[]=6&c[d][]=7&c[d][]=8&c[d][]=9&e[f][]=10&e[g][]=11&e[g][]=12&e[h]=13","Make sure params are not double-encoded.");
equal(jQuery.param(params),"a=0&a=1%2C2&a=3%2C4%2C5%2C6&a=%5Bobject+Object%5D&a=17","nested arrays (not possible when jQuery.param.traditional == true)");
equal(jQuery.param(params),"a=0&a=1%2C2&a=3%2C4%2C5%2C6&a=%5Bobject+Object%5D&a=17","nested arrays (not possible when jQuery.param.traditional == true)");
equal(decodeURIComponent(jQuery.param(params,false)),"a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=undefined&i[]=10&i[]=11&j=true&k=false&l[]=undefined&l[]=0&m=cowboy+hat?","huge structure, forced not traditional");
equal(decodeURIComponent(jQuery.param(params,false)),"a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=&i[]=10&i[]=11&j=true&k=false&l[]=&l[]=0&m=cowboy+hat?","huge structure, forced not traditional");
params={param1:null};
params={param1:null};
equal(jQuery.param(params,false),"param1=null","Make sure that null params aren't traversed.");
equal(jQuery.param(params,false),"param1=","Make sure that null params aren't traversed.");
params={"test":{"length":3,"foo":"bar"}};
params={"test":{"length":3,"foo":"bar"}};
equal(jQuery.param(params,false),"test%5Blength%5D=3&test%5Bfoo%5D=bar","Sub-object with a length property");
equal(jQuery.param(params,false),"test%5Blength%5D=3&test%5Bfoo%5D=bar","Sub-object with a length property");