package cgeo.geocaching.files;
import static org.assertj.core.api.Java6Assertions.assertThat;
import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase;
import cgeo.geocaching.test.R;
import android.support.annotation.NonNull;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.RawRes;
public class FileTypeDetectorTest extends AbstractResourceInstrumentationTestCase {
private static class FileContentResolver extends ContentResolver {
FileContentResolver(final Context context) {
super(context);
}
}
public void testUnknown() throws Exception {
assertFileType(R.raw.gc2cjpf_html, FileType.UNKNOWN);
assertFileType(R.raw.map1_z13, FileType.UNKNOWN);
}
public void testLoc() throws Exception {
assertFileType(R.raw.gc1bkp3_loc, FileType.LOC);
assertFileType(R.raw.oc5952_loc, FileType.LOC);
assertFileType(R.raw.waymarking_loc, FileType.LOC);
}
public void testGpx() throws Exception {
assertFileType(R.raw.gc1bkp3_gpx100, FileType.GPX);
assertFileType(R.raw.gc1bkp3_gpx101, FileType.GPX);
assertFileType(R.raw.oc5952_gpx, FileType.GPX);
assertFileType(R.raw.renamed_waypoints_wpts, FileType.GPX);
assertFileType(R.raw.waymarking_gpx, FileType.GPX);
}
public void testZip() throws Exception {
assertFileType(R.raw.pq_error, FileType.ZIP);
assertFileType(R.raw.pq7545915, FileType.ZIP);
}
private void assertFileType(@RawRes final int resourceId, @NonNull final FileType fileType) {
final Uri resourceURI = getResourceURI(resourceId);
final FileContentResolver contentResolver = new FileContentResolver(getInstrumentation().getContext());
assertThat(new FileTypeDetector(resourceURI, contentResolver).getFileType()).isEqualTo(fileType);
}
}