blob: 1d3952815d5cde0e494ea914ed5ec4f489782653 [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.rendering;
import com.android.resources.ResourceFolderType;
import com.android.resources.ResourceType;
import com.intellij.psi.PsiFile;
import org.jetbrains.android.AndroidTestCase;
import java.awt.*;
import static com.android.tools.idea.rendering.ResourceHelper.getResourceName;
import static com.android.tools.idea.rendering.ResourceHelper.getResourceUrl;
public class ResourceHelperTest extends AndroidTestCase {
public void testIsFileBasedResourceType() throws Exception {
assertTrue(ResourceHelper.isFileBasedResourceType(ResourceType.ANIMATOR));
assertTrue(ResourceHelper.isFileBasedResourceType(ResourceType.LAYOUT));
assertFalse(ResourceHelper.isFileBasedResourceType(ResourceType.STRING));
assertFalse(ResourceHelper.isFileBasedResourceType(ResourceType.DIMEN));
assertFalse(ResourceHelper.isFileBasedResourceType(ResourceType.ID));
// Both:
assertTrue(ResourceHelper.isFileBasedResourceType(ResourceType.DRAWABLE));
assertTrue(ResourceHelper.isFileBasedResourceType(ResourceType.COLOR));
}
public void testIsValueBasedResourceType() throws Exception {
assertTrue(ResourceHelper.isValueBasedResourceType(ResourceType.STRING));
assertTrue(ResourceHelper.isValueBasedResourceType(ResourceType.DIMEN));
assertTrue(ResourceHelper.isValueBasedResourceType(ResourceType.ID));
assertFalse(ResourceHelper.isValueBasedResourceType(ResourceType.LAYOUT));
// These can be both:
assertTrue(ResourceHelper.isValueBasedResourceType(ResourceType.DRAWABLE));
assertTrue(ResourceHelper.isValueBasedResourceType(ResourceType.COLOR));
}
public void testStyleToTheme() throws Exception {
assertEquals("Foo", ResourceHelper.styleToTheme("Foo"));
assertEquals("Theme", ResourceHelper.styleToTheme("@android:style/Theme"));
assertEquals("LocalTheme", ResourceHelper.styleToTheme("@style/LocalTheme"));
//assertEquals("LocalTheme", ResourceHelper.styleToTheme("@foo.bar:style/LocalTheme"));
}
public void testIsProjectStyle() throws Exception {
assertFalse(ResourceHelper.isProjectStyle("@android:style/Theme"));
assertTrue(ResourceHelper.isProjectStyle("@style/LocalTheme"));
}
@SuppressWarnings("ConstantConditions")
public void testGetResourceNameAndUrl() throws Exception {
PsiFile file1 = myFixture.addFileToProject("res/layout-land/foo1.xml", "<LinearLayout/>");
PsiFile file2 = myFixture.addFileToProject("res/menu-en-rUS/foo2.xml", "<menu/>");
// Not a proper PNG file, but we just need a .9.something path to verify basename handling is right
// and it has to be an XML file to get a PSI file out of the fixture
PsiFile file3 = myFixture.addFileToProject("res/drawable-hdpi/foo3.9.xml", "invalidImage");
assertEquals("foo1", getResourceName(file1));
assertEquals("foo2", getResourceName(file2));
assertEquals("foo3", getResourceName(file3));
assertEquals("foo1", getResourceName(file1.getVirtualFile()));
assertEquals("foo2", getResourceName(file2.getVirtualFile()));
assertEquals("foo3", getResourceName(file3.getVirtualFile()));
assertEquals("@layout/foo1", getResourceUrl(file1.getVirtualFile()));
assertEquals("@menu/foo2", getResourceUrl(file2.getVirtualFile()));
assertEquals("@drawable/foo3", getResourceUrl(file3.getVirtualFile()));
}
@SuppressWarnings("ConstantConditions")
public void testGetFolderConfiguration() throws Exception {
PsiFile file1 = myFixture.addFileToProject("res/layout-land/foo1.xml", "<LinearLayout/>");
PsiFile file2 = myFixture.addFileToProject("res/menu-en-rUS/foo2.xml", "<menu/>");
assertEquals("layout-land", ResourceHelper.getFolderConfiguration(file1).getFolderName(ResourceFolderType.LAYOUT));
assertEquals("menu-en-rUS", ResourceHelper.getFolderConfiguration(file2).getFolderName(ResourceFolderType.MENU));
assertEquals("layout-land", ResourceHelper.getFolderConfiguration(file1.getVirtualFile()).getFolderName(ResourceFolderType.LAYOUT));
assertEquals("menu-en-rUS", ResourceHelper.getFolderConfiguration(file2.getVirtualFile()).getFolderName(ResourceFolderType.MENU));
}
public void testRGB() {
Color c = ResourceHelper.parseColor("#0f4");
assert c != null;
assertEquals(0xff00ff44, c.getRGB());
c = ResourceHelper.parseColor("#1237");
assert c != null;
assertEquals(0x11223377, c.getRGB());
c = ResourceHelper.parseColor("#123456");
assert c != null;
assertEquals(0xff123456, c.getRGB());
c = ResourceHelper.parseColor("#08123456");
assert c != null;
assertEquals(0x08123456, c.getRGB());
}
public void testColorToString() {
Color c = new Color(0x0fff0000, true);
assertEquals("#0fff0000", ResourceHelper.colorToString(c));
c = new Color(0x00ff00);
assertEquals("#00ff00", ResourceHelper.colorToString(c));
c = new Color(0x00000000, true);
assertEquals("#00000000", ResourceHelper.colorToString(c));
Color color = new Color(0x11, 0x22, 0x33, 0xf0);
assertEquals("#f0112233", ResourceHelper.colorToString(color));
color = new Color(0xff, 0xff, 0xff, 0x00);
assertEquals("#00ffffff", ResourceHelper.colorToString(color));
}
}