package osm.surveyor.matchtime;
import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import static org.hamcrest.CoreMatchers.is;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author yuu
*/
public class RestampTest {
public RestampTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
dirPath = "./src/test/data/images";
}
@After
public void tearDown() {
}
String dirPath;
@Test
public void testMain() {
String[] ans = {
"2019-09-01 16:26:51 JST",
"2019-09-01 16:26:56 JST",
"2019-09-01 16:27:01 JST",
"2019-09-01 16:27:06 JST",
"2019-09-01 16:27:11 JST",
"2019-09-01 16:27:16 JST",
"2019-09-01 16:27:21 JST",
"2019-09-01 16:27:26 JST",
"2019-09-01 16:27:31 JST",
};
try {
String[] argv = new String[]{
dirPath,
"00001.jpg",
"2019-09-01 16:26:51 JST",
"00003.jpg",
"2019-09-01 16:27:01 JST"
};
Restamp.main(argv);
check(new File(dirPath), ans);
}
catch (Exception e) {
fail();
}
}
@Test
public void testMain_2() {
String[] ans = {
"2019-09-02 16:26:53 JST", // 0.0 sec
"2019-09-02 16:26:56 JST", // 3.0 sec
"2019-09-02 16:26:58 JST", // 2.0 sec
"2019-09-02 16:27:01 JST", // 3.0 sec
"2019-09-02 16:27:03 JST", // 2.0 sec
"2019-09-02 16:27:06 JST", // 3.0 sec
"2019-09-02 16:27:08 JST", // 2.0 sec
"2019-09-02 16:27:11 JST", // 3.0 sec
"2019-09-02 16:27:13 JST", // 2.0 sec
};
try {
String[] argv = new String[]{
dirPath,
"00002.jpg",
"2019-09-02 16:26:56 JST",
"00004.jpg",
"2019-09-02 16:27:01 JST"
};
Restamp.main(argv);
check(new File(dirPath), ans);
}
catch (Exception e) {
fail();
}
}
@Test
public void testMain_3() {
String[] ans = {
"2019-09-03 16:26:53 JST", // 0.0
"2019-09-03 16:26:55 JST", // 2.0
"2019-09-03 16:26:58 JST", // 3.0
"2019-09-03 16:27:00 JST", // 2.0
"2019-09-03 16:27:03 JST", // 3.0
"2019-09-03 16:27:05 JST", // 2.0
"2019-09-03 16:27:08 JST", // 3.0
"2019-09-03 16:27:10 JST", // 2.0
"2019-09-03 16:27:13 JST", // 3.0
};
try {
String[] argv = new String[]{
dirPath,
"00001.jpg",
"2019-09-03 16:26:53 JST",
"00003.jpg",
"2019-09-03 16:26:58 JST"
};
Restamp.main(argv);
check(new File(dirPath), ans);
}
catch (Exception e) {
fail();
}
}
@Test
public void testMain_4() {
String[] ans = {
"2019-09-04 16:26:53 JST", // 0.0
"2019-09-04 16:26:55 JST", // 2.0
"2019-09-04 16:26:58 JST", // 3.0
"2019-09-04 16:27:00 JST", // 2.0
"2019-09-04 16:27:03 JST", // 3.0
"2019-09-04 16:27:05 JST", // 2.0
"2019-09-04 16:27:08 JST", // 3.0
"2019-09-04 16:27:10 JST", // 2.0
"2019-09-04 16:27:13 JST", // 3.0
};
try {
String[] argv = new String[]{
dirPath,
"00003.jpg",
"2019-09-04 16:26:58 JST",
"00005.jpg",
"2019-09-04 16:27:03 JST"
};
Restamp.main(argv);
check(new File(dirPath), ans);
}
catch (Exception e) {
fail();
}
}
void check(File imgDir, String[] ans) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
File[] files = imgDir.listFiles();
java.util.Arrays.sort(files, (File file1, File file2) -> file1.getName().compareTo(file2.getName()));
int i = 0;
for (File jpgFile : files) {
long msec = jpgFile.lastModified();
String lastModifiedStr = df.format(new Date(msec));
assertThat(lastModifiedStr, is(ans[i]));
i++;
}
}
}