test/java/nio/file/Files/probeContentType/Basic.java
Print this page
rev 12244 : 8129632: (fs) Files.probeContentType returns null on Mac OS X
Summary: Append a Uniform Type Identifier-based FileType Detector for Mac OS X
Reviewed-by: XXX
*** 1,7 ****
/*
! * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 20,43 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
! * @bug 4313887
* @summary Unit test for probeContentType method
* @library ../..
* @build Basic SimpleFileTypeDetector
* @run main/othervm Basic
*/
import java.nio.file.*;
import java.io.*;
/**
! * Uses Files.probeContentType to probe html file and custom file type.
*/
-
public class Basic {
static Path createHtmlFile() throws IOException {
Path file = Files.createTempFile("foo", ".html");
try (OutputStream out = Files.newOutputStream(file)) {
--- 20,43 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
! * @bug 4313887 8129632
* @summary Unit test for probeContentType method
* @library ../..
* @build Basic SimpleFileTypeDetector
* @run main/othervm Basic
*/
import java.nio.file.*;
import java.io.*;
/**
! * Uses Files.probeContentType to probe html file, custom file type, and minimal
! * set of file extension to content type mappings.
*/
public class Basic {
static Path createHtmlFile() throws IOException {
Path file = Files.createTempFile("foo", ".html");
try (OutputStream out = Files.newOutputStream(file)) {
*** 49,58 ****
--- 49,91 ----
static Path createGrapeFile() throws IOException {
return Files.createTempFile("red", ".grape");
}
+ static void checkContentTypes(String[] extensions, String[] expectedTypes)
+ throws IOException {
+ if (extensions.length != expectedTypes.length) {
+ throw new IllegalArgumentException("Parameter array lengths differ");
+ }
+
+ int failures = 0;
+ for (int i = 0; i < extensions.length; i++) {
+ String extension = extensions[i];
+ Path file = Files.createTempFile("foo", "." + extension);
+ try {
+ String type = Files.probeContentType(file);
+ if (type == null) {
+ System.err.println("Content type of " + extension
+ + " cannot be determined");
+ failures++;
+ } else {
+ if (!type.equals(expectedTypes[i])) {
+ System.err.println("Content type: " + type
+ + "; expected: " + expectedTypes[i]);
+ failures++;
+ }
+ }
+ } finally {
+ file.toFile().delete();
+ }
+ }
+
+ if (failures > 0) {
+ throw new RuntimeException("Test failed!");
+ }
+ }
+
public static void main(String[] args) throws IOException {
// exercise default file type detector
Path file = createHtmlFile();
try {
*** 77,83 ****
--- 110,137 ----
throw new RuntimeException("Unexpected type: " + type);
} finally {
Files.delete(file);
}
+ // Verify that common file extensions are mapped to the correct content
+ // types taking into account OS-dependent minimum state.
+ String[] extensions;
+ String[] expectedTypes;
+ if (System.getProperty("os.name").toLowerCase().contains("windows")) {
+ extensions = new String[] {
+ "jpg", "png"
+ };
+ expectedTypes = new String[] {
+ "image/jpeg", "image/png"
+ };
+ } else {
+ extensions = new String[] {
+ "jpg", "mp3", "mp4", "pdf", "png"
+ };
+ expectedTypes = new String[] {
+ "image/jpeg", "audio/mpeg", "video/mp4", "application/pdf",
+ "image/png"
+ };
+ }
+ checkContentTypes (extensions, expectedTypes);
}
}