1 /*
2  * Copyright (c) 2020 Helmut Neemann.
3  * Use of this source code is governed by the GPL v3 license
4  * that can be found in the LICENSE file.
5  */
6 package de.neemann.digital.core.extern;
7 
8 import junit.framework.TestCase;
9 
10 import java.util.ArrayList;
11 
12 public class OptionsTest extends TestCase {
13 
testSimple()14     public void testSimple() {
15         check(new Options().addString("-a -e -u=zzz"), "-a", "-e", "-u=zzz");
16         check(new Options().addString("-a -e -u=\"Hello World\""), "-a", "-e", "-u=\"Hello World\"");
17         check(new Options().addString("-a -u=\"Hello World\" -e"), "-a", "-u=\"Hello World\"", "-e");
18 
19         // escape
20         check(new Options().addString("-a -u=Hello\\ World -e"), "-a", "-u=Hello World", "-e");
21         check(new Options().addString("-a -u=Hello\\nWorld -e"), "-a", "-u=Hello\nWorld", "-e");
22         check(new Options().addString("-a -u=Hello\\tWorld -e"), "-a", "-u=Hello\tWorld", "-e");
23         check(new Options().addString("-a -u=Hello\\rWorld -e"), "-a", "-u=Hello\rWorld", "-e");
24         check(new Options().addString("-a -u=Hello\\\\World -e"), "-a", "-u=Hello\\World", "-e");
25         check(new Options().addString("-a -u=Hello\\ World -e\\"), "-a", "-u=Hello World", "-e\\");
26         check(new Options().addString("-a -u=Hello\\\"Wo rld -e"), "-a", "-u=Hello\"Wo", "rld", "-e");
27         check(new Options().addString("-a \"-u=Hello World\" -e"), "-a", "-u=Hello World", "-e");
28         check(new Options().addString("-a \"-u=Hello\\ World\" -e"), "-a", "-u=Hello\\ World", "-e");
29         check(new Options().addString("-a \\\"-u=Hello\\ World\\\" -e"), "-a", "\"-u=Hello World\"", "-e");
30     }
31 
check(Options options, String... opt)32     private void check(Options options, String... opt) {
33         ArrayList<String> l = options.getList();
34         assertEquals(opt.length, l.size());
35         for (int i = 0; i < opt.length; i++)
36             assertEquals(opt[i], l.get(i));
37     }
38 }