1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.sdkmanager; 18 19 import com.android.sdklib.ISdkLog; 20 import com.android.sdklib.StdSdkLog; 21 22 import junit.framework.TestCase; 23 24 public class SdkCommandLineTest extends TestCase { 25 26 private StdSdkLog mLog; 27 28 /** 29 * A mock version of the {@link SdkCommandLine} class that does not 30 * exits and discards its stdout/stderr output. 31 */ 32 public static class MockSdkCommandLine extends SdkCommandLine { 33 private boolean mExitCalled; 34 private boolean mHelpCalled; 35 36 public MockSdkCommandLine(ISdkLog logger) { 37 super(logger); 38 } 39 40 @Override 41 public void printHelpAndExitForAction(String verb, String directObject, 42 String errorFormat, Object... args) { 43 mHelpCalled = true; 44 super.printHelpAndExitForAction(verb, directObject, errorFormat, args); 45 } 46 47 @Override 48 protected void exit() { 49 mExitCalled = true; 50 } 51 52 @Override 53 protected void stdout(String format, Object... args) { 54 // discard 55 } 56 57 @Override 58 protected void stderr(String format, Object... args) { 59 // discard 60 } 61 62 public boolean wasExitCalled() { 63 return mExitCalled; 64 } 65 66 public boolean wasHelpCalled() { 67 return mHelpCalled; 68 } 69 } 70 71 @Override 72 protected void setUp() throws Exception { 73 mLog = new StdSdkLog(); 74 super.setUp(); 75 } 76 77 @Override 78 protected void tearDown() throws Exception { 79 super.tearDown(); 80 } 81 82 /** Test list */ 83 public final void testList_Avd_Verbose() { 84 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 85 c.parseArgs(new String[] { "-v", "list", "avd" }); 86 assertFalse(c.wasHelpCalled()); 87 assertFalse(c.wasExitCalled()); 88 assertEquals("list", c.getVerb()); 89 assertEquals("avd", c.getDirectObject()); 90 assertTrue(c.isVerbose()); 91 } 92 93 public final void testList_Target() { 94 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 95 c.parseArgs(new String[] { "list", "target" }); 96 assertFalse(c.wasHelpCalled()); 97 assertFalse(c.wasExitCalled()); 98 assertEquals("list", c.getVerb()); 99 assertEquals("target", c.getDirectObject()); 100 assertFalse(c.isVerbose()); 101 } 102 103 public final void testList_None() { 104 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 105 c.parseArgs(new String[] { "list" }); 106 assertFalse(c.wasHelpCalled()); 107 assertFalse(c.wasExitCalled()); 108 assertEquals("list", c.getVerb()); 109 assertEquals("", c.getDirectObject()); 110 assertFalse(c.isVerbose()); 111 } 112 113 public final void testList_Invalid() { 114 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 115 c.parseArgs(new String[] { "list", "unknown" }); 116 assertTrue(c.wasHelpCalled()); 117 assertTrue(c.wasExitCalled()); 118 assertEquals(null, c.getVerb()); 119 assertEquals(null, c.getDirectObject()); 120 assertFalse(c.isVerbose()); 121 } 122 123 public final void testList_Plural() { 124 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 125 c.parseArgs(new String[] { "list", "avds" }); 126 assertFalse(c.wasHelpCalled()); 127 assertFalse(c.wasExitCalled()); 128 assertEquals("list", c.getVerb()); 129 // we get the non-plural form 130 assertEquals("avd", c.getDirectObject()); 131 assertFalse(c.isVerbose()); 132 133 c = new MockSdkCommandLine(mLog); 134 c.parseArgs(new String[] { "list", "targets" }); 135 assertFalse(c.wasHelpCalled()); 136 assertFalse(c.wasExitCalled()); 137 assertEquals("list", c.getVerb()); 138 // we get the non-plural form 139 assertEquals("target", c.getDirectObject()); 140 assertFalse(c.isVerbose()); 141 } 142 143 public final void testCreate_Avd() { 144 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 145 c.parseArgs(new String[] { "create", "avd", "-t", "android-100", "-n", "myProject" }); 146 assertFalse(c.wasHelpCalled()); 147 assertFalse(c.wasExitCalled()); 148 assertEquals("create", c.getVerb()); 149 assertEquals("avd", c.getDirectObject()); 150 assertFalse(c.getFlagSnapshot()); 151 assertEquals("android-100", c.getParamTargetId()); 152 assertEquals("myProject", c.getParamName()); 153 assertFalse(c.isVerbose()); 154 } 155 156 public final void testCreate_Avd_Snapshot() { 157 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 158 c.parseArgs(new String[] { "create", "avd", "-t", "android-100", "-n", "myProject", "-a" }); 159 assertFalse(c.wasHelpCalled()); 160 assertFalse(c.wasExitCalled()); 161 assertEquals("create", c.getVerb()); 162 assertEquals("avd", c.getDirectObject()); 163 assertTrue(c.getFlagSnapshot()); 164 assertEquals("android-100", c.getParamTargetId()); 165 assertEquals("myProject", c.getParamName()); 166 assertFalse(c.isVerbose()); 167 } 168 169 public final void testDirectSdk() { 170 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 171 c.parseArgs(new String[] { "sdk" }); 172 assertFalse(c.wasHelpCalled()); 173 assertFalse(c.wasExitCalled()); 174 assertEquals("sdk", c.getVerb()); 175 assertEquals("", c.getDirectObject()); 176 assertFalse(c.isVerbose()); 177 } 178 179 public final void testDirectAvd() { 180 MockSdkCommandLine c = new MockSdkCommandLine(mLog); 181 c.parseArgs(new String[] { "avd" }); 182 assertFalse(c.wasHelpCalled()); 183 assertFalse(c.wasExitCalled()); 184 assertEquals("avd", c.getVerb()); 185 assertEquals("", c.getDirectObject()); 186 assertFalse(c.isVerbose()); 187 } 188 189 } 190