Home | History | Annotate | Download | only in sdkmanager
      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