// Copyright (c) 2013, 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.7 import 'native_testing.dart'; @Native("A") class A {} int calls = 0; @Native("B") class B { bool operator ==(other) { ++calls; return other is B; } int get hashCode => 1; } makeA() native; makeB() native; void setup() { JS('', r""" (function(){ function A() {} function B() {} self.makeA = function(){return new A()}; self.makeB = function(){return new B()}; self.nativeConstructor(B); })()"""); applyTestExtensions(['B']); } main() { nativeTesting(); setup(); var a = makeA(); Expect.isTrue(a == a); Expect.isTrue(identical(a, a)); Expect.isFalse(a == makeA()); Expect.isFalse(identical(a, makeA())); var b = makeB(); Expect.isTrue(b == b); Expect.isTrue(identical(b, b)); Expect.isTrue(b == makeB()); Expect.isFalse(identical(b, makeB())); Expect.equals(2, calls); }