blob: 9facb62028943d532211ea3958ba50767ed092ea [file] [log] [blame]
// Copyright (c) 2019, 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:nnbd_migration/src/utilities/scoped_set.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(ScopedSetTest);
});
}
@reflectiveTest
class ScopedSetTest {
test_clearEachScope() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.pushScope(copyCurrent: true);
set.clearEachScope();
expect(set.isInScope(0), false);
set.popScope();
expect(set.isInScope(0), false);
}
test_doScoped_actionPerformed() {
final set = ScopedSet<int>();
bool ran = false;
set.doScoped(action: () {
ran = true;
});
expect(ran, true);
}
test_doScoped_actionThrows() {
final set = ScopedSet<int>();
bool threw;
try {
set.doScoped(action: () {
set.add(0);
throw '';
});
} catch (_) {
threw = true;
}
expect(threw, true);
expect(set.isInScope(0), false);
}
test_doScoped_copyCurrent() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.doScoped(
copyCurrent: true,
action: () {
set.add(1);
expect(set.isInScope(0), true);
expect(set.isInScope(1), true);
});
expect(set.isInScope(0), true);
expect(set.isInScope(1), false);
}
test_doScoped_elements() {
final set = ScopedSet<int>();
set.pushScope();
set.doScoped(
elements: [0, 1],
action: () {
expect(set.isInScope(0), true);
expect(set.isInScope(1), true);
});
expect(set.isInScope(0), false);
expect(set.isInScope(1), false);
}
test_doScoped_newScope() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.doScoped(action: () {
set.add(1);
expect(set.isInScope(0), false);
expect(set.isInScope(1), true);
});
expect(set.isInScope(0), true);
expect(set.isInScope(1), false);
}
test_initiallyEmpty() {
final set = ScopedSet<int>();
expect(set.isInScope(0), false);
expect(set.isInScope(1), false);
}
test_popScope_copyCurrent() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.pushScope(copyCurrent: true);
set.popScope();
expect(set.isInScope(0), true);
}
test_popScope_element() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.pushScope();
set.popScope();
expect(set.isInScope(0), true);
}
test_popScope_empty() {
final set = ScopedSet<int>();
set.pushScope();
set.pushScope();
set.add(0);
set.popScope();
expect(set.isInScope(0), false);
}
test_pushScope_add() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
expect(set.isInScope(0), true);
}
test_pushScope_copyCurrent() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.pushScope(copyCurrent: true);
expect(set.isInScope(0), true);
}
test_pushScope_empty() {
final set = ScopedSet<int>();
set.pushScope();
expect(set.isInScope(0), false);
}
test_pushScope_empty2() {
final set = ScopedSet<int>();
set.pushScope();
set.add(0);
set.pushScope();
expect(set.isInScope(0), false);
}
test_pushScope_withElements() {
final set = ScopedSet<int>();
set.pushScope(elements: [0, 1]);
expect(set.isInScope(0), true);
expect(set.isInScope(1), true);
}
test_removeFromAllScopes() {
final set = ScopedSet<int>();
set.pushScope(elements: [0, 1]);
set.pushScope(copyCurrent: true);
set.removeFromAllScopes(0);
expect(set.isInScope(0), false);
expect(set.isInScope(1), true);
set.popScope();
expect(set.isInScope(0), false);
expect(set.isInScope(1), true);
}
}