/** * $Id: ReflectUtilTest.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $ * $URL: https://source.sakaiproject.org/svn/entitybroker/trunk/utils/src/test/org/sakaiproject/entitybroker/util/reflect/ReflectUtilTest.java $ * ReflectUtilTest.java - entity-broker - Apr 13, 2008 8:26:39 AM - azeckoski ************************************************************************** * Copyright (c) 2008 The Sakai Foundation * * Licensed under the Educational Community 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.opensource.org/licenses/ECL-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.sakaiproject.entitybroker.util.reflect; import java.io.IOException; import java.io.Serializable; import java.nio.CharBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Vector; import org.azeckoski.reflectutils.ReflectUtils; import org.azeckoski.reflectutils.exceptions.FieldnameNotFoundException; import junit.framework.TestCase; /** * Testing the reflection utils * * @author Aaron Zeckoski (aaron@caret.cam.ac.uk) */ public class ReflectUtilTest extends TestCase { class TestNone { } class TestImplOne implements TestInterfaceOne { public String id = "identity"; public Long nullVal = null; } class TestImplFour implements TestInterfaceFour { private String thing; public void setThing(String thing) { this.thing = thing; } public String getThing() { return thing; } public void run() { // nothing } public int read(CharBuffer cb) throws IOException { return 0; } } /** * (f) String id = "id" <br/> * (f) String entityId = "EID" (EntityId) <br/> */ public class TestPea { public String id = "id"; @TestAnnote public String entityId = "EID"; protected String prot = "prot"; @SuppressWarnings("unused") private String priv = "priv"; } /** * int myInt = 0 (EntityId) <br/> * String myString = "woot" <br/> */ public class TestBean { private int myInt = 0; private String myString = "woot"; @TestAnnote public int getMyInt() { return myInt; } public void setMyInt(int myInt) { this.myInt = myInt; } public String getMyString() { return myString; } public void setMyString(String myString) { this.myString = myString; } } /** * Long id = 3 <br/> * String entityId = "33" (EntityId) <br/> * String extra = null <br/> * String[] sArray = {"1","2"} <br/> */ public class TestEntity { private Long id = new Long(3); private String entityId = "33"; private String extra = null; private Boolean bool = null; private String[] sArray = {"1","2"}; public String getPrefix() { return "crud"; } public String createEntity(Object entity) { return "1"; } @TestAnnote public String getEntityId() { return entityId; } public void setEntityId(String entityId) { this.entityId = entityId; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getExtra() { return extra; } public void setExtra(String extra) { this.extra = extra; } public String[] getSArray() { return sArray; } public void setSArray(String[] array) { sArray = array; } public Boolean getBool() { return bool; } public void setBool(Boolean bool) { this.bool = bool; } } /** * int id = 5 <br/> * String title = "55" <br/> * String extra = null <br/> * List<String> sList = [A,B] <br/> * Map<String, String> sMap = [A1=ONE, B2=TWO] <br/> * TestBean testBean = null <br/> * - int myInt = 0 <br/> * - String myString = "woot" <br/> * TestEntity testEntity <br/> * - Long id = 3 <br/> * - String entityId = "33" (EntityId) <br/> * - String extra = null <br/> * - String[] sArray = {"1","2"} <br/> */ public class TestNesting { private int id = 5; private String title = "55"; private String extra = null; private List<String> sList = new ArrayList<String>(); private Map<String, String> sMap = new HashMap<String, String>(); private TestBean testBean = null; private TestEntity testEntity; public TestNesting() { testEntity = new TestEntity(); sMap.put("A1", "ONE"); sMap.put("B2", "TWO"); sList.add("A"); sList.add("B"); } public TestNesting(int id, String title, String[] list) { this(); this.id = id; this.title = title; sList = Arrays.asList(list); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getExtra() { return extra; } public void setExtra(String extra) { this.extra = extra; } public List<String> getSList() { return sList; } public void setSList(List<String> list) { sList = list; } public TestBean getTestBean() { return testBean; } public void setTestBean(TestBean testBean) { this.testBean = testBean; } public TestEntity getTestEntity() { return testEntity; } public void setTestEntity(TestEntity testEntity) { this.testEntity = testEntity; } public Map<String, String> getSMap() { return sMap; } public void setSMap(Map<String, String> map) { sMap = map; } } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getFieldValue(java.lang.Object, java.lang.String)}. */ @SuppressWarnings("unchecked") public void testGetFieldValueObjectString() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); Object value = null; Object thing = null; thing = new TestEntity(); value = reflectUtil.getFieldValue( thing, "entityId"); assertNotNull(value); assertEquals("33", value); value = reflectUtil.getFieldValue( thing, "id"); assertNotNull(value); assertEquals(new Long(3), value); TestNesting nested = new TestNesting(10, "100", new String[] {"A", "B"}); value = reflectUtil.getFieldValue( nested, "id"); assertNotNull(value); assertEquals(10, value); value = reflectUtil.getFieldValue( nested, "testEntity.id"); assertNotNull(value); assertEquals(new Long(3), value); // get list value value = reflectUtil.getFieldValue( nested, "sList[0]"); assertNotNull(value); assertEquals("A", value); value = reflectUtil.getFieldValue( nested, "sList[1]"); assertNotNull(value); assertEquals("B", value); value = reflectUtil.getFieldValue( nested, "sList"); assertNotNull(value); assertEquals("A", ((List)value).get(0)); // get map value value = reflectUtil.getFieldValue( nested, "sMap(A1)"); assertNotNull(value); assertEquals("ONE", value); value = reflectUtil.getFieldValue( nested, "sMap(B2)"); assertNotNull(value); assertEquals("TWO", value); value = reflectUtil.getFieldValue( thing, "extra"); assertNull(value); value = reflectUtil.getFieldValue( thing, "sArray"); assertNotNull(value); assertTrue(value.getClass().isArray()); assertEquals("1", ((String[])value)[0]); assertEquals("2", ((String[])value)[1]); // basic pea support thing = new TestPea(); value = reflectUtil.getFieldValue( thing, "id"); assertNotNull(value); assertEquals("id", value); thing = new TestBean(); try { value = reflectUtil.getFieldValue(thing, "id"); fail("Should have thrown exception"); } catch (FieldnameNotFoundException e) { assertNotNull(e.getMessage()); } } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#setFieldValue(java.lang.Object, java.lang.String, java.lang.Object)}. */ public void testSetFieldValue() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); Object thing = null; thing = new TestBean(); reflectUtil.setFieldValue(thing, "myString", "TEST"); assertEquals("TEST", ((TestBean)thing).getMyString()); thing = new TestBean(); reflectUtil.setFieldValue(thing, "myInt", 5); assertEquals(5, ((TestBean)thing).getMyInt()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "sArray", new String[] {"A", "B", "C"}); assertEquals(3, ((TestEntity)thing).getSArray().length); assertEquals("A", ((TestEntity)thing).getSArray()[0]); assertEquals("B", ((TestEntity)thing).getSArray()[1]); assertEquals("C", ((TestEntity)thing).getSArray()[2]); thing = new TestBean(); try { reflectUtil.setFieldValue(thing, "id", "uhohes"); fail("Should have thrown exception"); } catch (FieldnameNotFoundException e) { assertNotNull(e.getMessage()); } } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#setFieldStringValue(java.lang.Object, java.lang.String, java.lang.String)}. */ public void testSetFieldStringValue() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); Object thing = null; thing = new TestBean(); reflectUtil.setFieldValue(thing, "myString", "TEST"); assertEquals("TEST", ((TestBean)thing).getMyString()); thing = new TestBean(); reflectUtil.setFieldValue(thing, "myInt", "10"); assertEquals(10, ((TestBean)thing).getMyInt()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "id", "6"); assertEquals(new Long(6), ((TestEntity)thing).getId()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "sArray", "A, B, C"); assertEquals(3, ((TestEntity)thing).getSArray().length); assertEquals("A", ((TestEntity)thing).getSArray()[0]); assertEquals("B", ((TestEntity)thing).getSArray()[1]); assertEquals("C", ((TestEntity)thing).getSArray()[2]); } public void testSetFieldValueWithConversion() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); Object thing = null; thing = new TestEntity(); reflectUtil.setFieldValue(thing, "id", "10"); assertEquals(new Long(10), ((TestEntity)thing).getId()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "id", 10); assertEquals(new Long(10), ((TestEntity)thing).getId()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "id", new String[] {"10"}); assertEquals(new Long(10), ((TestEntity)thing).getId()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "bool", true); assertEquals(Boolean.TRUE, ((TestEntity)thing).getBool()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "bool", "true"); assertEquals(Boolean.TRUE, ((TestEntity)thing).getBool()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "bool", "false"); assertEquals(Boolean.FALSE, ((TestEntity)thing).getBool()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "bool", ""); assertEquals(Boolean.FALSE, ((TestEntity)thing).getBool()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "extra", "stuff"); assertEquals("stuff", ((TestEntity)thing).getExtra()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "extra", 100); assertEquals("100", ((TestEntity)thing).getExtra()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "extra", new String[] {"stuff"}); assertEquals("stuff", ((TestEntity)thing).getExtra()); thing = new TestEntity(); reflectUtil.setFieldValue(thing, "extra", new String[] {"stuff", "plus"}); assertEquals("stuff,plus", ((TestEntity)thing).getExtra()); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getFieldTypes(java.lang.Class)}. */ public void testGetFieldTypes() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); Map<String, Class<?>> types; types = reflectUtil.getFieldTypes(TestBean.class); assertNotNull(types); assertEquals(2, types.size()); assertEquals(String.class, types.get("myString")); assertEquals(int.class, types.get("myInt")); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getFieldType(java.lang.Class, java.lang.String)}. */ public void testGetFieldType() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); Class<?> type; type = reflectUtil.getFieldType(TestBean.class, "myString"); assertNotNull(type); assertEquals(String.class, type); type = reflectUtil.getFieldType(TestBean.class, "myInt"); assertNotNull(type); assertEquals(int.class, type); type = reflectUtil.getFieldType(TestPea.class, "id"); assertNotNull(type); assertEquals(String.class, type); type = reflectUtil.getFieldType(TestNesting.class, "sList"); assertNotNull(type); assertEquals(List.class, type); type = reflectUtil.getFieldType(TestNesting.class, "sMap"); assertNotNull(type); assertEquals(Map.class, type); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getObjectValues(java.lang.Object)}. */ public void testGetObjectValues() { Map<String, Object> m = null; ReflectUtils reflectUtil = ReflectUtils.getInstance(); m = reflectUtil.getObjectValues( new TestNone() ); assertNotNull(m); assertEquals(0, m.size()); m = reflectUtil.getObjectValues( new TestPea() ); assertNotNull(m); assertEquals(2, m.size()); assertTrue(m.containsKey("id")); assertEquals("id", m.get("id")); assertTrue(m.containsKey("entityId")); assertEquals("EID", m.get("entityId")); m = reflectUtil.getObjectValues( new TestBean() ); assertNotNull(m); assertEquals(2, m.size()); assertTrue(m.containsKey("myInt")); assertTrue(m.containsKey("myString")); assertEquals(0, m.get("myInt")); assertEquals("woot", m.get("myString")); m = reflectUtil.getObjectValues( new TestEntity() ); assertNotNull(m); assertEquals(6, m.size()); assertTrue(m.containsKey("id")); assertTrue(m.containsKey("entityId")); assertTrue(m.containsKey("extra")); assertTrue(m.containsKey("sArray")); assertTrue(m.containsKey("bool")); assertTrue(m.containsKey("prefix")); assertEquals(new Long(3), m.get("id")); assertEquals("33", m.get("entityId")); assertEquals(null, m.get("extra")); assertEquals("crud", m.get("prefix")); assertTrue(m.get("sArray").getClass().isArray()); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getFieldNameWithAnnotation(java.lang.Class, java.lang.Class)}. */ public void testGetFieldNameWithAnnotation() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); String fieldName = null; fieldName = reflectUtil.getFieldNameWithAnnotation(TestBean.class, TestAnnote.class); assertEquals("myInt", fieldName); fieldName = reflectUtil.getFieldNameWithAnnotation(TestEntity.class, TestAnnote.class); assertEquals("entityId", fieldName); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getFieldValueAsString(java.lang.Object, java.lang.String, java.lang.Class)}. */ public void testGetFieldValueObjectStringClassOfQextendsAnnotation() { String value = null; ReflectUtils reflectUtil = ReflectUtils.getInstance(); try { value = reflectUtil.getFieldValueAsString( new TestBean(), "id", null); fail("Should have thrown exception"); } catch (FieldnameNotFoundException e) { assertNotNull(e.getMessage()); } value = reflectUtil.getFieldValueAsString( new TestEntity(), "extra", null); assertNull(value); value = reflectUtil.getFieldValueAsString( new TestPea(), "id", null); assertNotNull(value); assertEquals("id", value); value = reflectUtil.getFieldValueAsString( new TestEntity(), "id", null); assertNotNull(value); assertEquals("3", value); value = reflectUtil.getFieldValueAsString( new TestPea(), "id", TestAnnote.class); assertNotNull(value); assertEquals("EID", value); value = reflectUtil.getFieldValueAsString( new TestEntity(), "id", TestAnnote.class); assertNotNull(value); assertEquals("33", value); try { value = reflectUtil.getFieldValueAsString( new TestNone(), "id", TestAnnote.class); fail("Should have thrown exception"); } catch (FieldnameNotFoundException e) { assertNotNull(e.getMessage()); } } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#clone(java.lang.Object, int, java.lang.String[])}. */ public void testClone() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); TestBean tb = new TestBean(); tb.setMyInt(100); tb.setMyString("1000"); TestBean tbClone = reflectUtil.clone(tb, 0, null); assertNotNull(tbClone); assertEquals(tb.getMyInt(), tbClone.getMyInt()); assertEquals(tb.getMyString(), tbClone.getMyString()); // test skipping values tbClone = reflectUtil.clone(tb, 0, new String[] {"myInt"}); assertNotNull(tbClone); assertTrue(tb.getMyInt() != tbClone.getMyInt()); assertEquals(tb.getMyString(), tbClone.getMyString()); tbClone = reflectUtil.clone(tb, 5, null); assertNotNull(tbClone); assertEquals(tb.getMyInt(), tbClone.getMyInt()); assertEquals(tb.getMyString(), tbClone.getMyString()); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#copy(java.lang.Object, java.lang.Object, int, java.lang.String[], boolean)}. */ public void testCopy() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); TestBean orig = new TestBean(); orig.setMyInt(100); orig.setMyString("1000"); TestBean dest = new TestBean(); assertNotSame(orig.getMyInt(), dest.getMyInt()); assertNotSame(orig.getMyString(), dest.getMyString()); reflectUtil.copy(orig, dest, 0, null, false); assertNotNull(dest); assertEquals(orig.getMyInt(), dest.getMyInt()); assertEquals(orig.getMyString(), dest.getMyString()); dest = new TestBean(); reflectUtil.copy(orig, dest, 0, new String[] {"myInt"}, false); assertNotNull(dest); assertNotSame(orig.getMyInt(), dest.getMyInt()); assertEquals(orig.getMyString(), dest.getMyString()); dest = new TestBean(); reflectUtil.copy(orig, dest, 5, null, true); assertNotNull(dest); assertEquals(orig.getMyInt(), dest.getMyInt()); assertEquals(orig.getMyString(), dest.getMyString()); } public void testPopulate() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); List<String> results = null; Map<String, Object> properties = new HashMap<String, Object>(); // empty should be ok and should not change anything TestBean target = new TestBean(); results = reflectUtil.populate(target, properties); assertNotNull(results); assertEquals(0, results.size()); assertNotNull(target); assertEquals(0, target.getMyInt()); assertEquals("woot", target.getMyString()); // non matching fields should be ok properties.put("xxxxxxx", "xxxxxx"); properties.put("yyyyyyy", 1000000); results = reflectUtil.populate(target, properties); assertNotNull(results); assertEquals(0, results.size()); assertNotNull(target); assertEquals(0, target.getMyInt()); assertEquals("woot", target.getMyString()); // strings should be ok properties.put("myInt", "100"); properties.put("myString", "NEW"); results = reflectUtil.populate(target, properties); assertNotNull(results); assertEquals(2, results.size()); assertNotNull(target); assertEquals(100, target.getMyInt()); assertEquals("NEW", target.getMyString()); // string arrays should be ok also properties.put("myInt", new String[] {"1000"}); properties.put("myString", new String[] {"OLD","BLUE"}); results = reflectUtil.populate(target, properties); assertNotNull(results); assertEquals(2, results.size()); assertNotNull(target); assertEquals(1000, target.getMyInt()); assertEquals("OLD,BLUE", target.getMyString()); // objects properties.put("myInt", new Long(222)); properties.put("myString", 55555); results = reflectUtil.populate(target, properties); assertNotNull(results); assertEquals(2, results.size()); assertNotNull(target); assertEquals(222, target.getMyInt()); assertEquals("55555", target.getMyString()); } public void testPopulateFromParams() { ReflectUtils reflectUtil = ReflectUtils.getInstance(); List<String> results = null; Map<String, String[]> properties = new HashMap<String, String[]>(); TestEntity target = new TestEntity(); properties.put("id", new String[] {"1000"}); properties.put("extra", new String[] {"OLD"}); properties.put("sArray", new String[] {"AA","BB","CC"}); results = reflectUtil.populateFromParams(target, properties); assertNotNull(results); assertEquals(3, results.size()); assertNotNull(target); assertEquals(new Long(1000), target.getId()); assertEquals("OLD", target.getExtra()); assertEquals("33", target.getEntityId()); assertEquals(null, target.getBool()); assertEquals(3, target.getSArray().length); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#makeFieldNameFromMethod(java.lang.String)}. */ public void testMakeFieldNameFromMethod() { String name = null; name = ReflectUtils.makeFieldNameFromMethod("getStuff"); assertEquals("stuff", name); name = ReflectUtils.makeFieldNameFromMethod("getSomeStuff"); assertEquals("someStuff", name); name = ReflectUtils.makeFieldNameFromMethod("setStuff"); assertEquals("stuff", name); name = ReflectUtils.makeFieldNameFromMethod("isStuff"); assertEquals("stuff", name); name = ReflectUtils.makeFieldNameFromMethod("stuff"); assertEquals("stuff", name); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getSuperclasses(java.lang.Class)}. */ public void testGetSuperclasses() { List<Class<?>> superClasses = null; superClasses = ReflectUtils.getSuperclasses(TestNone.class); assertNotNull(superClasses); assertEquals(1, superClasses.size()); assertEquals(TestNone.class, superClasses.get(0)); superClasses = ReflectUtils.getSuperclasses(TestImplOne.class); assertNotNull(superClasses); assertEquals(3, superClasses.size()); assertTrue( superClasses.contains(TestImplOne.class) ); assertTrue( superClasses.contains(TestInterfaceOne.class) ); assertTrue( superClasses.contains(Serializable.class) ); superClasses = ReflectUtils.getSuperclasses(TestImplFour.class); assertNotNull(superClasses); assertTrue(superClasses.size() >= 7); assertTrue( superClasses.contains(TestImplFour.class) ); assertTrue( superClasses.contains(TestInterfaceOne.class) ); assertTrue( superClasses.contains(TestInterfaceFour.class) ); assertTrue( superClasses.contains(Serializable.class) ); assertTrue( superClasses.contains(Runnable.class) ); assertTrue( superClasses.contains(Cloneable.class) ); assertTrue( superClasses.contains(Readable.class) ); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#getClassFromCollection(java.util.Collection)}. */ @SuppressWarnings("unchecked") public void testGetClassFromCollection() { Class<?> result = null; // null returns object class result = ReflectUtils.getClassFromCollection(null); assertNotNull(result); assertEquals(Object.class, result); // empty collection is always object result = ReflectUtils.getClassFromCollection( new ArrayList<String>() ); assertNotNull(result); assertEquals(Object.class, result); // NOTE: Cannot get real type from empty collections // try with collections that have things in them List<Object> l = new ArrayList<Object>(); l.add(new String("testing")); result = ReflectUtils.getClassFromCollection(l); assertNotNull(result); assertEquals(String.class, result); HashSet<Object> s = new HashSet<Object>(); s.add(new Double(22.0)); result = ReflectUtils.getClassFromCollection(s); assertNotNull(result); assertEquals(Double.class, result); List v = new Vector<Object>(); v.add( new Integer(30) ); result = ReflectUtils.getClassFromCollection(v); assertNotNull(result); assertEquals(Integer.class, result); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#contains(T[], java.lang.Object)}. */ public void testContains() { assertFalse( ReflectUtils.contains(new String[] {}, "stuff") ); assertFalse( ReflectUtils.contains(new String[] {"apple"}, "stuff") ); assertTrue( ReflectUtils.contains(new String[] {"stuff"}, "stuff") ); assertTrue( ReflectUtils.contains(new String[] {"stuff","other","apple"}, "stuff") ); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#capitalize(java.lang.String)}. */ public void testCapitalize() { assertTrue( ReflectUtils.capitalize("lower").equals("Lower") ); assertTrue( ReflectUtils.capitalize("UPPER").equals("UPPER") ); assertTrue( ReflectUtils.capitalize("myStuff").equals("MyStuff") ); assertTrue( ReflectUtils.capitalize("MyStuff").equals("MyStuff") ); assertTrue( ReflectUtils.capitalize("").equals("") ); assertTrue( ReflectUtils.capitalize("m").equals("M") ); } /** * Test method for {@link org.sakaiproject.entitybroker.util.reflect.ReflectUtil#unCapitalize(java.lang.String)}. */ public void testUnCapitalize() { assertTrue( ReflectUtils.unCapitalize("lower").equals("lower") ); assertTrue( ReflectUtils.unCapitalize("UPPER").equals("uPPER") ); assertTrue( ReflectUtils.unCapitalize("MyStuff").equals("myStuff") ); assertTrue( ReflectUtils.unCapitalize("myStuff").equals("myStuff") ); assertTrue( ReflectUtils.unCapitalize("").equals("") ); assertTrue( ReflectUtils.unCapitalize("M").equals("m") ); } }