Index: pkg/analysis_services/test/correction/assist_test.dart |
diff --git a/pkg/analysis_services/test/correction/assist_test.dart b/pkg/analysis_services/test/correction/assist_test.dart |
deleted file mode 100644 |
index 06f0738f613b3e828f75d9de40483ffefdc63f1b..0000000000000000000000000000000000000000 |
--- a/pkg/analysis_services/test/correction/assist_test.dart |
+++ /dev/null |
@@ -1,2247 +0,0 @@ |
-// Copyright (c) 2014, 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. |
- |
-library test.services.correction.assist; |
- |
-import 'package:analysis_services/correction/assist.dart'; |
-import 'package:analysis_services/correction/change.dart'; |
-import 'package:analysis_services/index/index.dart'; |
-import 'package:analysis_services/index/local_memory_index.dart'; |
-import 'package:analysis_services/src/search/search_engine.dart'; |
-import 'package:analysis_testing/abstract_single_unit.dart'; |
-import 'package:analysis_testing/reflective_tests.dart'; |
-import 'package:unittest/unittest.dart'; |
- |
- |
-main() { |
- groupSep = ' | '; |
- runReflectiveTests(AssistProcessorTest); |
-} |
- |
- |
-@ReflectiveTestCase() |
-class AssistProcessorTest extends AbstractSingleUnitTest { |
- Index index; |
- SearchEngineImpl searchEngine; |
- |
- int offset; |
- int length; |
- |
- Assist assist; |
- Change change; |
- String resultCode; |
- LinkedEditGroup linkedPositionGroup; |
- |
- /** |
- * Asserts that there is an [Assist] of the given [kind] at [offset] which |
- * produces the [expected] code when applied to [testCode]. |
- */ |
- void assertHasAssist(AssistKind kind, String expected) { |
- assist = _assertHasAssist(kind); |
- change = assist.change; |
- // apply to "file" |
- List<FileEdit> fileEdits = change.fileEdits; |
- expect(fileEdits, hasLength(1)); |
- resultCode = Edit.applySequence(testCode, change.fileEdits[0].edits); |
- // verify |
- expect(resultCode, expected); |
- } |
- |
- /** |
- * Calls [assertHasAssist] at the offset of [offsetSearch] in [testCode]. |
- */ |
- void assertHasAssistAt(String offsetSearch, AssistKind kind, |
- String expected) { |
- offset = findOffset(offsetSearch); |
- assertHasAssist(kind, expected); |
- } |
- |
- void assertHasPositionGroup(String id, int expectedLength, |
- List<Position> expectedPositions) { |
- List<LinkedEditGroup> linkedPositionGroups = change.linkedEditGroups; |
- for (LinkedEditGroup group in linkedPositionGroups) { |
- if (group.id == id) { |
- expect(group.length, expectedLength); |
- expect(group.positions, unorderedEquals(expectedPositions)); |
- linkedPositionGroup = group; |
- return; |
- } |
- } |
- fail('No PositionGroup with id=$id found in $linkedPositionGroups'); |
- } |
- |
- /** |
- * Asserts that there is no [Assist] of the given [kind] at [offset]. |
- */ |
- void assertNoAssist(AssistKind kind) { |
- List<Assist> assists = |
- computeAssists(searchEngine, testUnit, offset, length); |
- for (Assist assist in assists) { |
- if (assist.kind == kind) { |
- throw fail('Unexpected assist $kind in\n${assists.join('\n')}'); |
- } |
- } |
- } |
- |
- /** |
- * Calls [assertNoAssist] at the offset of [offsetSearch] in [testCode]. |
- */ |
- void assertNoAssistAt(String offsetSearch, AssistKind kind) { |
- offset = findOffset(offsetSearch); |
- assertNoAssist(kind); |
- } |
- |
- Position expectedPosition(String search) { |
- int offset = resultCode.indexOf(search); |
- return new Position(testFile, offset); |
- } |
- |
- List<Position> expectedPositions(List<String> patterns) { |
- List<Position> positions = <Position>[]; |
- patterns.forEach((String search) { |
- positions.add(expectedPosition(search)); |
- }); |
- return positions; |
- } |
- |
- List<LinkedEditSuggestion> expectedSuggestions(LinkedEditSuggestionKind kind, |
- List<String> values) { |
- return values.map((value) { |
- return new LinkedEditSuggestion(kind, value); |
- }).toList(); |
- } |
- |
- void setUp() { |
- super.setUp(); |
- index = createLocalMemoryIndex(); |
- searchEngine = new SearchEngineImpl(index); |
- offset = 0; |
- length = 0; |
- } |
- |
- void test_addTypeAnnotation_classField_OK_final() { |
- _indexTestUnit(''' |
-class A { |
- final f = 0; |
-} |
-'''); |
- assertHasAssistAt('final ', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-class A { |
- final int f = 0; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_classField_OK_int() { |
- _indexTestUnit(''' |
-class A { |
- var f = 0; |
-} |
-'''); |
- assertHasAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-class A { |
- int f = 0; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_OK_Function() { |
- _indexTestUnit(''' |
-main() { |
- var v = () => 1; |
-} |
-'''); |
- assertHasAssistAt('v =', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-main() { |
- Function v = () => 1; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_OK_List() { |
- _indexTestUnit(''' |
-main() { |
- var v = <String>[]; |
-} |
-'''); |
- assertHasAssistAt('v =', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-main() { |
- List<String> v = <String>[]; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_OK_int() { |
- _indexTestUnit(''' |
-main() { |
- var v = 0; |
-} |
-'''); |
- assertHasAssistAt('v =', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-main() { |
- int v = 0; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_OK_onInitializer() { |
- _indexTestUnit(''' |
-main() { |
- var v = 123; |
-} |
-'''); |
- assertHasAssistAt('23', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-main() { |
- int v = 123; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_OK_onName() { |
- _indexTestUnit(''' |
-main() { |
- var abc = 0; |
-} |
-'''); |
- assertHasAssistAt('bc', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-main() { |
- int abc = 0; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_OK_onVar() { |
- _indexTestUnit(''' |
-main() { |
- var v = 0; |
-} |
-'''); |
- assertHasAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-main() { |
- int v = 0; |
-} |
-'''); |
- } |
- |
- void test_addTypeAnnotation_local_wrong_hasTypeAnnotation() { |
- _indexTestUnit(''' |
-main() { |
- int v = 42; |
-} |
-'''); |
- assertNoAssistAt(' = 42', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_addTypeAnnotation_local_wrong_multiple() { |
- _indexTestUnit(''' |
-main() { |
- var a = 1, b = ''; |
-} |
-'''); |
- assertNoAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_addTypeAnnotation_local_wrong_noValue() { |
- verifyNoTestUnitErrors = false; |
- _indexTestUnit(''' |
-main() { |
- var v; |
-} |
-'''); |
- assertNoAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_addTypeAnnotation_local_wrong_null() { |
- _indexTestUnit(''' |
-main() { |
- var v = null; |
-} |
-'''); |
- assertNoAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_addTypeAnnotation_local_wrong_unknown() { |
- verifyNoTestUnitErrors = false; |
- _indexTestUnit(''' |
-main() { |
- var v = unknownVar; |
-} |
-'''); |
- assertNoAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_addTypeAnnotation_topLevelField_OK_int() { |
- _indexTestUnit(''' |
-var V = 0; |
-'''); |
- assertHasAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION, ''' |
-int V = 0; |
-'''); |
- } |
- |
- void test_addTypeAnnotation_topLevelField_wrong_multiple() { |
- _indexTestUnit(''' |
-var A = 1, V = ''; |
-'''); |
- assertNoAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_addTypeAnnotation_topLevelField_wrong_noValue() { |
- _indexTestUnit(''' |
-var V; |
-'''); |
- assertNoAssistAt('var ', AssistKind.ADD_TYPE_ANNOTATION); |
- } |
- |
- void test_assignToLocalVariable() { |
- _indexTestUnit(''' |
-main() { |
- List<int> bytes; |
- readBytes(); |
-} |
-List<int> readBytes() => <int>[]; |
-'''); |
- assertHasAssistAt('readBytes();', AssistKind.ASSIGN_TO_LOCAL_VARIABLE, ''' |
-main() { |
- List<int> bytes; |
- var readBytes = readBytes(); |
-} |
-List<int> readBytes() => <int>[]; |
-'''); |
- assertHasPositionGroup('NAME', 9, expectedPositions(['readBytes = '])); |
- expect( |
- linkedPositionGroup.suggestions, |
- unorderedEquals( |
- expectedSuggestions( |
- LinkedEditSuggestionKind.VARIABLE, |
- ['list', 'bytes2', 'readBytes']))); |
- } |
- |
- void test_assignToLocalVariable_alreadyAssignment() { |
- _indexTestUnit(''' |
-main() { |
- var vvv; |
- vvv = 42; |
-} |
-'''); |
- assertNoAssistAt('vvv =', AssistKind.ASSIGN_TO_LOCAL_VARIABLE); |
- } |
- |
- void test_assignToLocalVariable_throw() { |
- _indexTestUnit(''' |
-main() { |
- throw 42; |
-} |
-'''); |
- assertNoAssistAt('throw ', AssistKind.ASSIGN_TO_LOCAL_VARIABLE); |
- } |
- |
- void test_assignToLocalVariable_void() { |
- _indexTestUnit(''' |
-main() { |
- f(); |
-} |
-void f() {} |
-'''); |
- assertNoAssistAt('f();', AssistKind.ASSIGN_TO_LOCAL_VARIABLE); |
- } |
- |
- void test_convertToBlockBody_OK_closure() { |
- _indexTestUnit(''' |
-setup(x) {} |
-main() { |
- setup(() => print('done')); |
-} |
-'''); |
- assertHasAssistAt('() => print', AssistKind.CONVERT_INTO_BLOCK_BODY, ''' |
-setup(x) {} |
-main() { |
- setup(() { |
- return print('done'); |
- }); |
-} |
-'''); |
- } |
- |
- void test_convertToBlockBody_OK_method() { |
- _indexTestUnit(''' |
-class A { |
- mmm() => 123; |
-} |
-'''); |
- assertHasAssistAt('mmm()', AssistKind.CONVERT_INTO_BLOCK_BODY, ''' |
-class A { |
- mmm() { |
- return 123; |
- } |
-} |
-'''); |
- } |
- |
- void test_convertToBlockBody_OK_onName() { |
- _indexTestUnit(''' |
-fff() => 123; |
-'''); |
- assertHasAssistAt('fff()', AssistKind.CONVERT_INTO_BLOCK_BODY, ''' |
-fff() { |
- return 123; |
-} |
-'''); |
- } |
- |
- void test_convertToBlockBody_OK_onValue() { |
- _indexTestUnit(''' |
-fff() => 123; |
-'''); |
- assertHasAssistAt('23;', AssistKind.CONVERT_INTO_BLOCK_BODY, ''' |
-fff() { |
- return 123; |
-} |
-'''); |
- } |
- |
- void test_convertToBlockBody_wrong_noEnclosingFunction() { |
- _indexTestUnit(''' |
-var v = 123; |
-'''); |
- assertNoAssistAt('v =', AssistKind.CONVERT_INTO_BLOCK_BODY); |
- } |
- |
- void test_convertToBlockBody_wrong_notExpressionBlock() { |
- _indexTestUnit(''' |
-fff() { |
- return 123; |
-} |
-'''); |
- assertNoAssistAt('fff() {', AssistKind.CONVERT_INTO_BLOCK_BODY); |
- } |
- |
- void test_convertToExpressionBody_OK_closure() { |
- _indexTestUnit(''' |
-setup(x) {} |
-main() { |
- setup(() { |
- return 42; |
- }); |
-} |
-'''); |
- assertHasAssistAt('42;', AssistKind.CONVERT_INTO_EXPRESSION_BODY, ''' |
-setup(x) {} |
-main() { |
- setup(() => 42); |
-} |
-'''); |
- } |
- |
- void test_convertToExpressionBody_OK_function_onBlock() { |
- _indexTestUnit(''' |
-fff() { |
- return 42; |
-} |
-'''); |
- assertHasAssistAt('{', AssistKind.CONVERT_INTO_EXPRESSION_BODY, ''' |
-fff() => 42; |
-'''); |
- } |
- |
- void test_convertToExpressionBody_OK_function_onName() { |
- _indexTestUnit(''' |
-fff() { |
- return 42; |
-} |
-'''); |
- assertHasAssistAt('ff()', AssistKind.CONVERT_INTO_EXPRESSION_BODY, ''' |
-fff() => 42; |
-'''); |
- } |
- |
- void test_convertToExpressionBody_OK_method_onBlock() { |
- _indexTestUnit(''' |
-class A { |
- m() { // marker |
- return 42; |
- } |
-} |
-'''); |
- assertHasAssistAt( |
- '{ // marker', |
- AssistKind.CONVERT_INTO_EXPRESSION_BODY, |
- ''' |
-class A { |
- m() => 42; |
-} |
-'''); |
- } |
- |
- void test_convertToExpressionBody_OK_topFunction_onReturnStatement() { |
- _indexTestUnit(''' |
-fff() { |
- return 42; |
-} |
-'''); |
- assertHasAssistAt('return', AssistKind.CONVERT_INTO_EXPRESSION_BODY, ''' |
-fff() => 42; |
-'''); |
- } |
- |
- void test_convertToExpressionBody_wrong_already() { |
- _indexTestUnit(''' |
-fff() => 42; |
-'''); |
- assertNoAssistAt('fff()', AssistKind.CONVERT_INTO_EXPRESSION_BODY); |
- } |
- |
- void test_convertToExpressionBody_wrong_moreThanOneStatement() { |
- _indexTestUnit(''' |
-fff() { |
- var v = 42; |
- return v; |
-} |
-'''); |
- assertNoAssistAt('fff()', AssistKind.CONVERT_INTO_EXPRESSION_BODY); |
- } |
- |
- void test_convertToExpressionBody_wrong_noEnclosingFunction() { |
- _indexTestUnit(''' |
-var V = 42; |
-'''); |
- assertNoAssistAt('V = ', AssistKind.CONVERT_INTO_EXPRESSION_BODY); |
- } |
- |
- void test_convertToExpressionBody_wrong_noReturn() { |
- _indexTestUnit(''' |
-fff() { |
- var v = 42; |
-} |
-'''); |
- assertNoAssistAt('fff()', AssistKind.CONVERT_INTO_EXPRESSION_BODY); |
- } |
- |
- void test_convertToExpressionBody_wrong_noReturnValue() { |
- _indexTestUnit(''' |
-fff() { |
- return; |
-} |
-'''); |
- assertNoAssistAt('fff()', AssistKind.CONVERT_INTO_EXPRESSION_BODY); |
- } |
- |
- void test_convertToIsNotEmpty_OK_on_isEmpty() { |
- _indexTestUnit(''' |
-main(String str) { |
- !str.isEmpty; |
-} |
-'''); |
- assertHasAssistAt('isEmpty', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' |
-main(String str) { |
- str.isNotEmpty; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNotEmpty_OK_on_str() { |
- _indexTestUnit(''' |
-main(String str) { |
- !str.isEmpty; |
-} |
-'''); |
- assertHasAssistAt('str.', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' |
-main(String str) { |
- str.isNotEmpty; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNotEmpty_OK_propertyAccess() { |
- _indexTestUnit(''' |
-main(String str) { |
- !'text'.isEmpty; |
-} |
-'''); |
- assertHasAssistAt('isEmpty', AssistKind.CONVERT_INTO_IS_NOT_EMPTY, ''' |
-main(String str) { |
- 'text'.isNotEmpty; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNotEmpty_wrong_notInPrefixExpression() { |
- _indexTestUnit(''' |
-main(String str) { |
- str.isEmpty; |
-} |
-'''); |
- assertNoAssistAt('isEmpty;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); |
- } |
- |
- void test_convertToIsNotEmpty_wrong_notIsEmpty() { |
- _indexTestUnit(''' |
-main(int p) { |
- !p.isEven; |
-} |
-'''); |
- assertNoAssistAt('isEven;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); |
- } |
- |
- void test_convertToIsNotEmpty_wrote_noIsNotEmpty() { |
- _indexTestUnit(''' |
-class A { |
- bool get isEmpty => false; |
-} |
-main(A a) { |
- !a.isEmpty; |
-} |
-'''); |
- assertNoAssistAt('isEmpty;', AssistKind.CONVERT_INTO_IS_NOT_EMPTY); |
- } |
- |
- void test_convertToIsNot_OK_childOfIs_left() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p is String); |
-} |
-'''); |
- assertHasAssistAt('p is', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- p is! String; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_OK_childOfIs_right() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p is String); |
-} |
-'''); |
- assertHasAssistAt('String)', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- p is! String; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_OK_is() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p is String); |
-} |
-'''); |
- assertHasAssistAt('is String', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- p is! String; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_OK_is_higherPrecedencePrefix() { |
- _indexTestUnit(''' |
-main(p) { |
- !!(p is String); |
-} |
-'''); |
- assertHasAssistAt('is String', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- !(p is! String); |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_OK_is_not_higherPrecedencePrefix() { |
- _indexTestUnit(''' |
-main(p) { |
- !!(p is String); |
-} |
-'''); |
- assertHasAssistAt('!(p', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- !(p is! String); |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_OK_not() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p is String); |
-} |
-'''); |
- assertHasAssistAt('!(p', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- p is! String; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_OK_parentheses() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p is String); |
-} |
-'''); |
- assertHasAssistAt('(p is', AssistKind.CONVERT_INTO_IS_NOT, ''' |
-main(p) { |
- p is! String; |
-} |
-'''); |
- } |
- |
- void test_convertToIsNot_wrong_is_alreadyIsNot() { |
- _indexTestUnit(''' |
-main(p) { |
- p is! String; |
-} |
-'''); |
- assertNoAssistAt('is!', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_is_noEnclosingParenthesis() { |
- _indexTestUnit(''' |
-main(p) { |
- p is String; |
-} |
-'''); |
- assertNoAssistAt('is String', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_is_noPrefix() { |
- _indexTestUnit(''' |
-main(p) { |
- (p is String); |
-} |
-'''); |
- assertNoAssistAt('is String', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_is_notIsExpression() { |
- _indexTestUnit(''' |
-main(p) { |
- 123 + 456; |
-} |
-'''); |
- assertNoAssistAt('123 +', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_is_notTheNotOperator() { |
- verifyNoTestUnitErrors = false; |
- _indexTestUnit(''' |
-main(p) { |
- ++(p is String); |
-} |
-'''); |
- assertNoAssistAt('is String', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_not_alreadyIsNot() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p is! String); |
-} |
-'''); |
- assertNoAssistAt('!(p', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_not_noEnclosingParenthesis() { |
- _indexTestUnit(''' |
-main(p) { |
- !p; |
-} |
-'''); |
- assertNoAssistAt('!p', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_not_notIsExpression() { |
- _indexTestUnit(''' |
-main(p) { |
- !(p == null); |
-} |
-'''); |
- assertNoAssistAt('!(p', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_convertToIsNot_wrong_not_notTheNotOperator() { |
- verifyNoTestUnitErrors = false; |
- _indexTestUnit(''' |
-main(p) { |
- ++(p is String); |
-} |
-'''); |
- assertNoAssistAt('++(', AssistKind.CONVERT_INTO_IS_NOT); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_OK_extended_mixOperator_1() { |
- _indexTestUnit(''' |
-main() { |
- 1 * 2 * 3 + 4; |
-} |
-'''); |
- assertHasAssistAt('* 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 * 3 * 1 + 4; |
-} |
-'''); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_OK_extended_mixOperator_2() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2 - 3 + 4; |
-} |
-'''); |
- assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 + 1 - 3 + 4; |
-} |
-'''); |
- } |
- |
- void |
- test_exchangeBinaryExpressionArguments_OK_extended_sameOperator_afterFirst() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2 + 3; |
-} |
-'''); |
- assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 + 3 + 1; |
-} |
-'''); |
- } |
- |
- void |
- test_exchangeBinaryExpressionArguments_OK_extended_sameOperator_afterSecond() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2 + 3; |
-} |
-'''); |
- assertHasAssistAt('+ 3', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 3 + 1 + 2; |
-} |
-'''); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_OK_simple_afterOperator() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2; |
-} |
-'''); |
- assertHasAssistAt(' 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 + 1; |
-} |
-'''); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_OK_simple_beforeOperator() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2; |
-} |
-'''); |
- assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 + 1; |
-} |
-'''); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_OK_simple_fullSelection() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2; |
-} |
-'''); |
- length = '1 + 2'.length; |
- assertHasAssistAt('1 + 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 + 1; |
-} |
-'''); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_OK_simple_withLength() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2; |
-} |
-'''); |
- length = 2; |
- assertHasAssistAt('+ 2', AssistKind.EXCHANGE_OPERANDS, ''' |
-main() { |
- 2 + 1; |
-} |
-'''); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_wrong_extraLength() { |
- _indexTestUnit(''' |
-main() { |
- 111 + 222; |
-} |
-'''); |
- length = 3; |
- assertNoAssistAt('+ 222', AssistKind.EXCHANGE_OPERANDS); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_wrong_onOperand() { |
- _indexTestUnit(''' |
-main() { |
- 111 + 222; |
-} |
-'''); |
- length = 3; |
- assertNoAssistAt('11 +', AssistKind.EXCHANGE_OPERANDS); |
- } |
- |
- void test_exchangeBinaryExpressionArguments_wrong_selectionWithBinary() { |
- _indexTestUnit(''' |
-main() { |
- 1 + 2 + 3; |
-} |
-'''); |
- length = '1 + 2 + 3'.length; |
- assertNoAssistAt('1 + 2 + 3', AssistKind.EXCHANGE_OPERANDS); |
- } |
- |
- void test_importAddShow_BAD_hasShow() { |
- _indexTestUnit(''' |
-import 'dart:math' show PI; |
-main() { |
- PI; |
-} |
-'''); |
- assertNoAssistAt('import ', AssistKind.IMPORT_ADD_SHOW); |
- } |
- |
- void test_importAddShow_BAD_unused() { |
- _indexTestUnit(''' |
-import 'dart:math'; |
-'''); |
- assertNoAssistAt('import ', AssistKind.IMPORT_ADD_SHOW); |
- } |
- |
- void test_importAddShow_OK_onDirective() { |
- _indexTestUnit(''' |
-import 'dart:math'; |
-main() { |
- PI; |
- E; |
- max(1, 2); |
-} |
-'''); |
- assertHasAssistAt('import ', AssistKind.IMPORT_ADD_SHOW, ''' |
-import 'dart:math' show E, PI, max; |
-main() { |
- PI; |
- E; |
- max(1, 2); |
-} |
-'''); |
- } |
- |
- void test_importAddShow_OK_onUri() { |
- _indexTestUnit(''' |
-import 'dart:math'; |
-main() { |
- PI; |
- E; |
- max(1, 2); |
-} |
-'''); |
- assertHasAssistAt('art:math', AssistKind.IMPORT_ADD_SHOW, ''' |
-import 'dart:math' show E, PI, max; |
-main() { |
- PI; |
- E; |
- max(1, 2); |
-} |
-'''); |
- } |
- |
- void test_invertIfStatement_blocks() { |
- _indexTestUnit(''' |
-main() { |
- if (true) { |
- 0; |
- } else { |
- 1; |
- } |
-} |
-'''); |
- assertHasAssistAt('if (', AssistKind.INVERT_IF_STATEMENT, ''' |
-main() { |
- if (false) { |
- 1; |
- } else { |
- 0; |
- } |
-} |
-'''); |
- } |
- |
- void test_invertIfStatement_statements() { |
- _indexTestUnit(''' |
-main() { |
- if (true) |
- 0; |
- else |
- 1; |
-} |
-'''); |
- assertHasAssistAt('if (', AssistKind.INVERT_IF_STATEMENT, ''' |
-main() { |
- if (false) |
- 1; |
- else |
- 0; |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_conditionAndOr() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2 || 3 == 3) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (1 == 1 && (2 == 2 || 3 == 3)) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_conditionInvocation() { |
- _indexTestUnit(''' |
-main() { |
- if (isCheck()) { |
- if (2 == 2) { |
- print(0); |
- } |
- } |
-} |
-bool isCheck() => false; |
-'''); |
- assertHasAssistAt('if (isCheck', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (isCheck() && 2 == 2) { |
- print(0); |
- } |
-} |
-bool isCheck() => false; |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_conditionOrAnd() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1 || 2 == 2) { |
- if (3 == 3) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if ((1 == 1 || 2 == 2) && 3 == 3) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_onCondition() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_simpleConditions_block_block() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_simpleConditions_block_single() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) |
- print(0); |
- } |
-} |
-'''); |
- assertHasAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_simpleConditions_single_blockMulti() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(1); |
- print(2); |
- print(3); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(1); |
- print(2); |
- print(3); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_OK_simpleConditions_single_blockOne() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) |
- if (2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- assertHasAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementInner_wrong_innerNotIf() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- print(0); |
- } |
-} |
-'''); |
- assertNoAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER); |
- } |
- |
- void test_joinIfStatementInner_wrong_innerWithElse() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } else { |
- print(1); |
- } |
- } |
-} |
-'''); |
- assertNoAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER); |
- } |
- |
- void test_joinIfStatementInner_wrong_targetNotIf() { |
- _indexTestUnit(''' |
-main() { |
- print(0); |
-} |
-'''); |
- assertNoAssistAt('print', AssistKind.JOIN_IF_WITH_INNER); |
- } |
- |
- void test_joinIfStatementInner_wrong_targetWithElse() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } |
- } else { |
- print(1); |
- } |
-} |
-'''); |
- assertNoAssistAt('if (1 ==', AssistKind.JOIN_IF_WITH_INNER); |
- } |
- |
- void test_joinIfStatementOuter_OK_conditionAndOr() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2 || 3 == 3) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (2 ==', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && (2 == 2 || 3 == 3)) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_conditionInvocation() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (isCheck()) { |
- print(0); |
- } |
- } |
-} |
-bool isCheck() => false; |
-'''); |
- assertHasAssistAt('if (isCheck', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && isCheck()) { |
- print(0); |
- } |
-} |
-bool isCheck() => false; |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_conditionOrAnd() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1 || 2 == 2) { |
- if (3 == 3) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (3 == 3', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if ((1 == 1 || 2 == 2) && 3 == 3) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_onCondition() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_simpleConditions_block_block() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_simpleConditions_block_single() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) |
- print(0); |
- } |
-} |
-'''); |
- assertHasAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_simpleConditions_single_blockMulti() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(1); |
- print(2); |
- print(3); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(1); |
- print(2); |
- print(3); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_OK_simpleConditions_single_blockOne() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) |
- if (2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- assertHasAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER, ''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- } |
- |
- void test_joinIfStatementOuter_wrong_outerNotIf() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- print(0); |
- } |
-} |
-'''); |
- assertNoAssistAt('if (1 == 1', AssistKind.JOIN_IF_WITH_OUTER); |
- } |
- |
- void test_joinIfStatementOuter_wrong_outerWithElse() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } |
- } else { |
- print(1); |
- } |
-} |
-'''); |
- assertNoAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER); |
- } |
- |
- void test_joinIfStatementOuter_wrong_targetNotIf() { |
- _indexTestUnit(''' |
-main() { |
- print(0); |
-} |
-'''); |
- assertNoAssistAt('print', AssistKind.JOIN_IF_WITH_OUTER); |
- } |
- |
- void test_joinIfStatementOuter_wrong_targetWithElse() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2) { |
- print(0); |
- } else { |
- print(1); |
- } |
- } |
-} |
-'''); |
- assertNoAssistAt('if (2 == 2', AssistKind.JOIN_IF_WITH_OUTER); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_OK() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- v = 1; |
-} |
-'''); |
- assertHasAssistAt('v =', AssistKind.JOIN_VARIABLE_DECLARATION, ''' |
-main() { |
- var v = 1; |
-} |
-'''); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_hasInitializer() { |
- _indexTestUnit(''' |
-main() { |
- var v = 1; |
- v = 2; |
-} |
-'''); |
- assertNoAssistAt('v = 2', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notAdjacent() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- var bar; |
- v = 1; |
-} |
-'''); |
- assertNoAssistAt('v = 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notAssignment() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- v += 1; |
-} |
-'''); |
- assertNoAssistAt('v += 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notDeclaration() { |
- _indexTestUnit(''' |
-main(var v) { |
- v = 1; |
-} |
-'''); |
- assertNoAssistAt('v = 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notLeftArgument() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- 1 + v; // marker |
-} |
-'''); |
- assertNoAssistAt('v; // marker', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notOneVariable() { |
- _indexTestUnit(''' |
-main() { |
- var v, v2; |
- v = 1; |
-} |
-'''); |
- assertNoAssistAt('v = 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notResolved() { |
- verifyNoTestUnitErrors = false; |
- _indexTestUnit(''' |
-main() { |
- var v; |
- x = 1; |
-} |
-'''); |
- assertNoAssistAt('x = 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onAssignment_wrong_notSameBlock() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- { |
- v = 1; |
- } |
-} |
-'''); |
- assertNoAssistAt('v = 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onDeclaration_OK_onName() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- v = 1; |
-} |
-'''); |
- assertHasAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION, ''' |
-main() { |
- var v = 1; |
-} |
-'''); |
- } |
- |
- void test_joinVariableDeclaration_onDeclaration_OK_onType() { |
- _indexTestUnit(''' |
-main() { |
- int v; |
- v = 1; |
-} |
-'''); |
- assertHasAssistAt('int v', AssistKind.JOIN_VARIABLE_DECLARATION, ''' |
-main() { |
- int v = 1; |
-} |
-'''); |
- } |
- |
- void test_joinVariableDeclaration_onDeclaration_OK_onVar() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- v = 1; |
-} |
-'''); |
- assertHasAssistAt('var v', AssistKind.JOIN_VARIABLE_DECLARATION, ''' |
-main() { |
- var v = 1; |
-} |
-'''); |
- } |
- |
- void test_joinVariableDeclaration_onDeclaration_wrong_hasInitializer() { |
- _indexTestUnit(''' |
-main() { |
- var v = 1; |
- v = 2; |
-} |
-'''); |
- assertNoAssistAt('v = 1', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onDeclaration_wrong_lastStatement() { |
- _indexTestUnit(''' |
-main() { |
- if (true) |
- var v; |
-} |
-'''); |
- assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void |
- test_joinVariableDeclaration_onDeclaration_wrong_nextNotAssignmentExpression() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- 42; |
-} |
-'''); |
- assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void |
- test_joinVariableDeclaration_onDeclaration_wrong_nextNotExpressionStatement() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- if (true) return; |
-} |
-'''); |
- assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void |
- test_joinVariableDeclaration_onDeclaration_wrong_nextNotPureAssignment() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- v += 1; |
-} |
-'''); |
- assertNoAssistAt('v;', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_joinVariableDeclaration_onDeclaration_wrong_notOneVariable() { |
- _indexTestUnit(''' |
-main() { |
- var v, v2; |
- v = 1; |
-} |
-'''); |
- assertNoAssistAt('v, ', AssistKind.JOIN_VARIABLE_DECLARATION); |
- } |
- |
- void test_removeTypeAnnotation_classField_OK() { |
- _indexTestUnit(''' |
-class A { |
- int v = 1; |
-} |
-'''); |
- assertHasAssistAt('v = ', AssistKind.REMOVE_TYPE_ANNOTATION, ''' |
-class A { |
- var v = 1; |
-} |
-'''); |
- } |
- |
- void test_removeTypeAnnotation_localVariable_OK() { |
- _indexTestUnit(''' |
-main() { |
- int a = 1, b = 2; |
-} |
-'''); |
- assertHasAssistAt('int ', AssistKind.REMOVE_TYPE_ANNOTATION, ''' |
-main() { |
- var a = 1, b = 2; |
-} |
-'''); |
- } |
- |
- void test_removeTypeAnnotation_topLevelVariable_OK() { |
- _indexTestUnit(''' |
-int V = 1; |
-'''); |
- assertHasAssistAt('int ', AssistKind.REMOVE_TYPE_ANNOTATION, ''' |
-var V = 1; |
-'''); |
- } |
- |
- void test_replaceConditionalWithIfElse_OK_assignment() { |
- _indexTestUnit(''' |
-main() { |
- var v; |
- v = true ? 111 : 222; |
-} |
-'''); |
- // on conditional |
- assertHasAssistAt('11 :', AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE, ''' |
-main() { |
- var v; |
- if (true) { |
- v = 111; |
- } else { |
- v = 222; |
- } |
-} |
-'''); |
- // on variable |
- assertHasAssistAt('v =', AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE, ''' |
-main() { |
- var v; |
- if (true) { |
- v = 111; |
- } else { |
- v = 222; |
- } |
-} |
-'''); |
- } |
- |
- void test_replaceConditionalWithIfElse_OK_return() { |
- _indexTestUnit(''' |
-main() { |
- return true ? 111 : 222; |
-} |
-'''); |
- assertHasAssistAt( |
- 'return ', |
- AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE, |
- ''' |
-main() { |
- if (true) { |
- return 111; |
- } else { |
- return 222; |
- } |
-} |
-'''); |
- } |
- |
- void test_replaceConditionalWithIfElse_OK_variableDeclaration() { |
- _indexTestUnit(''' |
-main() { |
- int a = 1, vvv = true ? 111 : 222, b = 2; |
-} |
-'''); |
- assertHasAssistAt('11 :', AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE, ''' |
-main() { |
- int a = 1, vvv, b = 2; |
- if (true) { |
- vvv = 111; |
- } else { |
- vvv = 222; |
- } |
-} |
-'''); |
- } |
- |
- void test_replaceConditionalWithIfElse_wrong_noEnclosingStatement() { |
- _indexTestUnit(''' |
-var v = true ? 111 : 222; |
-'''); |
- assertNoAssistAt('? 111', AssistKind.REPLACE_CONDITIONAL_WITH_IF_ELSE); |
- } |
- |
- void test_replaceIfElseWithConditional_OK_assignment() { |
- _indexTestUnit(''' |
-main() { |
- int vvv; |
- if (true) { |
- vvv = 111; |
- } else { |
- vvv = 222; |
- } |
-} |
-'''); |
- assertHasAssistAt( |
- 'if (true)', |
- AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL, |
- ''' |
-main() { |
- int vvv; |
- vvv = true ? 111 : 222; |
-} |
-'''); |
- } |
- |
- void test_replaceIfElseWithConditional_OK_return() { |
- _indexTestUnit(''' |
-main() { |
- if (true) { |
- return 111; |
- } else { |
- return 222; |
- } |
-} |
-'''); |
- assertHasAssistAt( |
- 'if (true)', |
- AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL, |
- ''' |
-main() { |
- return true ? 111 : 222; |
-} |
-'''); |
- } |
- |
- void test_replaceIfElseWithConditional_wrong_notIfStatement() { |
- _indexTestUnit(''' |
-main() { |
- print(0); |
-} |
-'''); |
- assertNoAssistAt('print', AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL); |
- } |
- |
- void test_replaceIfElseWithConditional_wrong_notSingleStatememt() { |
- _indexTestUnit(''' |
-main() { |
- int vvv; |
- if (true) { |
- print(0); |
- vvv = 111; |
- } else { |
- print(0); |
- vvv = 222; |
- } |
-} |
-'''); |
- assertNoAssistAt('if (true)', AssistKind.REPLACE_IF_ELSE_WITH_CONDITIONAL); |
- } |
- |
- void test_splitAndCondition_OK_innerAndExpression() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1 && 2 == 2 && 3 == 3) { |
- print(0); |
- } |
-} |
-'''); |
- assertHasAssistAt('&& 2 == 2', AssistKind.SPLIT_AND_CONDITION, ''' |
-main() { |
- if (1 == 1) { |
- if (2 == 2 && 3 == 3) { |
- print(0); |
- } |
- } |
-} |
-'''); |
- } |
- |
- void test_splitAndCondition_OK_thenBlock() { |
- _indexTestUnit(''' |
-main() { |
- if (true && false) { |
- print(0); |
- if (3 == 3) { |
- print(1); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('&& false', AssistKind.SPLIT_AND_CONDITION, ''' |
-main() { |
- if (true) { |
- if (false) { |
- print(0); |
- if (3 == 3) { |
- print(1); |
- } |
- } |
- } |
-} |
-'''); |
- } |
- |
- void test_splitAndCondition_OK_thenBlock_elseBlock() { |
- _indexTestUnit(''' |
-main() { |
- if (true && false) { |
- print(0); |
- } else { |
- print(1); |
- if (2 == 2) { |
- print(2); |
- } |
- } |
-} |
-'''); |
- assertHasAssistAt('&& false', AssistKind.SPLIT_AND_CONDITION, ''' |
-main() { |
- if (true) { |
- if (false) { |
- print(0); |
- } else { |
- print(1); |
- if (2 == 2) { |
- print(2); |
- } |
- } |
- } |
-} |
-'''); |
- } |
- |
- void test_splitAndCondition_OK_thenStatement() { |
- _indexTestUnit(''' |
-main() { |
- if (true && false) |
- print(0); |
-} |
-'''); |
- assertHasAssistAt('&& false', AssistKind.SPLIT_AND_CONDITION, ''' |
-main() { |
- if (true) |
- if (false) |
- print(0); |
-} |
-'''); |
- } |
- |
- void test_splitAndCondition_OK_thenStatement_elseStatement() { |
- _indexTestUnit(''' |
-main() { |
- if (true && false) |
- print(0); |
- else |
- print(1); |
-} |
-'''); |
- assertHasAssistAt('&& false', AssistKind.SPLIT_AND_CONDITION, ''' |
-main() { |
- if (true) |
- if (false) |
- print(0); |
- else |
- print(1); |
-} |
-'''); |
- } |
- |
- void test_splitAndCondition_wrong() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1 && 2 == 2) { |
- print(0); |
- } |
- print(3 == 3 && 4 == 4); |
-} |
-'''); |
- // not binary expression |
- assertNoAssistAt('main() {', AssistKind.SPLIT_AND_CONDITION); |
- // selection is not empty and includes more than just operator |
- { |
- length = 5; |
- assertNoAssistAt('&& 2 == 2', AssistKind.SPLIT_AND_CONDITION); |
- } |
- } |
- |
- void test_splitAndCondition_wrong_notAnd() { |
- _indexTestUnit(''' |
-main() { |
- if (1 == 1 || 2 == 2) { |
- print(0); |
- } |
-} |
-'''); |
- assertNoAssistAt('|| 2', AssistKind.SPLIT_AND_CONDITION); |
- } |
- |
- void test_splitAndCondition_wrong_notPartOfIf() { |
- _indexTestUnit(''' |
-main() { |
- print(1 == 1 && 2 == 2); |
-} |
-'''); |
- assertNoAssistAt('&& 2', AssistKind.SPLIT_AND_CONDITION); |
- } |
- |
- void test_splitAndCondition_wrong_notTopLevelAnd() { |
- _indexTestUnit(''' |
-main() { |
- if (true || (1 == 1 && 2 == 2)) { |
- print(0); |
- } |
- if (true && (3 == 3 && 4 == 4)) { |
- print(0); |
- } |
-} |
-'''); |
- assertNoAssistAt('&& 2', AssistKind.SPLIT_AND_CONDITION); |
- assertNoAssistAt('&& 4', AssistKind.SPLIT_AND_CONDITION); |
- } |
- |
- void test_splitVariableDeclaration_OK_onName() { |
- _indexTestUnit(''' |
-main() { |
- var v = 1; |
-} |
-'''); |
- assertHasAssistAt('v =', AssistKind.SPLIT_VARIABLE_DECLARATION, ''' |
-main() { |
- var v; |
- v = 1; |
-} |
-'''); |
- } |
- |
- void test_splitVariableDeclaration_OK_onType() { |
- _indexTestUnit(''' |
-main() { |
- int v = 1; |
-} |
-'''); |
- assertHasAssistAt('int ', AssistKind.SPLIT_VARIABLE_DECLARATION, ''' |
-main() { |
- int v; |
- v = 1; |
-} |
-'''); |
- } |
- |
- void test_splitVariableDeclaration_OK_onVar() { |
- _indexTestUnit(''' |
-main() { |
- var v = 1; |
-} |
-'''); |
- assertHasAssistAt('var ', AssistKind.SPLIT_VARIABLE_DECLARATION, ''' |
-main() { |
- var v; |
- v = 1; |
-} |
-'''); |
- } |
- |
- void test_splitVariableDeclaration_wrong_notOneVariable() { |
- _indexTestUnit(''' |
-main() { |
- var v = 1, v2; |
-} |
-'''); |
- assertNoAssistAt('v = 1', AssistKind.SPLIT_VARIABLE_DECLARATION); |
- } |
- |
- void test_surroundWith_block() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_BLOCK, ''' |
-main() { |
-// start |
- { |
- print(0); |
- print(1); |
- } |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_doWhile() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_DO_WHILE, ''' |
-main() { |
-// start |
- do { |
- print(0); |
- print(1); |
- } while (condition); |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_for() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_FOR, ''' |
-main() { |
-// start |
- for (var v = init; condition; increment) { |
- print(0); |
- print(1); |
- } |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_forIn() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_FOR_IN, ''' |
-main() { |
-// start |
- for (var item in iterable) { |
- print(0); |
- print(1); |
- } |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_if() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_IF, ''' |
-main() { |
-// start |
- if (condition) { |
- print(0); |
- print(1); |
- } |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_tryCatch() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_TRY_CATCH, ''' |
-main() { |
-// start |
- try { |
- print(0); |
- print(1); |
- } on Exception catch (e) { |
- // TODO |
- } |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_tryFinally() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_TRY_FINALLY, ''' |
-main() { |
-// start |
- try { |
- print(0); |
- print(1); |
- } finally { |
- // TODO |
- } |
-// end |
-} |
-'''); |
- } |
- |
- void test_surroundWith_while() { |
- _indexTestUnit(''' |
-main() { |
-// start |
- print(0); |
- print(1); |
-// end |
-} |
-'''); |
- _setStartEndSelection(); |
- assertHasAssist(AssistKind.SURROUND_WITH_WHILE, ''' |
-main() { |
-// start |
- while (condition) { |
- print(0); |
- print(1); |
- } |
-// end |
-} |
-'''); |
- } |
- |
- /** |
- * Computes assists and verifies that there is an assist of the given kind. |
- */ |
- Assist _assertHasAssist(AssistKind kind) { |
- List<Assist> assists = |
- computeAssists(searchEngine, testUnit, offset, length); |
- for (Assist assist in assists) { |
- if (assist.kind == kind) { |
- return assist; |
- } |
- } |
- throw fail('Expected to find assist $kind in\n${assists.join('\n')}'); |
- } |
- |
- void _assertHasLinkedPositions(String groupId, List<String> expectedStrings) { |
- List<Position> expectedPositions = _findResultPositions(expectedStrings); |
- List<LinkedEditGroup> groups = change.linkedEditGroups; |
- for (LinkedEditGroup group in groups) { |
- if (group.id == groupId) { |
- List<Position> actualPositions = group.positions; |
- expect(actualPositions, unorderedEquals(expectedPositions)); |
- return; |
- } |
- } |
- fail('No group with ID=$groupId foind in\n${groups.join('\n')}'); |
- } |
- |
- void _assertHasLinkedProposals(String groupId, List<String> expected) { |
- List<LinkedEditGroup> groups = change.linkedEditGroups; |
- for (LinkedEditGroup group in groups) { |
- if (group.id == groupId) { |
- expect(group.suggestions, expected); |
- return; |
- } |
- } |
- fail('No group with ID=$groupId foind in\n${groups.join('\n')}'); |
- } |
- |
- List<Position> _findResultPositions(List<String> searchStrings) { |
- List<Position> positions = <Position>[]; |
- for (String search in searchStrings) { |
- int offset = resultCode.indexOf(search); |
- positions.add(new Position(testFile, offset)); |
- } |
- return positions; |
- } |
- |
- void _indexTestUnit(String code) { |
- resolveTestUnit(code); |
- index.indexUnit(context, testUnit); |
- } |
- |
- void _setStartEndSelection() { |
- offset = findOffset('// start\n') + '// start\n'.length; |
- length = findOffset('// end') - offset; |
- } |
-} |