/*
* ###
* Android Maven Plugin - android-maven-plugin
*
* Copyright (C) 1999 - 2012 Photon Infotech Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ###
*/
/*
* Copyright (C) 2009 Jayway AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.photon.maven.plugins.android;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import org.codehaus.plexus.util.ReflectionUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.photon.maven.plugins.android.AndroidSdk;
import com.photon.maven.plugins.android.InvalidSdkException;
/**
* Excercises the {@link AndroidSdk} class.
*
*/
public class AndroidSdkTest {
private SdkTestSupport sdkTestSupport;
@Before
public void setUp(){
sdkTestSupport = new SdkTestSupport();
}
//@Test
public void givenToolAdbThenPathIsPlatformTools() {
final String pathForTool =sdkTestSupport.getSdk_with_platform_1_5().getPathForTool("adb");
Assert.assertEquals(new File(sdkTestSupport.getEnv_ANDROID_HOME() + "/platform-tools").getAbsolutePath(), new File(pathForTool).getParentFile().getAbsolutePath());
}
//@Test
public void givenToolAndroidThenPathIsCommon() {
final String pathForTool =sdkTestSupport.getSdk_with_platform_1_5().getPathForTool("android");
Assert.assertEquals(new File(sdkTestSupport.getEnv_ANDROID_HOME() + "/tools").getAbsolutePath(), new File(pathForTool).getParentFile().getAbsolutePath());
}
//@Test
public void givenToolAaptAndPlatform1dot5ThenPathIsPlatformTools() {
final AndroidSdk sdk = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "3");
final String pathForTool = sdk.getPathForTool("aapt");
Assert.assertEquals(new File(sdkTestSupport.getEnv_ANDROID_HOME() + "/platform-tools"), new File(pathForTool).getParentFile());
}
//@Test(expected = InvalidSdkException.class)
public void givenInvalidSdkPathThenException() throws IOException {
new AndroidSdk(File.createTempFile("android-maven-plugin", "test"), null).getLayout();
}
//@Test(expected = InvalidSdkException.class)
public void givenInvalidPlatformStringThenException() throws IOException {
final AndroidSdk sdk = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "invalidplatform");
}
//@Test
public void givenDefaultSdkThenLayoutIs23(){
Assert.assertEquals(sdkTestSupport.getSdk_with_platform_default().getLayout(), AndroidSdk.Layout.LAYOUT_2_3);
}
//@Test
public void givenPlatform1dot5ThenPlatformis1dot5() throws IllegalAccessException {
final File path = (File) ReflectionUtils.getValueIncludingSuperclasses("sdkPath",sdkTestSupport.getSdk_with_platform_1_5());
Assert.assertEquals(new File(path, "/platforms/android-3"),sdkTestSupport.getSdk_with_platform_1_5().getPlatform());
}
//@Test
public void givenPlatformNullThenPlatformisSomethingValidLooking() throws IllegalAccessException, URISyntaxException {
// final File path = (File) ReflectionUtils.getValueIncludingSuperclasses("sdkPath",sdkTestSupport.getSdk_with_platform_default());
// final File platform = sdkTestSupport.getSdk_with_platform_default().getPlatform();
// final String platformPath = platform.getAbsolutePath();
// final String pathPath = path.getAbsolutePath();
// final String regex = new File(pathPath + "/platforms/android-.*").toURI().toString();
// Assert.assertTrue(new File(platformPath).toURI().toString().matches(regex));
}
/**
* Test all available platforms and api level versions. All have to be installed locally
* for this test to pass including the obsolete ones.
*/
//@Test
public void validPlatformsAndApiLevels() {
final AndroidSdk sdk3 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "3");
final AndroidSdk sdk4 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "4");
final AndroidSdk sdk7 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "7");
final AndroidSdk sdk8 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "8");
final AndroidSdk sdk9 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "9");
final AndroidSdk sdk10 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "10");
final AndroidSdk sdk11 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "11");
final AndroidSdk sdk1_5 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "1.5");
final AndroidSdk sdk1_6 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "1.6");
final AndroidSdk sdk2_1 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "2.1");
final AndroidSdk sdk2_2 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "2.2");
final AndroidSdk sdk2_3_1 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "2.3.1");
final AndroidSdk sdk3_0 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "3.0");
final AndroidSdk sdk3_1 = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "3.1");
}
//@Test(expected = InvalidSdkException.class)
public void invalidPlatformAndApiLevels() {
final AndroidSdk invalid = new AndroidSdk(new File(sdkTestSupport.getEnv_ANDROID_HOME()), "invalid");
}
}