OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.content.browser; | 5 package org.chromium.content.browser; |
6 | 6 |
7 import android.support.test.filters.MediumTest; | 7 import android.support.test.filters.MediumTest; |
8 | 8 |
| 9 import org.junit.Assert; |
| 10 import org.junit.Before; |
| 11 import org.junit.Rule; |
| 12 import org.junit.Test; |
| 13 import org.junit.runner.RunWith; |
| 14 |
9 import org.chromium.base.CommandLine; | 15 import org.chromium.base.CommandLine; |
10 import org.chromium.base.annotations.SuppressFBWarnings; | 16 import org.chromium.base.annotations.SuppressFBWarnings; |
| 17 import org.chromium.base.test.BaseJUnit4ClassRunner; |
11 import org.chromium.base.test.util.Feature; | 18 import org.chromium.base.test.util.Feature; |
12 import org.chromium.content.browser.test.NativeLibraryTestBase; | 19 import org.chromium.content.browser.test.NativeLibraryTestRule; |
13 import org.chromium.content_shell_apk.ContentShellApplication; | 20 import org.chromium.content_shell_apk.ContentShellApplication; |
14 | 21 |
15 /** | 22 /** |
16 * Test class for command lines. | 23 * Test class for command lines. |
17 */ | 24 */ |
18 public class ContentCommandLineTest extends NativeLibraryTestBase { | 25 @RunWith(BaseJUnit4ClassRunner.class) |
| 26 public class ContentCommandLineTest { |
| 27 @Rule |
| 28 public NativeLibraryTestRule mActivityTestRule = new NativeLibraryTestRule()
; |
| 29 |
19 // A reference command line. Note that switch2 is [brea\d], switch3 is [and
"butter"], | 30 // A reference command line. Note that switch2 is [brea\d], switch3 is [and
"butter"], |
20 // and switch4 is [a "quoted" 'food'!] | 31 // and switch4 is [a "quoted" 'food'!] |
21 static final String INIT_SWITCHES[] = { "init_command", "--switch", "Arg", | 32 static final String INIT_SWITCHES[] = { "init_command", "--switch", "Arg", |
22 "--switch2=brea\\d", "--switch3=and \"butter\"", | 33 "--switch2=brea\\d", "--switch3=and \"butter\"", |
23 "--switch4=a \"quoted\" 'food'!", | 34 "--switch4=a \"quoted\" 'food'!", |
24 "--", "--actually_an_arg" }; | 35 "--", "--actually_an_arg" }; |
25 | 36 |
26 // The same command line, but in quoted string format. | 37 // The same command line, but in quoted string format. |
27 static final char INIT_SWITCHES_BUFFER[] = | 38 static final char INIT_SWITCHES_BUFFER[] = |
28 ("init_command --switch Arg --switch2=brea\\d --switch3=\"and \\\"butt\"
er\\\" " | 39 ("init_command --switch Arg --switch2=brea\\d --switch3=\"and \\\"butt\"
er\\\" " |
29 + "--switch4='a \"quoted\" \\'food\\'!' " | 40 + "--switch4='a \"quoted\" \\'food\\'!' " |
30 + "-- --actually_an_arg").toCharArray(); | 41 + "-- --actually_an_arg").toCharArray(); |
31 | 42 |
32 static final String CL_ADDED_SWITCH = "zappo-dappo-doggy-trainer"; | 43 static final String CL_ADDED_SWITCH = "zappo-dappo-doggy-trainer"; |
33 static final String CL_ADDED_SWITCH_2 = "username"; | 44 static final String CL_ADDED_SWITCH_2 = "username"; |
34 static final String CL_ADDED_VALUE_2 = "bozo"; | 45 static final String CL_ADDED_VALUE_2 = "bozo"; |
35 | 46 |
36 @Override | 47 @Before |
37 public void setUp() throws Exception { | 48 public void setUp() throws Exception { |
38 super.setUp(); | |
39 CommandLine.reset(); | 49 CommandLine.reset(); |
40 } | 50 } |
41 | 51 |
42 void loadJni() { | 52 void loadJni() { |
43 assertFalse(CommandLine.getInstance().isNativeImplementation()); | 53 Assert.assertFalse(CommandLine.getInstance().isNativeImplementation()); |
44 loadNativeLibraryNoBrowserProcess(); | 54 mActivityTestRule.loadNativeLibraryNoBrowserProcess(); |
45 assertTrue(CommandLine.getInstance().isNativeImplementation()); | 55 Assert.assertTrue(CommandLine.getInstance().isNativeImplementation()); |
46 } | 56 } |
47 | 57 |
48 void checkInitSwitches() { | 58 void checkInitSwitches() { |
49 CommandLine cl = CommandLine.getInstance(); | 59 CommandLine cl = CommandLine.getInstance(); |
50 assertFalse(cl.hasSwitch("init_command")); | 60 Assert.assertFalse(cl.hasSwitch("init_command")); |
51 assertTrue(cl.hasSwitch("switch")); | 61 Assert.assertTrue(cl.hasSwitch("switch")); |
52 assertFalse(cl.hasSwitch("--switch")); | 62 Assert.assertFalse(cl.hasSwitch("--switch")); |
53 assertFalse(cl.hasSwitch("arg")); | 63 Assert.assertFalse(cl.hasSwitch("arg")); |
54 assertFalse(cl.hasSwitch("actually_an_arg")); | 64 Assert.assertFalse(cl.hasSwitch("actually_an_arg")); |
55 assertEquals("brea\\d", cl.getSwitchValue("switch2")); | 65 Assert.assertEquals("brea\\d", cl.getSwitchValue("switch2")); |
56 assertEquals("and \"butter\"", cl.getSwitchValue("switch3")); | 66 Assert.assertEquals("and \"butter\"", cl.getSwitchValue("switch3")); |
57 assertEquals("a \"quoted\" 'food'!", cl.getSwitchValue("switch4")); | 67 Assert.assertEquals("a \"quoted\" 'food'!", cl.getSwitchValue("switch4")
); |
58 assertNull(cl.getSwitchValue("switch")); | 68 Assert.assertNull(cl.getSwitchValue("switch")); |
59 assertNull(cl.getSwitchValue("non-existant")); | 69 Assert.assertNull(cl.getSwitchValue("non-existant")); |
60 } | 70 } |
61 | 71 |
62 void checkSettingThenGetting() { | 72 void checkSettingThenGetting() { |
63 CommandLine cl = CommandLine.getInstance(); | 73 CommandLine cl = CommandLine.getInstance(); |
64 | 74 |
65 // Add a plain switch. | 75 // Add a plain switch. |
66 assertFalse(cl.hasSwitch(CL_ADDED_SWITCH)); | 76 Assert.assertFalse(cl.hasSwitch(CL_ADDED_SWITCH)); |
67 cl.appendSwitch(CL_ADDED_SWITCH); | 77 cl.appendSwitch(CL_ADDED_SWITCH); |
68 assertTrue(cl.hasSwitch(CL_ADDED_SWITCH)); | 78 Assert.assertTrue(cl.hasSwitch(CL_ADDED_SWITCH)); |
69 | 79 |
70 // Add a switch paired with a value. | 80 // Add a switch paired with a value. |
71 assertFalse(cl.hasSwitch(CL_ADDED_SWITCH_2)); | 81 Assert.assertFalse(cl.hasSwitch(CL_ADDED_SWITCH_2)); |
72 assertNull(cl.getSwitchValue(CL_ADDED_SWITCH_2)); | 82 Assert.assertNull(cl.getSwitchValue(CL_ADDED_SWITCH_2)); |
73 cl.appendSwitchWithValue(CL_ADDED_SWITCH_2, CL_ADDED_VALUE_2); | 83 cl.appendSwitchWithValue(CL_ADDED_SWITCH_2, CL_ADDED_VALUE_2); |
74 assertTrue(CL_ADDED_VALUE_2.equals(cl.getSwitchValue(CL_ADDED_SWITCH_2))
); | 84 Assert.assertTrue(CL_ADDED_VALUE_2.equals(cl.getSwitchValue(CL_ADDED_SWI
TCH_2))); |
75 | 85 |
76 // Append a few new things. | 86 // Append a few new things. |
77 final String switchesAndArgs[] = { "dummy", "--superfast", "--speed=turb
o" }; | 87 final String switchesAndArgs[] = { "dummy", "--superfast", "--speed=turb
o" }; |
78 assertFalse(cl.hasSwitch("dummy")); | 88 Assert.assertFalse(cl.hasSwitch("dummy")); |
79 assertFalse(cl.hasSwitch("superfast")); | 89 Assert.assertFalse(cl.hasSwitch("superfast")); |
80 assertNull(cl.getSwitchValue("speed")); | 90 Assert.assertNull(cl.getSwitchValue("speed")); |
81 cl.appendSwitchesAndArguments(switchesAndArgs); | 91 cl.appendSwitchesAndArguments(switchesAndArgs); |
82 assertFalse(cl.hasSwitch("dummy")); | 92 Assert.assertFalse(cl.hasSwitch("dummy")); |
83 assertFalse(cl.hasSwitch("command")); | 93 Assert.assertFalse(cl.hasSwitch("command")); |
84 assertTrue(cl.hasSwitch("superfast")); | 94 Assert.assertTrue(cl.hasSwitch("superfast")); |
85 assertTrue("turbo".equals(cl.getSwitchValue("speed"))); | 95 Assert.assertTrue("turbo".equals(cl.getSwitchValue("speed"))); |
86 } | 96 } |
87 | 97 |
88 void checkAppendedSwitchesPassedThrough() { | 98 void checkAppendedSwitchesPassedThrough() { |
89 CommandLine cl = CommandLine.getInstance(); | 99 CommandLine cl = CommandLine.getInstance(); |
90 assertTrue(cl.hasSwitch(CL_ADDED_SWITCH)); | 100 Assert.assertTrue(cl.hasSwitch(CL_ADDED_SWITCH)); |
91 assertTrue(cl.hasSwitch(CL_ADDED_SWITCH_2)); | 101 Assert.assertTrue(cl.hasSwitch(CL_ADDED_SWITCH_2)); |
92 assertTrue(CL_ADDED_VALUE_2.equals(cl.getSwitchValue(CL_ADDED_SWITCH_2))
); | 102 Assert.assertTrue(CL_ADDED_VALUE_2.equals(cl.getSwitchValue(CL_ADDED_SWI
TCH_2))); |
93 } | 103 } |
94 | 104 |
| 105 @Test |
95 @MediumTest | 106 @MediumTest |
96 @Feature({"Android-AppBase"}) | 107 @Feature({"Android-AppBase"}) |
97 public void testJavaNativeTransition() { | 108 public void testJavaNativeTransition() { |
98 CommandLine.init(INIT_SWITCHES); | 109 CommandLine.init(INIT_SWITCHES); |
99 checkInitSwitches(); | 110 checkInitSwitches(); |
100 loadJni(); | 111 loadJni(); |
101 checkInitSwitches(); | 112 checkInitSwitches(); |
102 checkSettingThenGetting(); | 113 checkSettingThenGetting(); |
103 } | 114 } |
104 | 115 |
| 116 @Test |
105 @MediumTest | 117 @MediumTest |
106 @Feature({"Android-AppBase"}) | 118 @Feature({"Android-AppBase"}) |
107 public void testJavaNativeTransitionAfterAppends() { | 119 public void testJavaNativeTransitionAfterAppends() { |
108 CommandLine.init(INIT_SWITCHES); | 120 CommandLine.init(INIT_SWITCHES); |
109 checkInitSwitches(); | 121 checkInitSwitches(); |
110 checkSettingThenGetting(); | 122 checkSettingThenGetting(); |
111 loadJni(); | 123 loadJni(); |
112 checkInitSwitches(); | 124 checkInitSwitches(); |
113 checkAppendedSwitchesPassedThrough(); | 125 checkAppendedSwitchesPassedThrough(); |
114 } | 126 } |
115 | 127 |
| 128 @Test |
116 @MediumTest | 129 @MediumTest |
117 @Feature({"Android-AppBase"}) | 130 @Feature({"Android-AppBase"}) |
118 public void testNativeInitialization() { | 131 public void testNativeInitialization() { |
119 CommandLine.init(null); | 132 CommandLine.init(null); |
120 loadJni(); | 133 loadJni(); |
121 // Drop the program name for use with appendSwitchesAndArguments. | 134 // Drop the program name for use with appendSwitchesAndArguments. |
122 String[] args = new String[INIT_SWITCHES.length - 1]; | 135 String[] args = new String[INIT_SWITCHES.length - 1]; |
123 System.arraycopy(INIT_SWITCHES, 1, args, 0, args.length); | 136 System.arraycopy(INIT_SWITCHES, 1, args, 0, args.length); |
124 CommandLine.getInstance().appendSwitchesAndArguments(args); | 137 CommandLine.getInstance().appendSwitchesAndArguments(args); |
125 checkInitSwitches(); | 138 checkInitSwitches(); |
126 checkSettingThenGetting(); | 139 checkSettingThenGetting(); |
127 } | 140 } |
128 | 141 |
| 142 @Test |
129 @SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME") | 143 @SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME") |
130 @MediumTest | 144 @MediumTest |
131 @Feature({"Android-AppBase"}) | 145 @Feature({"Android-AppBase"}) |
132 public void testFileInitialization() { | 146 public void testFileInitialization() { |
133 CommandLine.initFromFile(ContentShellApplication.COMMAND_LINE_FILE); | 147 CommandLine.initFromFile(ContentShellApplication.COMMAND_LINE_FILE); |
134 loadJni(); | 148 loadJni(); |
135 checkSettingThenGetting(); | 149 checkSettingThenGetting(); |
136 } | 150 } |
137 } | 151 } |
OLD | NEW |