blob: 6e20eb33cb439f9395fccbf77cf95ad23a313013 [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* 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.android.tools.idea.npw;
import com.android.tools.idea.npw.NewModuleWizardState;
import com.android.tools.idea.npw.TemplateWizardModuleBuilder;
import com.android.tools.idea.templates.*;
import com.google.common.collect.Maps;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import static com.android.tools.idea.templates.RepositoryUrlManager.*;
import static com.android.tools.idea.templates.TemplateMetadata.*;
import static com.android.tools.idea.npw.NewModuleWizardState.ATTR_CREATE_ACTIVITY;
/**
*
*/
public class NewModuleWizardStateTest extends AndroidGradleTestCase {
NewModuleWizardState myState;
@Override
public void setUp() throws Exception {
super.setUp();
myState = new NewModuleWizardState();
}
@Override
public void tearDown() throws Exception {
super.tearDown();
}
public void testConstruction() throws Exception {
assertTrue(myState.hasAttr(ATTR_IS_LIBRARY_MODULE));
assertTrue(myState.hasAttr(ATTR_CREATE_ICONS));
assertTrue(myState.hasAttr(ATTR_IS_NEW_PROJECT));
assertTrue(myState.hasAttr(ATTR_IS_NEW_PROJECT));
assertTrue(myState.hasAttr(ATTR_IS_LAUNCHER));
assertTrue(myState.hasAttr(ATTR_CREATE_ACTIVITY));
assertTrue(myState.hasAttr(ATTR_SDK_DIR));
assertContainsElements(myState.myActivityTemplateState.myHidden,
ATTR_PACKAGE_NAME, ATTR_APP_TITLE, ATTR_MIN_API,
ATTR_MIN_API_LEVEL, ATTR_TARGET_API, ATTR_BUILD_API, ATTR_BUILD_API_STRING,
ATTR_COPY_ICONS, ATTR_IS_LAUNCHER, ATTR_PARENT_ACTIVITY_CLASS,
ATTR_ACTIVITY_TITLE, ATTR_TARGET_API_STRING);
}
public void testSetTemplateLocation() throws Exception {
TemplateManager manager = TemplateManager.getInstance();
List<File> templates = manager.getTemplates(Template.CATEGORY_PROJECTS);
File androidTemplateFile = null;
File javaTemplateFile = null;
for (File template : templates) {
TemplateMetadata metadata = manager.getTemplate(template);
if (metadata.getTitle().equals(TemplateWizardModuleBuilder.MODULE_NAME)) {
androidTemplateFile = template;
} else if (metadata.getTitle().equals("Java Library")) {
javaTemplateFile = template;
}
}
assertNotNull(androidTemplateFile);
assertNotNull(javaTemplateFile);
// Check that the android state is set correctly
myState.setTemplateLocation(androidTemplateFile);
assertEquals(myState.getTemplate().getRootPath(), androidTemplateFile);
// Check that the android state is unset correctly
myState.setTemplateLocation(javaTemplateFile);
assertEquals(myState.getTemplate().getRootPath(), javaTemplateFile);
}
public void testUpdateDependencies() throws Exception {
LinkedList<String> dependencyList = (LinkedList<String>)myState.get(ATTR_DEPENDENCIES_LIST);
assertNull(dependencyList);
// No libs
myState.put(ATTR_FRAGMENTS_EXTRA, false);
myState.put(ATTR_ACTION_BAR_EXTRA, false);
myState.put(ATTR_GRID_LAYOUT_EXTRA, false);
myState.updateDependencies();
dependencyList = (LinkedList<String>)myState.get(ATTR_DEPENDENCIES_LIST);
assertNotNull(dependencyList);
assertEquals(0, dependencyList.size());
// All libs (fragments)
myState.put(ATTR_FRAGMENTS_EXTRA, true);
myState.put(ATTR_ACTION_BAR_EXTRA, true);
myState.put(ATTR_GRID_LAYOUT_EXTRA, true);
myState.updateDependencies();
dependencyList = (LinkedList<String>)myState.get(ATTR_DEPENDENCIES_LIST);
assertNotNull(dependencyList);
assertEquals(3, dependencyList.size());
RepositoryUrlManager urlManager = RepositoryUrlManager.get();
assertContainsElements(dependencyList,
urlManager.getLibraryCoordinate(SUPPORT_ID_V4),
urlManager.getLibraryCoordinate(APP_COMPAT_ID_V7),
urlManager.getLibraryCoordinate(GRID_LAYOUT_ID_V7));
myState.put(ATTR_DEPENDENCIES_LIST, new LinkedList<String>());
// Support lib (nav drawer)
myState.put(ATTR_FRAGMENTS_EXTRA, false);
myState.put(ATTR_ACTION_BAR_EXTRA, false);
myState.put(ATTR_GRID_LAYOUT_EXTRA, false);
myState.put(ATTR_NAVIGATION_DRAWER_EXTRA, true);
myState.updateDependencies();
dependencyList = (LinkedList<String>)myState.get(ATTR_DEPENDENCIES_LIST);
assertNotNull(dependencyList);
assertEquals(1, dependencyList.size());
assertContainsElements(dependencyList,
urlManager.getLibraryCoordinate(SUPPORT_ID_V4));
}
public void testUpdateParameters() throws Exception {
Boolean createIcons = myState.getBoolean(ATTR_CREATE_ICONS);
myState.updateParameters();
assertSameForKeys(myState.myParameters, myState.myActivityTemplateState.myParameters,
ATTR_PACKAGE_NAME, ATTR_APP_TITLE, ATTR_MIN_API, ATTR_MIN_API_LEVEL,
ATTR_TARGET_API, ATTR_BUILD_API, ATTR_COPY_ICONS, ATTR_IS_NEW_PROJECT, ATTR_IS_LAUNCHER, ATTR_CREATE_ACTIVITY,
ATTR_CREATE_ICONS, ATTR_IS_GRADLE, ATTR_TOP_OUT, ATTR_PROJECT_OUT, ATTR_SRC_OUT, ATTR_RES_OUT, ATTR_MANIFEST_OUT,
ATTR_TARGET_API_STRING, ATTR_BUILD_API_STRING);
assertEquals(!createIcons, myState.getBoolean(ATTR_COPY_ICONS));
}
private void assertSameForKeys(Map<String, Object> m1, Map<String, Object> m2, String... keys) {
for (String key : keys) {
assertEquals(m1.get(key), m2.get(key));
}
}
public void testCopyParameters() throws Exception {
Map<String, Object> from = Maps.newHashMap();
Map<String, Object> to = Maps.newHashMap();
from.put("hello", "world");
from.put("boolean", true);
from.put("integer", 5);
from.put("object", new Object());
assertFalse(from.equals(to));
String[] keys = new String[] {"hello", "boolean", "integer", "object"};
myState.copyParameters(from, to, keys);
assertEquals(from, to);
}
}