test passed: MAGVARが設定されているかどうかのチェックを追加
1 parent 00d3c3d commit 7c4157c3007a64608ec6ef98d1f08a33406ad587
@haya4 haya4 authored on 4 May 2020
Showing 5 changed files
View
8
src/main/java/osm/jp/gpx/ImportPicture.java
// 出力ファイル
// AppParameters.IMG_OUTPUT に置き換え
if (params.isImgOutput()) {
File outDir = new File(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));
if (!outDir.exists()) {
// 出力ディレクトリが存在しないときは作成する
outDir.mkdir();
}
else if (outDir.isFile()) {
// 出力ディレクトリがFILEのときはERROR
throw new FileNotFoundException(String.format("OUTPUT directory '%s' is a File!", outDir.getAbsolutePath()));
}
outDir = new File(outDir, imgFolder.getImgDir().getName());
imgFolder.setOutDir(outDir);
}
 
View
102
src/test/java/osm/jp/gpx/Expecter.java
package osm.jp.gpx;
 
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
 
import java.io.File;
import java.util.List;
 
import org.apache.commons.imaging.Imaging;
import org.apache.commons.imaging.common.ImageMetadata;
import org.apache.commons.imaging.common.ImageMetadata.ImageMetadataItem;
import org.apache.commons.imaging.common.RationalNumber;
import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata;
import org.apache.commons.imaging.formats.tiff.TiffImageMetadata;
import org.apache.commons.imaging.formats.tiff.TiffImageMetadata.GPSInfo;
import org.apache.commons.imaging.formats.tiff.constants.ExifTagConstants;
import org.apache.commons.imaging.formats.tiff.constants.GpsTagConstants;
import org.apache.commons.imaging.formats.tiff.taginfos.TagInfoRational;
import org.apache.commons.imaging.formats.tiff.write.TiffOutputDirectory;
import org.apache.commons.imaging.formats.tiff.write.TiffOutputField;
import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet;
 
public class Expecter {
String value;
boolean expect;
this.lonD = lonD;
this.magvar = magvar;
}
 
public static String comparePosition(double b) {
return String.format("%.4f", b);
}
 
public static void check(Fixture dataset) {
Expecter[] es = dataset.expecters;
AppParameters params;
try {
params = new AppParameters(dataset.iniFilePath);
File outDir = new File(params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));
for (Expecter e : es) {
File file = new File(outDir, e.value);
System.out.println("[JUnit.debug] assert file='"+ file.getAbsolutePath() +"'");
assertThat(file.exists(), is(e.expect));
if (e.timeStr != null) {
// JPEG メタデータが存在すること
ImageMetadata meta = Imaging.getMetadata(file);
 
// メタデータは インスタンスJpegImageMetadata であること
assertThat((meta instanceof JpegImageMetadata), is(true));
JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;
assertNotNull(jpegMetadata);
// EXIFデータが存在すること
TiffImageMetadata exif = jpegMetadata.getExif();
assertNotNull(exif);
// EXIF-TIME が正しく設定されていること
String exifTime = ImportPicture.toEXIFString(ImportPicture.toEXIFDate(exif.getFieldValue(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL)[0]));
System.out.println("[debug] exifTime = '"+ exifTime +"' <--> '" + e.timeStr + "'");
assertThat(exifTime, is(e.timeStr));
// LAT,LON
GPSInfo gpsInfo = exif.getGPS();
if (e.latD != 90.0D) {
assertThat(Expecter.comparePosition(gpsInfo.getLatitudeAsDegreesNorth()), is(Expecter.comparePosition(e.latD)));
}
if (e.lonD != 180.0D) {
assertThat(Expecter.comparePosition(gpsInfo.getLongitudeAsDegreesEast()), is(Expecter.comparePosition(e.lonD)));
}
// ELE
//RationalNumber[] ele = (RationalNumber[]) exif.getFieldValue(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);
// MAGVAR
if (e.magvar) {
boolean ismagvar = false;
List<? extends ImageMetadataItem> dirs = exif.getDirectories();
for (ImageMetadataItem dir : dirs) {
if (dir instanceof TiffImageMetadata.Directory) {
List<? extends ImageMetadataItem> items = ((TiffImageMetadata.Directory)dir).getItems();
for (ImageMetadataItem item : items) {
if (item instanceof TiffImageMetadata.TiffMetadataItem) {
String str = item.toString();
assertNotNull(str);
TiffImageMetadata.TiffMetadataItem tiffitem = (TiffImageMetadata.TiffMetadataItem)item;
String name = GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION.name;
if (tiffitem.getKeyword() == name) {
str = tiffitem.getText();
assertNotNull(str);
ismagvar = true; // MAGVARが設定されている
}
}
}
}
}
if (!ismagvar) {
fail("MAGVARが設定されていない");
}
}
// SPEED
}
}
} catch (Exception e1) {
fail("予期しない例外: "+ e1.toString());
}
}
}
View
src/test/java/osm/jp/gpx/Fixture.java
View
src/test/java/osm/jp/gpx/ImportPictureTest.java
View
src/test/java/osm/jp/gpx/ImportPictureUnitTest.java 0 → 100644