| // Copyright (c) 2024, 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:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import '../rule_test_support.dart'; |
| |
| void main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(PreferIsEmptyTest); |
| }); |
| } |
| |
| @reflectiveTest |
| class PreferIsEmptyTest extends LintRuleTest { |
| @override |
| String get lintRule => LintNames.prefer_is_empty; |
| |
| test_iterableLength_notEq_zero() async { |
| await assertDiagnostics( |
| r''' |
| var i = Iterable.empty(); |
| var x = i.length != 0; |
| ''', |
| [lint(34, 13)], |
| ); |
| } |
| |
| test_listLength_asInt_greaterThan_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = ([].length as int) > 0; |
| ''', |
| [lint(8, 22), error(WarningCode.unnecessaryCast, 9, 16)], |
| ); |
| } |
| |
| test_listLength_eqEq_negativeOne() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length == -1; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_listLength_eqEq_one() async { |
| await assertNoDiagnostics(r''' |
| var x = [].length == 1; |
| '''); |
| } |
| |
| test_listLength_eqEq_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length == 0; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_greaterThan_negativeOne() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length > -1; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_greaterThan_one() async { |
| await assertNoDiagnostics(r''' |
| var x = [].length > 1; |
| '''); |
| } |
| |
| test_listLength_greaterThan_one_boolTarget() async { |
| await assertNoDiagnostics(r''' |
| bool x = [].length > 1; |
| '''); |
| } |
| |
| test_listLength_greaterThan_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length > 0; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_listLength_greaterThan_zero_inConditional() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length > 0 ? 7 : 6; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_listLength_greaterThan_zero_inConstructorAssertInitializer() async { |
| await assertNoDiagnostics(r''' |
| class A { |
| final List<String> x; |
| const A(this.x) : assert(x.length > 0); |
| } |
| '''); |
| } |
| |
| test_listLength_greaterThanEq_negativeOne() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length >= -1; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_listLength_greaterThanEq_one() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length >= 1; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_greaterThanEq_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length >= 0; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_lessThan_negativeOne() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length < -1; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_lessThan_one() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length < 1; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_listLength_lessThan_variable() async { |
| await assertNoDiagnostics(r''' |
| var zero = 0; |
| var x = [].length < zero; |
| '''); |
| } |
| |
| test_listLength_lessThan_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length < 0; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_listLength_lessThanEq_negativeOne() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length <= -1; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_listLength_lessThanEq_one() async { |
| await assertNoDiagnostics(r''' |
| var x = [].length <= 1; |
| '''); |
| } |
| |
| test_listLength_lessThanEq_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length <= 0; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_notEq_negativeOne() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length != -1; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_listLength_notEq_one() async { |
| await assertNoDiagnostics(r''' |
| var x = [].length != 1; |
| '''); |
| } |
| |
| test_listLength_notEq_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = [].length != 0; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_listLength_plusExpression_greaterThan_zero() async { |
| await assertNoDiagnostics(r''' |
| var x = [].length + 1 > 0; |
| '''); |
| } |
| |
| test_mapLength_parenthesized_eqEq_zero() async { |
| await assertDiagnostics( |
| r''' |
| var x = ({1: 2}.length) == 0; |
| ''', |
| [lint(8, 20)], |
| ); |
| } |
| |
| test_negativeOne_eqEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = -1 == [].length; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_negativeOne_greaterThan_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = -1 > [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_negativeOne_greaterThanEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = -1 >= [].length; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_negativeOne_lessThan_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = -1 < [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_negativeOne_lessThanEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = -1 <= [].length; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_negativeOne_notEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = -1 != [].length; |
| ''', |
| [lint(8, 15)], |
| ); |
| } |
| |
| test_one_eqEq_listLength() async { |
| await assertNoDiagnostics(r''' |
| var x = 1 == [].length; |
| '''); |
| } |
| |
| test_one_greaterThan_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 1 > [].length; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_one_greaterThanEq_listLength() async { |
| await assertNoDiagnostics(r''' |
| var x = 1 >= [].length; |
| '''); |
| } |
| |
| test_one_lessThan_listLength() async { |
| await assertNoDiagnostics(r''' |
| var x = 1 < [].length; |
| '''); |
| } |
| |
| test_one_lessThanEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 1 <= [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_one_notEq_listLength() async { |
| await assertNoDiagnostics(r''' |
| var x = 1 != [].length; |
| '''); |
| } |
| |
| test_stringLength_eqEq_zero_inConstructorInitializer() async { |
| await assertDiagnostics( |
| r''' |
| class C { |
| final bool x; |
| C(String s) : x = s.length == 0; |
| } |
| ''', |
| [lint(46, 13)], |
| ); |
| } |
| |
| test_stringLength_greaterThan_zero_constructorAssertInitializer() async { |
| await assertNoDiagnostics(r''' |
| class C { |
| final String s; |
| const C(this.s) : assert(s.length > 0); |
| } |
| '''); |
| } |
| |
| test_variable_lessThan_listLength() async { |
| await assertNoDiagnostics(r''' |
| var zero = 0; |
| var x = zero < [].length; |
| '''); |
| } |
| |
| test_zero_eqEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 0 == [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_zero_greaterThan_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 0 > [].length; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_zero_greaterThanEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 0 >= [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_zero_lessThan_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 0 < [].length; |
| ''', |
| [lint(8, 13)], |
| ); |
| } |
| |
| test_zero_lessThanOrEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 0 <= [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| |
| test_zero_notEq_listLength() async { |
| await assertDiagnostics( |
| r''' |
| var x = 0 != [].length; |
| ''', |
| [lint(8, 14)], |
| ); |
| } |
| } |