/*
 * 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.
 */
/**
 * @assertion Map<String, List<String>> queryParametersAll
 * ...
 * Keys are mapped to lists of their values. If a key occurs only once, its
 * value is a singleton list.
 * @description Checks that if a key occurs only once, its value is a singleton
 * list
 * @author sgrekhov@unipro.ru
 */
import "../../../Utils/expect.dart";

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