1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.tika.detect;
18
19 import java.io.IOException;
20 import java.util.HashMap;
21 import java.util.Map;
22 import java.util.regex.Pattern;
23
24 import org.apache.tika.metadata.Metadata;
25 import org.apache.tika.mime.MediaType;
26
27 import junit.framework.TestCase;
28
29
30
31
32 public class NameDetectorTest extends TestCase {
33
34 private Detector detector;
35
36 protected void setUp() {
37 Map<Pattern, MediaType> patterns = new HashMap<Pattern, MediaType>();
38 patterns.put(
39 Pattern.compile(".*\\.txt", Pattern.CASE_INSENSITIVE),
40 MediaType.TEXT_PLAIN);
41 patterns.put(Pattern.compile("README"), MediaType.TEXT_PLAIN);
42 detector = new NameDetector(patterns);
43 }
44
45 public void testDetect() {
46 assertDetect(MediaType.TEXT_PLAIN, "text.txt");
47 assertDetect(MediaType.TEXT_PLAIN, "text.txt ");
48 assertDetect(MediaType.TEXT_PLAIN, "text.txt\n");
49 assertDetect(MediaType.TEXT_PLAIN, "text.txt?a=b");
50 assertDetect(MediaType.TEXT_PLAIN, "text.txt#abc");
51 assertDetect(MediaType.TEXT_PLAIN, "text%2Etxt");
52 assertDetect(MediaType.TEXT_PLAIN, "text.TXT");
53 assertDetect(MediaType.OCTET_STREAM, "text.txt.gz");
54
55 assertDetect(MediaType.TEXT_PLAIN, "README");
56 assertDetect(MediaType.TEXT_PLAIN, " README ");
57 assertDetect(MediaType.TEXT_PLAIN, "\tREADME\n");
58 assertDetect(MediaType.TEXT_PLAIN, "/a/README");
59 assertDetect(MediaType.TEXT_PLAIN, "\\b\\README");
60 assertDetect(MediaType.OCTET_STREAM, "ReadMe");
61 assertDetect(MediaType.OCTET_STREAM, "README.NOW");
62
63
64 assertDetect(
65 MediaType.TEXT_PLAIN,
66 " See http://www.example.com:1234/README.txt?a=b#c \n");
67 assertDetect(MediaType.TEXT_PLAIN, "See README.txt");
68 assertDetect(MediaType.OCTET_STREAM, "See README");
69
70
71 assertDetect(MediaType.OCTET_STREAM, "");
72 assertDetect(MediaType.OCTET_STREAM, null);
73 try {
74 assertEquals(
75 MediaType.OCTET_STREAM,
76 detector.detect(null, new Metadata()));
77 } catch (IOException e) {
78 fail("NameDetector should never throw an IOException");
79 }
80 }
81
82 private void assertDetect(MediaType type, String name){
83 Metadata metadata = new Metadata();
84 metadata.set(Metadata.RESOURCE_NAME_KEY, name);
85 try {
86 assertEquals(type, detector.detect(null, metadata));
87 } catch (IOException e) {
88 fail("NameDetector should never throw an IOException");
89 }
90 }
91
92 }