// Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// @assertion Map<String, String> splitQueryString(String query, {
///  Encoding encoding: utf8
///  })
/// Returns the query split into a map according to the rules specified for FORM
/// post in the HTML 4.01 specification section 17.13.4. Each key and value in
/// the returned map has been decoded. If the query is the empty string an empty
/// map is returned.
///
/// Keys in the query string that have no value are mapped to the empty string.
///
/// Each query component will be decoded using encoding. The default encoding is
/// UTF-8.
/// @description Check cases with empty query and no value
/// @author ilya

import "../../../Utils/expect.dart";

main() {
  var m = Uri.splitQueryString('');
  Expect.mapEquals({}, m);
  
  m = Uri.splitQueryString('foo&bar=1');
  Expect.mapEquals({'foo': '', 'bar': '1'}, m);

  m = Uri.splitQueryString('foo&bar=1&x&y');
  Expect.mapEquals({'foo': '', 'bar': '1', 'x': '', 'y': ''}, m);
}
