Changed license to CC0
[svjatoslav_commons.git] / src / test / java / eu / svjatoslav / commons / commandline / parameterparser / ParserTest.java
1 /*
2  * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.commons.commandline.parameterparser;
6
7 import eu.svjatoslav.commons.commandline.parameterparser.parameter.FileParameter;
8 import eu.svjatoslav.commons.commandline.parameterparser.parameter.StringParameter;
9 import org.junit.Before;
10 import org.junit.Test;
11
12 import java.io.File;
13 import java.io.FileWriter;
14 import java.io.IOException;
15
16 import static org.junit.Assert.*;
17
18 public class ParserTest {
19
20     Parser parser;
21
22     @Before
23     public void setUp() {
24         parser = new Parser();
25     }
26
27     @Test
28     public void testParse() throws IOException {
29
30         // define allowed parameters
31         final StringParameter helpParameter = parser.add(new StringParameter("Show help screen")
32                 .addAliases("--help", "-h").setMandatory());
33
34         final StringParameter compileParameter = parser.add(new StringParameter("Compile code"))
35                 .addAliases("--compile", "-c");
36
37         FileParameter fileParameter = parser.add(new FileParameter("Input file")
38                 .addAliases("-i").mustExist());
39
40         createTemporaryFile();
41
42         // check help generation
43         parser.showHelp();
44
45         // parse arguments
46         parser.parse(new String[]{"--help", "section", "-i", "/tmp/file with spaces"});
47
48         // --help was in the arguments
49         assertTrue(helpParameter.isSpecified());
50
51         // compile was not present
52         assertFalse(compileParameter.isSpecified());
53
54         // validate that help argument was "section"
55         assertEquals("section", helpParameter.getValue());
56
57         assertTrue(fileParameter.isSpecified());
58         assertEquals("/tmp/file with spaces", fileParameter.getValue().getAbsolutePath());
59
60     }
61
62     private void createTemporaryFile() throws IOException {
63         File fileWithSpaces = new File("/tmp/file with spaces");
64         FileWriter writer = new FileWriter(fileWithSpaces);
65         writer.write("test");
66         writer.close();
67     }
68 }