/* * 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()); } }