1 10 11 package org.mmbase.bridge; 12 13 import org.mmbase.tests.*; 14 import java.text.*; 15 import java.util.*; 16 import org.w3c.dom.Document ; 17 18 import org.mmbase.util.*; 19 import org.mmbase.datatypes.*; 20 21 27 public class ErroneousFilledNodeTest extends BridgeTest { 28 29 protected static Object [] cases; 30 static { 31 try { 32 cases = new Object [] { 33 34 new Object [] {"integerstring", new Object [] { 36 new Integer (1232), 37 new Entry("1234", new Integer (1234)) 38 }, 39 new Object [] { 40 "abac" 41 } 42 }, 43 new Object [] {"stringinteger", new Object [] { 45 new Entry(new Integer (1232), "1232"), 46 "1234"}, 47 new Object [] { 48 "abac" 49 } 50 }, 51 new Object [] {"floatdouble", new Object [] {new Float (1232), new Entry("1234", new Float (1234))}, 53 new Object [] { 54 "abac" 55 } 56 }, 57 new Object [] {"doublefloat", new Object [] {new Double (1232), new Entry("1234", new Double (1234))}, 59 new Object [] { 60 "abac" 61 } 62 }, 63 }; 64 } catch (Exception e) { 65 } 66 } 67 68 69 public ErroneousFilledNodeTest(String name) { 70 super(name); 71 } 72 73 protected String getNodeManager() { 74 return "aaerrors"; 75 } 76 77 public void testClasses() { 78 Cloud cloud = getCloud(); 79 NodeManager nm = cloud.getNodeManager(getNodeManager()); 80 assertTrue(nm.getField("stringinteger").getDataType() instanceof IntegerDataType); 83 assertTrue(nm.getField("integerstring").getDataType() instanceof StringDataType); assertTrue(nm.getField("floatdouble").getDataType() instanceof DoubleDataType); 85 assertTrue(nm.getField("doublefloat").getDataType() instanceof FloatDataType); 86 87 } 88 89 public void testValues() { 90 91 Cloud cloud = getCloud(); 92 NodeManager nm = cloud.getNodeManager(getNodeManager()); 93 List errors = new ArrayList(); 94 for (int i = 0 ; i < cases.length; i++) { 95 Object [] kase = (Object []) cases[i]; 96 String fieldName = (String ) kase[0]; 97 Object [] validValues = (Object []) kase[1]; 98 for (int j = 0; j < validValues.length; j++) { 99 Object value = validValues[j]; 100 Object inValue; 101 Object outValue; 102 if (value instanceof Entry) { 103 inValue = ((Entry) value).getKey(); 104 outValue = ((Entry) value).getValue(); 105 } else { 106 inValue = value; 107 outValue = value; 108 } 109 Node newNode = nm.createNode(); 110 newNode.setValue(fieldName, inValue); 111 newNode.commit(); 112 Object actualOutValue = newNode.getValue(fieldName); 113 if (outValue == null ? actualOutValue == null : outValue.equals(actualOutValue)) { 114 } else { 115 errors.add("Field " + fieldName + " " + 116 (outValue != null ? " " + outValue.getClass() : "") + outValue + " != " + 117 (actualOutValue != null ? " " + actualOutValue.getClass() : "") + actualOutValue); 118 } 119 } 120 Object [] invalidValues = (Object []) kase[2]; 121 for (int k= 0; k < invalidValues.length; k++) { 122 Object invalidValue = invalidValues[k]; 123 try { 124 Node newNode = nm.createNode(); 125 newNode.setObjectValue(fieldName, invalidValue); 126 newNode.commit(); 127 errors.add("Value " + invalidValue + " for field " + fieldName + " was expected to be invalid, but evaluated to " + newNode.getValue(fieldName) + " " + nm.getField(fieldName).getDataType()); 128 } catch (Exception e) { 129 } 131 } 132 } 133 assertTrue("" + errors, errors.size() == 0); 134 } 135 136 } 137 | Popular Tags |