mirror of https://github.com/AMT-Cheif/drift.git
46 lines
1.2 KiB
Dart
46 lines
1.2 KiB
Dart
import 'package:sqlparser/src/engine/autocomplete/engine.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import 'utils.dart';
|
|
|
|
void main() {
|
|
test('suggests a CREATE an empty file', () {
|
|
final suggestions = completionsFor('^');
|
|
|
|
expect(suggestions.anchor, 0);
|
|
expect(suggestions, suggests('CREATE'));
|
|
});
|
|
|
|
test('suggests CREATE TABLE completion after CREATE', () async {
|
|
final suggestions = completionsFor('CREATE ^');
|
|
|
|
expect(suggestions.anchor, 7);
|
|
expect(suggestions, suggests('TABLE'));
|
|
});
|
|
|
|
test('suggests completions for started keywords', () {
|
|
final suggestions = completionsFor('creat^');
|
|
|
|
expect(suggestions.anchor, 0);
|
|
expect(suggestions, suggests('CREATE'));
|
|
});
|
|
}
|
|
|
|
dynamic hasCode(dynamic code) => SuggestionWithCode(code);
|
|
|
|
class SuggestionWithCode extends Matcher {
|
|
final Matcher codeMatcher;
|
|
|
|
SuggestionWithCode(dynamic code) : codeMatcher = wrapMatcher(code);
|
|
|
|
@override
|
|
Description describe(Description description) {
|
|
return description.add('suggests ').addDescriptionOf(codeMatcher);
|
|
}
|
|
|
|
@override
|
|
bool matches(dynamic item, Map matchState) {
|
|
return item is Suggestion && codeMatcher.matches(item.code, matchState);
|
|
}
|
|
}
|