1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.cli2.validation;
18
19 import java.io.File;
20 import java.io.IOException;
21 import java.util.Arrays;
22 import java.util.Iterator;
23 import java.util.List;
24
25 import junit.framework.TestCase;
26
27
28
29
30
31
32
33 public class FileValidatorTest extends TestCase {
34
35 public void testValidate() throws InvalidArgumentException {
36 final Object[] array = new Object[] { "src", "pom.xml", "veryunlikelyfilename" };
37 final List list = Arrays.asList(array);
38 final FileValidator validator = new FileValidator();
39
40 validator.validate(list);
41
42 final Iterator i = list.iterator();
43 assertEquals(new File("src"), i.next());
44 assertEquals(new File("pom.xml"), i.next());
45 assertEquals(new File("veryunlikelyfilename"), i.next());
46 assertFalse(i.hasNext());
47 }
48
49 public void testValidate_Directory() {
50 final Object[] array = new Object[] { "src", "pom.xml" };
51 final List list = Arrays.asList(array);
52 final FileValidator validator = FileValidator
53 .getExistingDirectoryInstance();
54
55 assertTrue("is a directory validator", validator.isDirectory());
56 assertFalse("is not a file validator", validator.isFile());
57 assertTrue("is an existing file validator", validator.isExisting());
58 assertFalse("is not a hidden file validator", validator.isHidden());
59
60 try {
61 validator.validate(list);
62 fail("InvalidArgumentException");
63 } catch (InvalidArgumentException e) {
64 assertEquals("pom.xml", e.getMessage());
65 }
66 }
67
68 public void testValidate_ReadableFile() {
69
70 File file = new File("src/test/data/readable.txt");
71 file.setReadOnly();
72
73 final Object[] array = new Object[] { "src/test/data/readable.txt",
74 "src/test/data/notreadable.txt" };
75 final List list = Arrays.asList(array);
76 final FileValidator validator = FileValidator.getExistingFileInstance();
77 validator.setReadable(true);
78
79 assertFalse("is not a directory validator", validator.isDirectory());
80 assertTrue("is a file validator", validator.isFile());
81 assertTrue("is an existing file validator", validator.isExisting());
82 assertFalse("is not a hidden file validator", validator.isHidden());
83 assertTrue("is a readable file validator", validator.isReadable());
84 assertFalse("is not a writable file validator", validator.isWritable());
85
86 try {
87 validator.validate(list);
88 fail("InvalidArgumentException");
89 } catch (InvalidArgumentException e) {
90 assertEquals("src/test/data/notreadable.txt", e.getMessage());
91 }
92 }
93
94 public void testValidate_WritableFile() {
95
96 File file = new File("src/test/data/readable.txt");
97 file.setReadOnly();
98
99 final Object[] array = new Object[] { "src/test/data/writable.txt",
100 "src/test/data/readable.txt" };
101 final List list = Arrays.asList(array);
102 final FileValidator validator = FileValidator.getExistingFileInstance();
103 validator.setWritable(true);
104
105 assertFalse("is not a directory validator", validator.isDirectory());
106 assertTrue("is a file validator", validator.isFile());
107 assertTrue("is an existing file validator", validator.isExisting());
108 assertFalse("is not a hidden file validator", validator.isHidden());
109 assertFalse("is not a readable file validator", validator.isReadable());
110 assertTrue("is a writable file validator", validator.isWritable());
111
112 try {
113 validator.validate(list);
114 fail("InvalidArgumentException");
115 } catch (InvalidArgumentException e) {
116 assertEquals("src/test/data/readable.txt", e.getMessage());
117 }
118 }
119
120 public void testValidate_HiddenFile() throws InvalidArgumentException {
121
122 attribute("H");
123
124 final Object[] array = new Object[] { "src/test/data/.hidden.txt", "src" };
125 final List list = Arrays.asList(array);
126 final FileValidator validator = FileValidator.getExistingFileInstance();
127 validator.setHidden(true);
128
129 assertFalse("is not a directory validator", validator.isDirectory());
130 assertTrue("is a file validator", validator.isFile());
131 assertTrue("is an existing file validator", validator.isExisting());
132 assertTrue("is a hidden file validator", validator.isHidden());
133
134 try {
135 validator.validate(list);
136 fail("InvalidArgumentException");
137 } catch (InvalidArgumentException e) {
138 assertEquals("src", e.getMessage());
139 }
140 }
141
142 private void attribute(String attr) {
143 final String os = System.getProperty("os.name").toLowerCase();
144
145
146
147 if (os.indexOf("windows") != -1) {
148
149 try {
150 Process proc = Runtime.getRuntime().exec(
151 "attrib.exe +" + attr + " src/test/data/.hidden.txt",
152 null, new File("."));
153 proc.waitFor();
154 } catch (InterruptedException e) {
155 System.out.println(e.getMessage());
156 e.printStackTrace();
157 } catch (IOException e) {
158 System.out.println(e.getMessage());
159 e.printStackTrace();
160 }
161 }
162 }
163
164 public void testValidate_Existing() {
165 final Object[] array = new Object[] { "pom.xml", "veryunlikelyfilename" };
166 final List list = Arrays.asList(array);
167 final FileValidator validator = FileValidator.getExistingInstance();
168
169 assertFalse("is not a directory validator", validator.isDirectory());
170 assertFalse("is not a file validator", validator.isFile());
171 assertTrue("is an existing file validator", validator.isExisting());
172 assertFalse("is not a hidden file validator", validator.isHidden());
173
174 try {
175 validator.validate(list);
176 fail("InvalidArgumentException");
177 } catch (InvalidArgumentException e) {
178 assertEquals("veryunlikelyfilename", e.getMessage());
179 }
180 }
181
182 public void testValidate_File() {
183 final Object[] array = new Object[] { "pom.xml", "src" };
184 final List list = Arrays.asList(array);
185 final Validator validator = FileValidator.getExistingFileInstance();
186
187 try {
188 validator.validate(list);
189 fail("InvalidArgumentException");
190 } catch (InvalidArgumentException e) {
191 assertEquals("src", e.getMessage());
192 }
193 }
194 }