blob: 1179a728cef5a3705fbf8f587481bdcc72e2f19c [file] [log] [blame]
// Copyright (c) 2023, 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:flutter/foundation.dart';
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
import 'package:test/test.dart';
class _TrackedClass {
_TrackedClass() {
FlutterMemoryAllocations.instance.dispatchObjectCreated(
library: 'library',
className: '_TrackedClass',
object: this,
);
}
void dispose() {
FlutterMemoryAllocations.instance.dispatchObjectDisposed(object: this);
}
}
void main() {
test('dispatchesMemoryEvents success sync', () async {
await expectLater(
await memoryEvents(() => _TrackedClass().dispose(), _TrackedClass),
areCreateAndDispose,
);
});
test('dispatchesMemoryEvents failure sync', () async {
try {
await expectLater(
await memoryEvents(() {}, _TrackedClass),
areCreateAndDispose,
);
} catch (e) {
expect(e, isA<TestFailure>());
}
});
test('dispatchesMemoryEvents success async', () async {
await expectLater(
await memoryEvents(() async => _TrackedClass().dispose(), _TrackedClass),
areCreateAndDispose,
);
});
test('dispatchesMemoryEvents failure async', () async {
try {
await expectLater(
await memoryEvents(() async {}, _TrackedClass),
areCreateAndDispose,
);
} catch (e) {
expect(e, isA<TestFailure>());
}
});
}