blob: ef66cc5fffbf5c67d9c896087fab892673774b33 [file] [log] [blame]
// Copyright (c) 2016, 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:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/name_filter.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(NameFilterTest);
});
}
@reflectiveTest
class NameFilterTest {
test_accepts_accessors_hide() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['bar']));
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('foo='), isTrue);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('bar='), isFalse);
}
test_accepts_accessors_show() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo']));
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('foo='), isTrue);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('bar='), isFalse);
}
test_forNamespaceCombinator_hide() {
NameFilter filter = new NameFilter.forNamespaceCombinator(
new HideElementCombinatorImpl()..hiddenNames = ['foo', 'bar']);
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_forNamespaceCombinator_show() {
NameFilter filter = new NameFilter.forNamespaceCombinator(
new ShowElementCombinatorImpl()..shownNames = ['foo', 'bar']);
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('bar'), isTrue);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['foo', 'bar'].toSet());
}
test_forNamespaceCombinators() {
NameFilter filter = new NameFilter.forNamespaceCombinators([
new HideElementCombinatorImpl()..hiddenNames = ['foo'],
new HideElementCombinatorImpl()..hiddenNames = ['bar']
]);
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_forUnlinkedCombinator_hide() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['foo', 'bar']));
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_forUnlinkedCombinator_show() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo', 'bar']));
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('bar'), isTrue);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['foo', 'bar'].toSet());
}
test_forUnlinkedCombinators() {
NameFilter filter = new NameFilter.forUnlinkedCombinators([
new UnlinkedCombinatorBuilder(hides: ['foo']),
new UnlinkedCombinatorBuilder(hides: ['bar'])
]);
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_identity() {
expect(NameFilter.identity.accepts('foo'), isTrue);
expect(NameFilter.identity.hiddenNames, isNotNull);
expect(NameFilter.identity.hiddenNames, isEmpty);
expect(NameFilter.identity.shownNames, isNull);
}
test_merge_hides_hides() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['foo']))
.merge(new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['bar'])));
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_merge_hides_identity() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['foo', 'bar']))
.merge(NameFilter.identity);
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_merge_hides_shows() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['bar', 'baz']))
.merge(new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo', 'bar'])));
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['foo'].toSet());
}
test_merge_identity_hides() {
NameFilter filter = NameFilter.identity.merge(
new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['foo', 'bar'])));
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isTrue);
expect(filter.shownNames, isNull);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, ['foo', 'bar'].toSet());
}
test_merge_identity_identity() {
NameFilter filter = NameFilter.identity.merge(NameFilter.identity);
expect(filter.accepts('foo'), isTrue);
expect(filter.hiddenNames, isNotNull);
expect(filter.hiddenNames, isEmpty);
expect(filter.shownNames, isNull);
}
test_merge_identity_shows() {
NameFilter filter = NameFilter.identity.merge(
new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo', 'bar'])));
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('bar'), isTrue);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['foo', 'bar'].toSet());
}
test_merge_shows_hides() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo', 'bar']))
.merge(new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(hides: ['bar', 'baz'])));
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['foo'].toSet());
}
test_merge_shows_identity() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo', 'bar']))
.merge(NameFilter.identity);
expect(filter.accepts('foo'), isTrue);
expect(filter.accepts('bar'), isTrue);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['foo', 'bar'].toSet());
}
test_merge_shows_shows() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo', 'bar']))
.merge(new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['bar', 'baz'])));
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isTrue);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, ['bar'].toSet());
}
test_merge_shows_shows_emptyResult() {
NameFilter filter = new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['foo']))
.merge(new NameFilter.forUnlinkedCombinator(
new UnlinkedCombinatorBuilder(shows: ['bar'])));
expect(filter.accepts('foo'), isFalse);
expect(filter.accepts('bar'), isFalse);
expect(filter.accepts('baz'), isFalse);
expect(filter.hiddenNames, isNull);
expect(filter.shownNames, isNotNull);
expect(filter.shownNames, isEmpty);
}
}