diff --git a/pom.xml b/pom.xml
index 02b1de6..c9136ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,12 @@
1.0-alpha1
jar
+
+ commons-codec
+ commons-codec
+ 1.10
+ test
+
UTF-8
diff --git a/src/test/java/osm/surveyor/matchtime/RestampTest.java b/src/test/java/osm/surveyor/matchtime/RestampTest.java
index ebe24c7..c64ff70 100644
--- a/src/test/java/osm/surveyor/matchtime/RestampTest.java
+++ b/src/test/java/osm/surveyor/matchtime/RestampTest.java
@@ -1,6 +1,8 @@
package osm.surveyor.matchtime;
-import java.io.File;
+import java.util.*;
+import java.io.*;
+import java.nio.file.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -10,6 +12,7 @@
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.apache.commons.codec.digest.DigestUtils;
import static org.junit.Assert.*;
/**
@@ -33,11 +36,38 @@
public void setUp() {
dirPath = "./src/test/data/images";
outPath = "./out";
+ Path dir = Paths.get(outPath);
+ if (Files.exists(dir) && Files.isDirectory(dir) && Files.isWritable(dir)) {
+ try {
+ Files.delete(dir);
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
}
@After
public void tearDown() {
-
+ try {
+ Path dir = Paths.get(outPath);
+ if (Files.exists(dir) && Files.isDirectory(dir) && Files.isWritable(dir)) {
+ Files.list(dir).forEach(f -> delFile(f));
+ Files.delete(dir);
+ }
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void delFile(Path p) {
+ try {
+ Files.delete(p);
+ }
+ catch(IOException e) {
+ e.printStackTrace();
+ };
}
String dirPath;
@@ -63,10 +93,13 @@
"00001.jpg",
"2019-09-01 16:26:51 JST",
"00003.jpg",
- "2019-09-01 16:27:01 JST"
+ "2019-09-01 16:27:01 JST",
+ outPath
};
+ HashMap before = getMd5(Paths.get(dirPath));
Restamp.main(argv);
- check(new File(dirPath), ans);
+ check(new File(outPath), ans);
+ checkUnchanged(before, Paths.get(dirPath));
}
catch (Exception e) {
fail();
@@ -209,7 +242,47 @@
assertThat(lastModifiedStr, is(ans[i]));
i++;
}
-
+ }
+
+ void checkUnchanged(HashMap map, Path dir) {
+ assertThat(Files.isDirectory(dir), is(true));
+ try {
+ File[] files = dir.toFile().listFiles();
+ assertThat(files.length, is(map.size()));
+
+ for (String key : map.keySet()) {
+ File sfile = map.get(key);
+ Path ofile = Paths.get(dir.toString(), sfile.getName());
+ assertNotNull(ofile);
+
+ FileInputStream fis = new FileInputStream(ofile.toFile());
+ String md5 = DigestUtils.md5Hex(fis);
+ assertThat(key, is(md5));
+ }
+ }
+ catch (Exception e) {
+ fail();
+ }
+ }
+
+ /**
+ * フォルダ内のファイルとファイルのMD5リストを作成
+ * @param dir
+ * @return
+ */
+ HashMap getMd5(Path dir) {
+ HashMap map = new HashMap<>();
+ try {
+ File[] files = dir.toFile().listFiles();
+ for (File f : files) {
+ FileInputStream fis = new FileInputStream(f);
+ map.put(DigestUtils.md5Hex(fis), f);
+ }
+ }
+ catch (Exception e) {
+ fail();
+ }
+ return map;
}
}