/* * 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.ide.common.resources; import static com.android.resources.ResourceType.ATTR; import static com.android.resources.ResourceType.DIMEN; import static com.android.resources.ResourceType.ID; import static com.android.resources.ResourceType.LAYOUT; import com.android.ide.common.rendering.api.ResourceValue; import com.android.resources.ResourceType; import junit.framework.TestCase; public class ResourceUrlTest extends TestCase { @SuppressWarnings("ConstantConditions") public void testParseResource() { assertNull(ResourceUrl.parse("")); assertNull(ResourceUrl.parse("not_a_resource")); assertNull(ResourceUrl.parse("@null")); assertNull(ResourceUrl.parse("@empty")); assertNull(ResourceUrl.parse("@undefined")); assertNull(ResourceUrl.parse("@?")); assertNull(ResourceUrl.parse("@android:layout")); assertNull(ResourceUrl.parse("@layout")); assertEquals("foo", ResourceUrl.parse("@id/foo").name); assertEquals(ID, ResourceUrl.parse("@id/foo").type); assertFalse(ResourceUrl.parse("@id/foo").framework); assertFalse(ResourceUrl.parse("@id/foo").create); assertFalse(ResourceUrl.parse("@id/foo").theme); assertEquals("foo", ResourceUrl.parse("@+id/foo").name); assertEquals(ID, ResourceUrl.parse("@+id/foo").type); assertFalse(ResourceUrl.parse("@+id/foo").framework); assertTrue(ResourceUrl.parse("@+id/foo").create); assertEquals(LAYOUT, ResourceUrl.parse("@layout/foo").type); assertEquals(DIMEN, ResourceUrl.parse("@dimen/foo").type); assertFalse(ResourceUrl.parse("@dimen/foo").framework); assertEquals("foo", ResourceUrl.parse("@android:dimen/foo").name); assertEquals(DIMEN, ResourceUrl.parse("@android:dimen/foo").type); assertTrue(ResourceUrl.parse("@android:dimen/foo").framework); assertEquals("foo", ResourceUrl.parse("@layout/foo").name); assertEquals("foo", ResourceUrl.parse("@dimen/foo").name); assertEquals(ATTR, ResourceUrl.parse("?attr/foo").type); assertTrue(ResourceUrl.parse("?attr/foo").theme); assertEquals("foo", ResourceUrl.parse("?attr/foo").name); assertFalse(ResourceUrl.parse("?attr/foo").framework); assertEquals(ATTR, ResourceUrl.parse("?foo").type); assertEquals("foo", ResourceUrl.parse("?foo").name); assertFalse(ResourceUrl.parse("?foo").framework); assertEquals(ATTR, ResourceUrl.parse("?android:foo").type); assertEquals("foo", ResourceUrl.parse("?android:foo").name); assertTrue(ResourceUrl.parse("?android:foo").framework); assertTrue(ResourceUrl.parse("?android:foo").theme); assertFalse(ResourceUrl.parse("?foo", false).framework); assertTrue(ResourceUrl.parse("?android:foo", false).framework); assertTrue(ResourceUrl.parse("?foo", true).framework); assertTrue(ResourceUrl.parse("?attr/foo", true).framework); assertEquals("@+id/foo", ResourceUrl.parse("@+id/foo").toString()); assertEquals("@layout/foo", ResourceUrl.parse("@layout/foo").toString()); assertEquals("@android:layout/foo", ResourceUrl.parse("@android:layout/foo").toString()); assertEquals("?android:attr/foo", ResourceUrl.parse("?android:foo").toString()); assertTrue(ResourceUrl.parse("@id/foo").hasValidName()); assertFalse(ResourceUrl.parse("@id/foo bar").hasValidName()); assertFalse(ResourceUrl.parse("@id/").hasValidName()); assertFalse(ResourceUrl.parse("@id/?").hasValidName()); assertFalse(ResourceUrl.parse("@id/123").hasValidName()); assertFalse(ResourceUrl.parse("@id/ab+").hasValidName()); } public void testCreateFromResourceValue() { assertEquals("@android:string/foo", ResourceUrl.create(new ResourceValue(ResourceType.STRING, "foo", true)).toString()); assertEquals("@string/foo", ResourceUrl.create(new ResourceValue(ResourceType.STRING, "foo", false)).toString()); } }