diff --git a/pom.xml b/pom.xml
index 45070d1..a44bf94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,21 @@
HEAD
+
+
+ MIT License
+ http://www.opensource.org/licenses/mit-license.php
+
+
+
+
+ Yuu Hayashi
+ hayashi.yuu@gmail.com
+ surveyor
+ http://surveyor.mydns.jp/
+
+
+
UTF-8
1.8
@@ -38,14 +53,6 @@
-
diff --git a/src/main/java/osm/surveyor/matchtime/AppParameters.java b/src/main/java/osm/surveyor/matchtime/AppParameters.java
index e4ef115..a96d284 100644
--- a/src/main/java/osm/surveyor/matchtime/AppParameters.java
+++ b/src/main/java/osm/surveyor/matchtime/AppParameters.java
@@ -9,7 +9,7 @@
@SuppressWarnings("serial")
public class AppParameters extends Properties {
- static final String FILE_PATH = "AdjustTime.ini";
+ static final String FILE_PATH = "ReStamp.properties";
// GPX: ファイル更新時刻 yyyy:MM:dd HH:mm:ss
public static String IMG_TIME = "IMG.TIME";
@@ -92,7 +92,7 @@
if (update) {
// ・ファイルがなければ新たに作る
// ・項目が足りない時は書き足す。
- //this.store(new FileOutputStream(this.file), "defuilt settings");
+ this.store(new FileOutputStream(this.file), "defuilt settings");
}
}
diff --git a/src/test/java/osm/surveyor/matchtime/AppParametersTest.java b/src/test/java/osm/surveyor/matchtime/AppParametersTest.java
new file mode 100644
index 0000000..6ff0a01
--- /dev/null
+++ b/src/test/java/osm/surveyor/matchtime/AppParametersTest.java
@@ -0,0 +1,191 @@
+package osm.surveyor.matchtime;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.experimental.runners.*;
+
+@RunWith(Enclosed.class)
+public class AppParametersTest {
+ static final String DEFUALT_FILE_NAME = "ReStamp.properties";
+
+ public static class 定義ファイルが存在しない場合 {
+
+ @Before
+ public void setUp() throws Exception {
+ delTestData(DEFUALT_FILE_NAME);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ delTestData(DEFUALT_FILE_NAME);
+ delTestData("ReStamp.nosource.properties");
+ delTestData("ReStamp.xx.properties");
+ }
+
+
+ @Test
+ public void 引数なしで起動されたとき() {
+ // デフォルトプロパティファイルが適用されること
+ try {
+ AppParameters params = new AppParameters();
+ String valueStr = params.getProperty(AppParameters.IMG_SOURCE_FOLDER);
+ assertNotNull(valueStr);
+ File sourceDir = new File(valueStr);
+ String sourcePath = sourceDir.getAbsolutePath();
+ File cDir = new File(".");
+ String cPath = cDir.getAbsolutePath();
+ assertEquals(sourcePath, cPath);
+ }
+ catch (IOException e) {
+ fail("Exceptionが発生した。");
+ }
+ }
+
+ @Test
+ public void IMG_SOURCE_FOLDERが定義されていない時() {
+ try {
+ // デフォルトに カレントディレクトリが戻ること
+ AppParameters params = new AppParameters("target/test-classes/ReStamp.nosource.properties");
+ String valueStr = params.getProperty(AppParameters.IMG_SOURCE_FOLDER);
+ assertNotNull(valueStr);
+ File sourceDir = new File(valueStr);
+ String sourcePath = sourceDir.getAbsolutePath();
+ File cDir = new File(".");
+ String cPath = cDir.getAbsolutePath();
+ assertEquals(sourcePath, cPath);
+ }
+ catch (IOException e) {
+ fail("Exceptionが発生した。");
+ }
+ }
+
+ @Test
+ public void propertyファイルが存在しないとき() {
+ try {
+ // デフォルトプロパティファイルが適用されること
+ AppParameters params = new AppParameters("target/test-classes/ReStamp.xx.properties");
+ String valueStr = params.getProperty(AppParameters.IMG_SOURCE_FOLDER);
+ assertNotNull(valueStr);
+ File sourceDir = new File(valueStr);
+ String sourcePath = sourceDir.getAbsolutePath();
+ File cDir = new File(".");
+ String cPath = cDir.getAbsolutePath();
+ assertEquals(sourcePath, cPath);
+ }
+ catch (IOException e) {
+ fail("Exceptionが発生した。");
+ }
+ }
+
+ @Test
+ public void propertyが指定されたとき() {
+ // デフォルトプロパティファイルが適用されること
+ try {
+ Properties prop = new Properties();
+ AppParameters params = new AppParameters(prop);
+ String valueStr = params.getProperty(AppParameters.IMG_SOURCE_FOLDER);
+ assertNotNull(valueStr);
+ File sourceDir = new File(valueStr);
+ String sourcePath = sourceDir.getAbsolutePath();
+ File cDir = new File(".");
+ String cPath = cDir.getAbsolutePath();
+ assertEquals(sourcePath, cPath);
+ }
+ catch (IOException e) {
+ fail("Exceptionが発生した。");
+ }
+ }
+ }
+
+ public static class 空の定義ファイルが指定された場合 {
+
+ @Before
+ public void setUp() throws Exception {
+ delTestData(DEFUALT_FILE_NAME);
+ setupTestData("ReStamp.nosource.properties", "ReStamp.properties");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ delTestData(DEFUALT_FILE_NAME);
+ }
+
+ @Test
+ public void IMG_SOURCE_FOLDERが定義されていない時() {
+ try {
+ // デフォルトに カレントディレクトリが戻ること
+ AppParameters params = new AppParameters("target/test-classes/ReStamp.properties");
+ String valueStr = params.getProperty(AppParameters.IMG_SOURCE_FOLDER);
+ assertNotNull(valueStr);
+ File sourceDir = new File(valueStr);
+ String sourcePath = sourceDir.getAbsolutePath();
+ File cDir = new File(".");
+ String cPath = cDir.getAbsolutePath();
+ assertEquals(sourcePath, cPath);
+
+ // 書き換える
+ params.setProperty(AppParameters.IMG_SOURCE_FOLDER, "xxx");
+ params.store();
+ }
+ catch (IOException e) {
+ fail("Exceptionが発生した。");
+ }
+ try {
+ // デフォルトに カレントディレクトリが戻ること
+ Properties prop = new Properties();
+ File f = new File("target/test-classes/ReStamp.properties");
+ prop.load(new FileInputStream(f));
+
+ String valueStr = prop.getProperty(AppParameters.IMG_SOURCE_FOLDER);
+ assertNotNull(valueStr);
+ assertEquals(valueStr, "xxx");
+ }
+ catch (IOException e) {
+ fail("Exceptionが発生した。");
+ }
+ }
+ }
+
+ static void delTestData(String filename) {
+ File ddir = new File("target/test-classes/");
+ File iniFile = new File(ddir, filename);
+ if (iniFile.exists()) {
+ iniFile.delete();
+ }
+ ddir = new File(".");
+ iniFile = new File(ddir, filename);
+ if (iniFile.exists()) {
+ iniFile.delete();
+ }
+ }
+
+ static void setupTestData(String sfilename, String dfilename) throws IOException {
+ File ddir = new File("target/test-classes/");
+ File sdir = new File("target/test-classes/props/");
+ File testFile = new File(sdir, sfilename);
+ FileInputStream inStream = new FileInputStream(testFile);
+ FileOutputStream outStream = new FileOutputStream(new File(ddir, dfilename));
+ FileChannel inChannel = inStream.getChannel();
+ FileChannel outChannel = outStream.getChannel();
+ try {
+ inChannel.transferTo(0, inChannel.size(),outChannel);
+ }
+ finally {
+ if (inChannel != null) inChannel.close();
+ if (outChannel != null) outChannel.close();
+ inStream.close();
+ outStream.close();
+ }
+ }
+}
diff --git a/src/test/resources/props/ReStamp.nosource.properties b/src/test/resources/props/ReStamp.nosource.properties
new file mode 100644
index 0000000..26cf283
--- /dev/null
+++ b/src/test/resources/props/ReStamp.nosource.properties
@@ -0,0 +1,2 @@
+#defuilt settings
+#Tue May 16 15:59:01 JST 2017