1a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin/*
2a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * Copyright (C) 2014 The Android Open Source Project
3a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin *
4a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * Licensed under the Apache License, Version 2.0 (the "License");
5a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * you may not use this file except in compliance with the License.
6a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * You may obtain a copy of the License at
7a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin *
8a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin *      http://www.apache.org/licenses/LICENSE-2.0
9a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin *
10a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * Unless required by applicable law or agreed to in writing, software
11a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * distributed under the License is distributed on an "AS IS" BASIS,
12a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * See the License for the specific language governing permissions and
14a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * limitations under the License.
15a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin */
16a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffinpackage libcore.java.util;
17a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin
18a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffinimport junit.framework.TestCase;
19a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin
20a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin/**
21a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * Ensures that resources used within a test are cleaned up; will detect problems with tests and
22a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin * also with runtime.
23a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin */
24a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffinpublic abstract class AbstractResourceLeakageDetectorTestCase extends TestCase {
25a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  /**
26a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin   * The leakage detector.
27a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin   */
28a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  private ResourceLeakageDetector detector;
29a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin
30a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  @Override
31a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  protected void setUp() throws Exception {
32a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin    detector = ResourceLeakageDetector.newDetector();
33a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  }
34a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin
35a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  @Override
36a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  protected void tearDown() throws Exception {
37a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin    // If available check for resource leakage. At this point it is impossible to determine
38a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin    // whether the test has thrown an exception. If it has then the exception thrown by this
39a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin    // could hide that test failure; it largely depends on the test runner.
40a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin    if (detector != null) {
41a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin      detector.checkForLeaks();
42a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin    }
43a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin  }
44a6f350c645dbb66d68cc2b03afb8f2eeaa88fbbaPaul Duffin}
45