// Copyright (c) 2012, 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. // ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: unreachable_from_main @TestOn('vm') library; import 'package:matcher/mirror_matchers.dart'; import 'package:test/test.dart'; import 'test_utils.dart'; class C { int instanceField = 1; int get instanceGetter => 2; static int staticField = 3; static int get staticGetter => 4; } void main() { test('hasProperty', () { var foo = [3]; shouldPass(foo, hasProperty('length', 1)); shouldFail( foo, hasProperty('foo'), 'Expected: has property "foo" ' 'Actual: [3] ' 'Which: has no property named "foo"', ); shouldFail( foo, hasProperty('length', 2), 'Expected: has property "length" which matches <2> ' 'Actual: [3] ' 'Which: has property "length" with value <1>', ); var c = C(); shouldPass(c, hasProperty('instanceField', 1)); shouldPass(c, hasProperty('instanceGetter', 2)); shouldFail( c, hasProperty('staticField'), 'Expected: has property "staticField" ' 'Actual: ' 'Which: has a member named "staticField",' ' but it is not an instance property', ); shouldFail( c, hasProperty('staticGetter'), 'Expected: has property "staticGetter" ' 'Actual: ' 'Which: has a member named "staticGetter",' ' but it is not an instance property', ); }); }