| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php |
| * |
| * 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.eclipse.adt.internal.resources; |
| |
| import com.android.resources.ResourceFolderType; |
| import com.android.resources.ResourceType; |
| |
| import org.eclipse.core.resources.IProject; |
| |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| import junit.framework.TestCase; |
| |
| @SuppressWarnings("javadoc") |
| public class ResourceNameValidatorTest extends TestCase { |
| public void testValidator() throws Exception { |
| // Valid |
| ResourceNameValidator validator = ResourceNameValidator.create(true, |
| ResourceFolderType.VALUES); |
| assertTrue(validator.isValid("foo") == null); |
| assertTrue(validator.isValid("foo.xml") == null); |
| assertTrue(validator.isValid("Foo123_$") == null); |
| assertTrue(validator.isValid("foo.xm") == null); // For non-file types, . => _ |
| |
| // Invalid |
| assertTrue(validator.isValid("") != null); |
| assertTrue(validator.isValid(" ") != null); |
| assertTrue(validator.isValid("foo bar") != null); |
| assertTrue(validator.isValid("1foo") != null); |
| assertTrue(validator.isValid("foo%bar") != null); |
| assertTrue(ResourceNameValidator.create(true, Collections.singleton("foo"), |
| ResourceType.STRING).isValid("foo") != null); |
| assertTrue(ResourceNameValidator.create(true, |
| ResourceFolderType.DRAWABLE).isValid("foo.xm") != null); |
| assertTrue(ResourceNameValidator.create(false, |
| ResourceFolderType.DRAWABLE).isValid("foo.xm") != null); |
| |
| // Only lowercase chars allowed in file-based resource names |
| assertTrue(ResourceNameValidator.create(true, ResourceFolderType.LAYOUT) |
| .isValid("Foo123_$") != null); |
| assertTrue(ResourceNameValidator.create(true, ResourceFolderType.LAYOUT) |
| .isValid("foo123_") == null); |
| |
| // Can't start with _ in file-based resource names, is okay for value based resources |
| assertTrue(ResourceNameValidator.create(true, ResourceFolderType.VALUES) |
| .isValid("_foo") == null); |
| assertTrue(ResourceNameValidator.create(true, ResourceFolderType.LAYOUT) |
| .isValid("_foo") != null); |
| assertTrue(ResourceNameValidator.create(true, ResourceFolderType.DRAWABLE) |
| .isValid("_foo") != null); |
| } |
| |
| public void testIds() throws Exception { |
| ResourceNameValidator validator = ResourceNameValidator.create(false, (IProject) null, |
| ResourceType.ID); |
| assertTrue(validator.isValid("foo") == null); |
| assertTrue(validator.isValid(" foo") != null); |
| assertTrue(validator.isValid("foo ") != null); |
| assertTrue(validator.isValid("foo@") != null); |
| } |
| |
| public void testUniqueOrExists() throws Exception { |
| Set<String> existing = new HashSet<String>(); |
| existing.add("foo1"); |
| existing.add("foo2"); |
| existing.add("foo3"); |
| |
| ResourceNameValidator validator = ResourceNameValidator.create(true, existing, |
| ResourceType.ID); |
| validator.unique(); |
| |
| assertNull(validator.isValid("foo")); // null: ok (no error message) |
| assertNull(validator.isValid("foo4")); |
| assertNotNull(validator.isValid("foo1")); |
| assertNotNull(validator.isValid("foo2")); |
| assertNotNull(validator.isValid("foo3")); |
| |
| validator.exist(); |
| assertNotNull(validator.isValid("foo")); |
| assertNotNull(validator.isValid("foo4")); |
| assertNull(validator.isValid("foo1")); |
| assertNull(validator.isValid("foo2")); |
| assertNull(validator.isValid("foo3")); |
| } |
| } |