blob: a7856a6eb8fcf87d81419d05fa201ca6fd4fa246 [file] [log] [blame]
// 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 '../../../../client/completion_driver_test.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(NullAwareElementTest);
});
}
@reflectiveTest
class NullAwareElementTest extends AbstractCompletionDriverTest
with NullAwareElementTestCases {}
mixin NullAwareElementTestCases on AbstractCompletionDriverTest {
Future<void> test_inList_after_elementsAfter() async {
await computeSuggestions('''
f() => [?^, 0];
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inList_after_elementsBefore() async {
await computeSuggestions('''
f() => [0, ?^];
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inList_after_elementsBeforeAndAfter() async {
await computeSuggestions('''
f() => [0, ?^, 0];
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inList_after_singleElement() async {
await computeSuggestions('''
f() => [?^];
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inList_before_elementsAfter() async {
await computeSuggestions('''
f() => [^?, 0];
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inList_before_elementsBefore() async {
await computeSuggestions('''
f() => [0, ^?];
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inList_before_elementsBeforeAndAfter() async {
await computeSuggestions('''
f() => [0, ^?, 1];
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inList_before_SingleElement() async {
await computeSuggestions('''
f() => [^?];
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withoutValue_entriesAfter() async {
await computeSuggestions('''
f() => <String, int>{?^, "one": 1};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withoutValue_entriesBefore() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ?^};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void>
test_inMap_inKey_after_withoutValue_entriesBeforeAndAfter() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ?^, "two": 2};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withoutValue_singleEntry() async {
await computeSuggestions('''
f() => <String, int>{?^};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withValue_entriesAfter() async {
await computeSuggestions('''
f() => <String, int>{?^: 0, "one": 1};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withValue_entriesBefore() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ?^: 0};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withValue_entriesBeforeAndAfter() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ?^: 0, "two": 2};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_after_withValue_singleEntry() async {
await computeSuggestions('''
f() => <String, int>{?^: 0};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withoutValue_entriesAfter() async {
await computeSuggestions('''
f() => <String, int>{^?, "one": 1};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withoutValue_entriesBefore() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ^?};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void>
test_inMap_inKey_before_withoutValue_entriesBeforeAndAfter() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ^?, "two": 2};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withoutValue_singleEntry() async {
await computeSuggestions('''
f() => <String, int>{^?};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withValue_entriesAfter() async {
await computeSuggestions('''
f() => <String, int>{^?: 0, "one": 1};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
if
kind: keyword
for
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withValue_entriesBefore() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ^?: 0};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
if
kind: keyword
for
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withValue_entriesBeforeAndAfter() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, ^?: 0, "two": 2};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
if
kind: keyword
for
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inKey_before_withValue_singleEntry() async {
await computeSuggestions('''
f() => <String, int>{^?: 0};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
if
kind: keyword
for
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_after_entriesAfter() async {
await computeSuggestions('''
f() => <String, int>{"": ?^, "one": 1};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_after_entriesBefore() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, "": ?^};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_after_entriesBeforeAndAfter() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, "": ?^, "two": 2};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_after_singleEntry() async {
await computeSuggestions('''
f() => <String, int>{"": ?^};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_before_entriesAfter() async {
await computeSuggestions('''
f() => <String, int>{"": ^?, "one": 1};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_before_entriesBefore() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, "": ^?};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_before_singleEntry() async {
await computeSuggestions('''
f() => <String, int>{"": ^?};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inMap_inValue_before_withEntriesBeforeAndAfter() async {
await computeSuggestions('''
f() => <String, int>{"one": 1, "": ^?, "two": 2};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
for
kind: keyword
if
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inSet_after_elementsAfter() async {
await computeSuggestions('''
f() => <Object?>{?^, 0};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inSet_after_elementsBefore() async {
await computeSuggestions('''
f() => <Object?>{0, ?^};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inSet_after_elementsBeforeAndAfter() async {
await computeSuggestions('''
f() => <Object?>{0, ?^, 1};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inSet_after_singleElement() async {
await computeSuggestions('''
f() => <Object?>{?^};
''');
assertResponse(r'''
suggestions
const
kind: keyword
false
kind: keyword
null
kind: keyword
switch
kind: keyword
true
kind: keyword
''');
}
Future<void> test_inSet_before_elementsAfter() async {
await computeSuggestions('''
f() => <Object?>{^?, 0};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inSet_before_elementsBefore() async {
await computeSuggestions('''
f() => <Object?>{0, ^?};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inSet_before_elementsBeforeAndAfter() async {
await computeSuggestions('''
f() => <Object?>{0, ^?, 1};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
Future<void> test_inSet_before_singleEntry() async {
await computeSuggestions('''
f() => <Object?>{^?};
''');
assertResponse(r'''
suggestions
false
kind: keyword
null
kind: keyword
true
kind: keyword
const
kind: keyword
switch
kind: keyword
''');
}
}