You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ch...@apache.org on 2012/06/01 02:27:41 UTC
svn commit: r1344950 [3/3] - in /commons/sandbox/classscan/trunk: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/commons/ src/main/java/org/apache/commons/classscan/
src/main/java/org/apache/commo...
Added: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/PrimitiveClassTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/PrimitiveClassTest.java?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/PrimitiveClassTest.java (added)
+++ commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/PrimitiveClassTest.java Fri Jun 1 00:27:39 2012
@@ -0,0 +1,72 @@
+/*
+ * 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 org.apache.commons.classscan.bcel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.net.URISyntaxException;
+
+import org.apache.commons.classscan.MetaClass;
+import org.apache.commons.classscan.MetaClassLoader;
+import org.apache.commons.classscan.MetaRegistry;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PrimitiveClassTest {
+
+ MetaClassLoader classLoader;
+ MetaClass byteClass;
+
+ @Before
+ public void loadLocation() throws URISyntaxException {
+ classLoader = MetaRegistry.SINGLETON.getClassLoader(Byte.TYPE.getClassLoader());
+ byteClass = classLoader.getMetaClass(Byte.TYPE.getCanonicalName());
+ }
+
+ @Test
+ public void testGetClassLocation() throws URISyntaxException {
+ assertNull(byteClass.getClassLocation());
+ }
+
+ @Test
+ public void testGetCanonicalName() {
+ assertEquals(Byte.TYPE.getCanonicalName(), byteClass.getName());
+ }
+
+ @Test
+ public void testGetParent() throws URISyntaxException {
+ assertNull(byteClass.getParent());
+ }
+
+ @Test
+ public void testGetInterfaces() {
+ assertEquals(0, byteClass.getInterfaces().size());
+ }
+
+ @Test
+ public void testGetAnnotations() {
+ assertEquals(0, byteClass.getAnnotations().size());
+ }
+
+ @Test
+ public void testGetMethods() {
+ assertEquals(0, byteClass.getMethods().size());
+ }
+
+ @Test
+ public void testGetFields() {
+ assertEquals(0, byteClass.getFields().size());
+ }
+}
Propchange: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/PrimitiveClassTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/UriClassLocationTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/UriClassLocationTest.java?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/UriClassLocationTest.java (added)
+++ commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/UriClassLocationTest.java Fri Jun 1 00:27:39 2012
@@ -0,0 +1,63 @@
+/*
+ * 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 org.apache.commons.classscan.bcel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URISyntaxException;
+import java.util.Collection;
+
+import org.apache.commons.classscan.MetaClass;
+import org.apache.commons.classscan.MetaClassLoader;
+import org.apache.commons.classscan.MetaClassLocation;
+import org.apache.commons.classscan.MetaRegistry;
+import org.apache.commons.classscan.test.classes.FullyDecorated;
+import org.junit.Before;
+import org.junit.Test;
+
+public class UriClassLocationTest {
+
+ MetaClassLocation location;
+ MetaClassLoader classLoader;
+
+ @Before
+ public void loadLocation() throws URISyntaxException {
+ classLoader = MetaRegistry.SINGLETON.getClassLoader(getClass().getClassLoader());
+ String thisUri = getClass().getProtectionDomain().getCodeSource().getLocation().toString();
+ location = classLoader.getClassLocation(thisUri);
+ assertEquals(thisUri, location.getName());
+ }
+
+ @Test
+ public void testGetMetaClass() throws URISyntaxException {
+ MetaClass thisClass= location.getMetaClass(getClass().getCanonicalName());
+ assertEquals(getClass().getCanonicalName(), thisClass.getName());
+ }
+
+ @Test
+ public void testGetMetaClasses() throws URISyntaxException {
+ Collection<? extends MetaClass> classes= location.getMetaClasses();
+
+ MetaClass thisClass= location.getMetaClass(getClass().getCanonicalName());
+ assertTrue(classes.contains(thisClass));
+
+ MetaClass fdClass= location.getMetaClass(FullyDecorated.class.getCanonicalName());
+ assertTrue(classes.contains(fdClass));
+
+ MetaClass objClass = classLoader.findMetaClass(Object.class.getCanonicalName());
+ assertFalse(classes.contains(objClass));
+ }
+}
Propchange: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/bcel/UriClassLocationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/BadPackage.java
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/BadPackage.java?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/BadPackage.java (added)
+++ commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/BadPackage.java Fri Jun 1 00:27:39 2012
@@ -0,0 +1,30 @@
+/*
+ * 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 org.apache.commons.wrong.test.classes; // intentionally wrong package to force error condition
+
+public class BadPackage {
+ String field;
+
+ public BadPackage(String field) {
+ this.field = field;
+ }
+
+ public String getField() {
+ return field;
+ }
+
+ public void setField(String field) {
+ this.field = field;
+ }
+}
Propchange: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/BadPackage.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullInterface.java
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullInterface.java?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullInterface.java (added)
+++ commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullInterface.java Fri Jun 1 00:27:39 2012
@@ -0,0 +1,26 @@
+/*
+ * 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 org.apache.commons.classscan.test.classes;
+
+import org.apache.commons.classscan.test.annotations.MethodAnnotation;
+import org.apache.commons.classscan.test.annotations.ParameterAnnotation;
+
+public interface FullInterface {
+
+ @MethodAnnotation
+ int[] getField();
+
+ void setField(@ParameterAnnotation int[] field);
+
+}
\ No newline at end of file
Propchange: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullInterface.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullyDecorated.java
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullyDecorated.java?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullyDecorated.java (added)
+++ commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullyDecorated.java Fri Jun 1 00:27:39 2012
@@ -0,0 +1,53 @@
+/*
+ * 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 org.apache.commons.classscan.test.classes;
+
+import java.io.Serializable;
+
+import org.apache.commons.classscan.test.annotations.AnnotationAnnotation;
+import org.apache.commons.classscan.test.annotations.ConstructorAnnotation;
+import org.apache.commons.classscan.test.annotations.FieldAnnotation;
+import org.apache.commons.classscan.test.annotations.MethodAnnotation;
+import org.apache.commons.classscan.test.annotations.ParameterAnnotation;
+import org.apache.commons.classscan.test.annotations.TestEnum;
+import org.apache.commons.classscan.test.annotations.TypeAnnotation;
+
+@TypeAnnotation(byteValue = 1, charValue = '&', doubleValue = Math.PI, floatValue = (float) Math.E, intValue = 42, longValue = 3360, shortValue = 1895, booleanValue = true, stringValue = "testing", stringArrayValue = {
+ "one", "two" }, enumValue = TestEnum.Three, classValue = Object.class, annotationValue = @AnnotationAnnotation)
+public class FullyDecorated implements Serializable, FullInterface {
+ private static final long serialVersionUID = 1L;
+
+ @FieldAnnotation
+ private int[] field;
+
+ public static long getSerialVersion() {
+ return serialVersionUID;
+ }
+
+ @ConstructorAnnotation
+ public FullyDecorated(int[] field) {
+ this.field = field;
+ }
+
+ @Override
+ @MethodAnnotation
+ public int[] getField() {
+ return field;
+ }
+
+ @Override
+ public void setField(@ParameterAnnotation int[] field) {
+ this.field = field;
+ }
+}
Propchange: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/FullyDecorated.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/ValidateFullyDecorated.java
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/ValidateFullyDecorated.java?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/ValidateFullyDecorated.java (added)
+++ commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/ValidateFullyDecorated.java Fri Jun 1 00:27:39 2012
@@ -0,0 +1,331 @@
+/*
+ * 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 org.apache.commons.classscan.test.classes;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+import org.apache.commons.classscan.MetaAnnotation;
+import org.apache.commons.classscan.MetaClass;
+import org.apache.commons.classscan.MetaField;
+import org.apache.commons.classscan.MetaMethod;
+import org.apache.commons.classscan.MetaParameter;
+import org.apache.commons.classscan.MetaType;
+import org.apache.commons.classscan.MetaAnnotation.Property;
+import org.apache.commons.classscan.test.annotations.AnnotationAnnotation;
+import org.apache.commons.classscan.test.annotations.ConstructorAnnotation;
+import org.apache.commons.classscan.test.annotations.FieldAnnotation;
+import org.apache.commons.classscan.test.annotations.MethodAnnotation;
+import org.apache.commons.classscan.test.annotations.ParameterAnnotation;
+import org.apache.commons.classscan.test.annotations.TestEnum;
+import org.apache.commons.classscan.test.annotations.TypeAnnotation;
+
+public class ValidateFullyDecorated {
+
+ public ValidateFullyDecorated(MetaClass fdClass) {
+ assertClassParent(fdClass.getParent());
+ assertInterfaces(fdClass.getInterfaces());
+ assertClassAnnotations(fdClass.getAnnotations());
+ assertClassAnnotation(fdClass.getAnnotation(TypeAnnotation.class.getCanonicalName()));
+ assertMethods(fdClass.getMethods());
+ assertFields(fdClass.getFields());
+ }
+
+ private void assertClassParent(MetaClass objectClass) {
+ assertEquals(Object.class.getCanonicalName(), objectClass.getName());
+ assertNull(objectClass.getParent());
+ }
+
+ private void assertInterfaces(Set<? extends MetaClass> set) {
+ assertEquals(2, set.size());
+ for (MetaClass iface : set) {
+ String interfaceName = iface.getName();
+ if(interfaceName.equals(Serializable.class.getCanonicalName())) {
+ continue;
+ }
+ else if(interfaceName.equals(FullInterface.class.getCanonicalName())) {
+ continue;
+ }
+ else {
+ fail("unexpected interface " + interfaceName);
+ }
+ }
+ assertReadOnlySet(set);
+ }
+
+ private void assertClassAnnotations(Set<? extends MetaAnnotation> collection) {
+ assertEquals(1, collection.size());
+ for (MetaAnnotation annotation : collection) {
+ assertEquals(TypeAnnotation.class.getCanonicalName(), annotation.getName());
+ assertClassAnnotation(annotation);
+ }
+ assertReadOnlySet(collection);
+ }
+
+ private void assertClassAnnotation(MetaAnnotation annotation) {
+ Collection<? extends Property> properties = annotation.getProperties();
+ assertEquals(13, properties.size());
+ for (MetaAnnotation.Property property : properties) {
+ String propertyName = property.getName();
+ if (propertyName.equals("byteValue")) {
+ assertEquals(new Byte((byte) 1), property.getValue());
+ }
+ else if (propertyName.equals("charValue")) {
+ assertEquals(new Character('&'), property.getValue());
+ }
+ else if (propertyName.equals("doubleValue")) {
+ assertEquals(new Double(Math.PI), property.getValue());
+ }
+ else if (propertyName.equals("floatValue")) {
+ assertEquals(new Float(Math.E), property.getValue());
+ }
+ else if (propertyName.equals("intValue")) {
+ assertEquals(new Integer(42), property.getValue());
+ }
+ else if (propertyName.equals("longValue")) {
+ assertEquals(new Long(3360), property.getValue());
+ }
+ else if (propertyName.equals("shortValue")) {
+ assertEquals(new Short((short) 1895), property.getValue());
+ }
+ else if (propertyName.equals("booleanValue")) {
+ assertEquals(Boolean.TRUE, property.getValue());
+ }
+ else if (propertyName.equals("stringValue")) {
+ assertEquals("testing", property.getValue());
+ }
+ else if (propertyName.equals("stringArrayValue")) {
+ assertTrue(Arrays.deepEquals(new String[] { "one", "two" }, (Object[]) property.getValue()));
+ }
+ else if (propertyName.equals("annotationValue")) {
+ MetaAnnotation ma = (MetaAnnotation) property.getValue();
+ assertEquals(AnnotationAnnotation.class.getCanonicalName(), ma.getName());
+ }
+ else if (propertyName.equals("enumValue")) {
+ MetaAnnotation.EnumValue ev = (MetaAnnotation.EnumValue) property.getValue();
+ assertEquals(TestEnum.class.getCanonicalName(), ev.getEnumType().getName());
+ assertEquals("Three", ev.getEnumValue());
+ }
+ else if (propertyName.equals("classValue")) {
+ MetaClass mc = (MetaClass) property.getValue();
+ assertEquals(Object.class.getCanonicalName(), mc.getName());
+ }
+ else {
+ fail("unexpected property " + propertyName);
+ }
+ }
+
+ MetaAnnotation.Property byteValue = annotation.getProperty("byteValue");
+ assertEquals(new Byte((byte) 1), byteValue.getValue());
+ assertNull(annotation.getProperty("freddy"));
+ }
+
+ private void assertFields(Set<? extends MetaField> set) {
+ assertEquals(2, set.size());
+ for (MetaField field : set) {
+ if (field.getName().equals("field")) {
+ assertField(field);
+ }
+ else if (field.getName().equals("serialVersionUID")) {
+ assertSerialVersionField(field);
+ }
+ else {
+ fail("unexpected field " + field.getName());
+ }
+ }
+ assertReadOnlySet(set);
+ }
+
+ private void assertField(MetaField field) {
+ assertEquals(false, field.isStatic());
+ assertIntegerArrayType(field.getType());
+ assertAnnotation(FieldAnnotation.class.getCanonicalName(), field.getAnnotations());
+ }
+
+ private void assertLongType(MetaType mt) {
+ assertNull(mt.getArrayMetaType());
+ MetaClass mc = mt.getMetaClass();
+ assertEquals(Long.TYPE.getCanonicalName(), mc.getName());
+ }
+
+ private void assertIntegerArrayType(MetaType mt) {
+ assertNull(mt.getMetaClass());
+ MetaClass mc = mt.getArrayMetaType().getMetaClass();
+ assertEquals(Integer.TYPE.getCanonicalName(), mc.getName());
+ }
+
+ private void assertSerialVersionField(MetaField field) {
+ assertEquals(true, field.isStatic());
+ assertLongType(field.getType());
+ Set<? extends MetaAnnotation> annotations = field.getAnnotations();
+ assertTrue(annotations.isEmpty());
+ assertReadOnlySet(annotations);
+ }
+
+ private void assertMethods(Set<? extends MetaMethod> set) {
+ assertEquals(4, set.size());
+ for (MetaMethod method : set) {
+ String methodName = method.getName();
+ if (methodName.equals("<init>")) {
+ assertConstructor(method);
+ }
+ else if (methodName.equals("getField")) {
+ assertGetFieldMethod(method);
+ }
+ else if (methodName.equals("getSerialVersion")) {
+ assertGetSerialVersionMethod(method);
+ }
+ else if (methodName.equals("setField")) {
+ assertSetFieldMethod(method);
+ }
+ else {
+ fail("unexpected method " + methodName);
+ }
+ }
+ assertReadOnlySet(set);
+ }
+
+ private void assertAnnotation(String annotationName, Set<? extends MetaAnnotation> set) {
+ assertEquals(1, set.size());
+ for (MetaAnnotation annotation : set) {
+ assertEquals(annotationName, annotation.getName());
+ }
+ }
+
+ private void assertGetFieldMethod(MetaMethod method) {
+ assertEquals(false, method.isStatic());
+ assertIntegerArrayType(method.getType());
+ assertAnnotation(MethodAnnotation.class.getCanonicalName(), method.getAnnotations());
+ }
+
+ private void assertGetSerialVersionMethod(MetaMethod method) {
+ assertEquals(true, method.isStatic());
+ assertLongType(method.getType());
+ assertTrue(method.getAnnotations().isEmpty());
+ }
+
+ private void assertConstructor(MetaMethod method) {
+ assertAnnotation(ConstructorAnnotation.class.getCanonicalName(), method.getAnnotations());
+ }
+
+ private void assertSetFieldMethod(MetaMethod method) {
+ Set<? extends MetaParameter> parameters = method.getParameters();
+ assertEquals(1, parameters.size());
+
+ for (MetaParameter parameter : parameters) {
+ assertAnnotation(ParameterAnnotation.class.getCanonicalName(), parameter.getAnnotations());
+ assertIntegerArrayType(parameter.getType());
+ }
+ assertReadOnlySet(parameters);
+ }
+
+ private <T> void assertReadOnlySet(Set<T> collection) {
+ Object[] cpy = collection.toArray();
+ Object[] allocatedArray = new Object[2];
+ Object[] cpy2 = collection.toArray(allocatedArray);
+ if (collection.size() <= 2) {
+ assertSame(allocatedArray, cpy2);
+ if (collection.size() == 1) {
+ assertNull(cpy2[1]);
+ }
+ }
+ int i = 0;
+ for (T element : collection) {
+ assertEquals(element, cpy[i++]);
+ }
+ if(collection.isEmpty()) {
+ return;
+ }
+
+ assertTrue(collection.containsAll(collection));
+ try {
+ collection.clear();
+ fail("Set not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+ try {
+ collection.addAll(collection);
+ fail("Set not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+
+ try {
+ collection.retainAll(collection);
+ fail("Set not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+
+ try {
+ collection.removeAll(collection);
+ fail("Set not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+
+ assertFalse(collection.contains(this));
+
+ Iterator<T> iterator = collection.iterator();
+ if (collection.isEmpty()) {
+ assertFalse(iterator.hasNext());
+ try {
+ iterator.next();
+ fail("Iterating past end of elements");
+ }
+ catch (NoSuchElementException expected) {
+ }
+
+ Set<T> singleValueSet = new HashSet<T>(1);
+ singleValueSet.add(null);
+
+ assertFalse(collection.containsAll(singleValueSet));
+ }
+ else {
+ T singleValue = iterator.next();
+ try {
+ iterator.remove();
+ fail("Iterator not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+ assertTrue(collection.contains(singleValue));
+ try {
+ collection.remove(singleValue);
+ fail("Set not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+ try {
+ collection.add(singleValue);
+ fail("Set not acting read-only");
+ }
+ catch (UnsupportedOperationException expected) {
+ }
+ }
+ }
+}
Propchange: commons/sandbox/classscan/trunk/src/test/java/org/apache/commons/classscan/test/classes/ValidateFullyDecorated.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/resources/META-INF/org.apache.commons.classscan.test.classes.FullInterface
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/resources/META-INF/org.apache.commons.classscan.test.classes.FullInterface?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/resources/META-INF/org.apache.commons.classscan.test.classes.FullInterface (added)
+++ commons/sandbox/classscan/trunk/src/test/resources/META-INF/org.apache.commons.classscan.test.classes.FullInterface Fri Jun 1 00:27:39 2012
@@ -0,0 +1,14 @@
+/*
+ * 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.
+ */
+org.apache.commons.classcan.test.classes.FullyDecorated
Added: commons/sandbox/classscan/trunk/src/test/resources/logback.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/resources/logback.xml?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/resources/logback.xml (added)
+++ commons/sandbox/classscan/trunk/src/test/resources/logback.xml Fri Jun 1 00:27:39 2012
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<configuration debug="false">
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%msg%n</pattern>
+ </layout>
+ </appender>
+
+ <root>
+ <level value="INFO" />
+ <appender-ref ref="STDOUT" />
+ </root>
+
+</configuration>
\ No newline at end of file
Propchange: commons/sandbox/classscan/trunk/src/test/resources/logback.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/--InvalidClassName--.class
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/--InvalidClassName--.class?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/--InvalidClassName--.class (added)
+++ commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/--InvalidClassName--.class Fri Jun 1 00:27:39 2012
@@ -0,0 +1,2 @@
+
+This is a file that is not a class. This file exists to force error condition.
\ No newline at end of file
Added: commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/NotAClass.class
URL: http://svn.apache.org/viewvc/commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/NotAClass.class?rev=1344950&view=auto
==============================================================================
--- commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/NotAClass.class (added)
+++ commons/sandbox/classscan/trunk/src/test/resources/org/apache/commons/classscan/test/classes/NotAClass.class Fri Jun 1 00:27:39 2012
@@ -0,0 +1,2 @@
+
+This is a file that is not a class. This file exists to force error condition.
\ No newline at end of file