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