aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/ResourceNameValidatorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/ResourceNameValidatorTest.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/ResourceNameValidatorTest.java101
1 files changed, 101 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/ResourceNameValidatorTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/ResourceNameValidatorTest.java
new file mode 100644
index 000000000..2cc2c932c
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/resources/ResourceNameValidatorTest.java
@@ -0,0 +1,101 @@
+/*
+ * 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"));
+ }
+}