blob: b54994534679ba2bcb21bc2a5a495104db9ee43c [file] [log] [blame]
// 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
@JS()
library prototest;
import 'package:js/js.dart';
import 'package:expect/expect.dart';
@JS('window.ArrayBuffer')
external Class get arrayBufferClass;
@JS('Function')
class Class {
external dynamic get prototype;
external Constructor get constructor;
external String get name;
}
class Normal {
int prototype = 42;
Normal constructor() {
return this;
}
int operator [](int i) => prototype;
}
@JS()
class Constructor {
external String get name;
}
void main() {
Expect.isTrue(arrayBufferClass.prototype != null);
var normal = new Normal();
Expect.equals(42, normal.prototype);
Expect.equals(42, normal[0]);
Expect.isTrue(arrayBufferClass.constructor != null);
Expect.isTrue(arrayBufferClass.constructor is Function);
Expect.isTrue(arrayBufferClass.constructor is Constructor);
Expect.equals("ArrayBuffer", arrayBufferClass.name);
Expect.equals("Function", arrayBufferClass.constructor.name);
Expect.isTrue(normal.constructor is Function);
Expect.equals(normal, normal.constructor());
}