forked from upstream-mirrors/OpenTracks
Add tests for the TempFileCleaner.
This commit is contained in:
@@ -25,7 +25,14 @@ import java.io.File;
|
|||||||
*/
|
*/
|
||||||
public class TempFileCleaner {
|
public class TempFileCleaner {
|
||||||
|
|
||||||
|
private long currentTimeMillis;
|
||||||
|
|
||||||
public TempFileCleaner() {
|
public TempFileCleaner() {
|
||||||
|
currentTimeMillis = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TempFileCleaner(long time) {
|
||||||
|
currentTimeMillis = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clean() {
|
public void clean() {
|
||||||
@@ -47,17 +54,20 @@ public class TempFileCleaner {
|
|||||||
+ "tmp"));
|
+ "tmp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cleanTmpDirectory(File dir) {
|
// VisibleForTesting
|
||||||
|
protected int cleanTmpDirectory(File dir) {
|
||||||
if (!dir.exists()) {
|
if (!dir.exists()) {
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
File[] list = dir.listFiles();
|
File[] list = dir.listFiles();
|
||||||
long now = System.currentTimeMillis();
|
int count = 0;
|
||||||
long oldest = now - 1000 * 3600;
|
long oldest = currentTimeMillis - 1000 * 3600;
|
||||||
for (File f : list) {
|
for (File f : list) {
|
||||||
if (f.lastModified() < oldest) {
|
if (f.lastModified() < oldest) {
|
||||||
f.delete();
|
f.delete();
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010 Google Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
* the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations under
|
||||||
|
* the License.
|
||||||
|
*/
|
||||||
|
package com.google.android.apps.mytracks.io;
|
||||||
|
|
||||||
|
import static com.google.android.testing.mocking.AndroidMock.expect;
|
||||||
|
import com.google.android.testing.mocking.AndroidMock;
|
||||||
|
import com.google.android.testing.mocking.UsesMocks;
|
||||||
|
|
||||||
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Sandor Dornbush
|
||||||
|
*/
|
||||||
|
public class TempFileCleanerTest extends AndroidTestCase {
|
||||||
|
|
||||||
|
@UsesMocks({
|
||||||
|
File.class,
|
||||||
|
})
|
||||||
|
|
||||||
|
public void test_noDir() {
|
||||||
|
File dir = AndroidMock.createMock(File.class, "/no_file");
|
||||||
|
TempFileCleaner cleaner = new TempFileCleaner();
|
||||||
|
expect(dir.exists()).andStubReturn(false);
|
||||||
|
AndroidMock.replay(dir);
|
||||||
|
assertEquals(0, cleaner.cleanTmpDirectory(dir));
|
||||||
|
AndroidMock.verify(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void test_emptyDir() {
|
||||||
|
File dir = AndroidMock.createMock(File.class, "/no_file");
|
||||||
|
TempFileCleaner cleaner = new TempFileCleaner();
|
||||||
|
expect(dir.exists()).andStubReturn(true);
|
||||||
|
expect(dir.listFiles()).andStubReturn(new File[0]);
|
||||||
|
AndroidMock.replay(dir);
|
||||||
|
assertEquals(0, cleaner.cleanTmpDirectory(dir));
|
||||||
|
AndroidMock.verify(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void test_newFile() {
|
||||||
|
File dir = AndroidMock.createMock(File.class, "/no_file");
|
||||||
|
long now = 100000000;
|
||||||
|
TempFileCleaner cleaner = new TempFileCleaner(now);
|
||||||
|
expect(dir.exists()).andStubReturn(true);
|
||||||
|
File file = AndroidMock.createMock(File.class, "/no_file/foo");
|
||||||
|
expect(file.lastModified()).andStubReturn(now);
|
||||||
|
File[] list = { file };
|
||||||
|
expect(dir.listFiles()).andStubReturn(list);
|
||||||
|
|
||||||
|
AndroidMock.replay(dir, file);
|
||||||
|
assertEquals(0, cleaner.cleanTmpDirectory(dir));
|
||||||
|
AndroidMock.verify(dir, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void test_oldFile() {
|
||||||
|
File dir = AndroidMock.createMock(File.class, "/no_file");
|
||||||
|
long now = 100000000;
|
||||||
|
TempFileCleaner cleaner = new TempFileCleaner(now);
|
||||||
|
expect(dir.exists()).andStubReturn(true);
|
||||||
|
File file = AndroidMock.createMock(File.class, "/no_file/foo");
|
||||||
|
expect(file.lastModified()).andStubReturn(now - 3600001);
|
||||||
|
expect(file.delete()).andStubReturn(true);
|
||||||
|
File[] list = { file };
|
||||||
|
expect(dir.listFiles()).andStubReturn(list);
|
||||||
|
|
||||||
|
AndroidMock.replay(dir, file);
|
||||||
|
assertEquals(1, cleaner.cleanTmpDirectory(dir));
|
||||||
|
AndroidMock.verify(dir, file);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user