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

import "package:expect/expect.dart";
import 'dart:_foreign_helper' show JS;
import 'dart:_runtime' as dart;

void main() {
  dynamic data = JS('', '[1, 2, 3, 4]');
  Expect.isFalse(data is List<int>);

  var list = dart.constList(data, dart.unwrapType(int));
  Expect.isTrue(list is List<int>);
  Expect.throws(() {
    list[0] = 0;
  });

  var set = dart.constSet<int>(data);
  Expect.isTrue(set is Set<int>);
  Expect.isTrue(set.contains(3));
  Expect.throws(() => set.clear());

  var map = dart.constMap<int, int>(data);
  Expect.isTrue(map is Map<int, int>);
  Expect.equals(map[1], 2);
  Expect.throws(() {
    map[1] = 42;
  });
}
