// Copyright (c) 2017, 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.

// @dart = 2.9

/// @assertion Map<String, List<String>> queryParametersAll
///
/// Returns the URI 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 there is no query the empty map is
/// returned.
///
/// Keys are mapped to lists of their values. If a key occurs only once, its
/// value is a singleton list. If a key occurs with no value, the empty string is
/// used as the value for that occurrence.
///
/// The returned map and the lists it contains are unmodifiable.
/// @description Checks that this property returns proper map
/// @author sgrekhov@unipro.ru

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

main() {
  var q = 'a=b&a=c&a=d';
  Map map = {'a': ['b', 'c', 'd']};
  Expect.mapEquals(map, new Uri(query: q).queryParametersAll);
  Expect.mapEquals(map, Uri.parse('http://host/path?$q').queryParametersAll);
}
