KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > bridge > EmptyNotNullNodeTest


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10
11 package org.mmbase.bridge;
12
13 import java.util.*;
14 import org.mmbase.util.Casting;
15 import org.mmbase.bridge.Field;
16 import org.mmbase.datatypes.DataType;
17 import org.w3c.dom.Document JavaDoc;
18
19 /**
20  * Test class <code>Node</code> from the bridge package. The tests are done on
21  * an empty node with 'notnull' fields.
22  *
23  * @author Michiel Meeuwissen
24  * @version $Id: EmptyNotNullNodeTest.java,v 1.12 2005/11/05 08:55:20 michiel Exp $
25  */

26 public class EmptyNotNullNodeTest extends EmptyNodeTest {
27
28     private static final String JavaDoc EMPTY_XML = "<p/>";
29
30     public EmptyNotNullNodeTest(String JavaDoc name) {
31         super(name);
32     }
33
34     public void testGetValue() {
35         for (int i = 0; i < fieldTypes.length; i++) {
36             Object JavaDoc value = node.getValue(fieldTypes[i] + "field");
37             assertTrue("Empty " + fieldTypes[i] + " field did return null, but the field is marked 'notnull'", value != null);
38         }
39     }
40
41     public void testGetByteValue() {
42         for (int i = 0; i < fieldTypes.length; i++) {
43             byte[] bytes = node.getByteValue(fieldTypes[i] + "field");
44             assertTrue("Empty " + fieldTypes[i] + " field queried as byte did not return [], but " + bytes,
45                 bytes.length == 0);
46         }
47     }
48
49     public void testGetDoubleValue() {
50         for (int i = 0; i < fieldTypes.length; i++) {
51             double value = node.getDoubleValue(fieldTypes[i] + "field");
52             if (fieldTypes[i].equals("node")) {
53                 int nodeValue = getCloud().getNodeManager("bb").getNumber();
54                 // not-null nodes MUST have a valid value.
55
assertTrue(fieldTypes[i] + " field queried as double did not return " + nodeValue + ", but " + value,
56                            value == nodeValue);
57             } else if (fieldTypes[i].equals("boolean")) {
58                 // not-null 'empty' booleans has value 0 (false)
59
assertTrue("Empty " + fieldTypes[i] + " field queried as double did not return 0, but " + value,
60                            value == 0);
61             } else if (fieldTypes[i].equals("datatype")) {
62                 Date expected = new Date();
63                 long diff = Math.abs(expected.getTime() - (long)value);
64                 assertTrue("Empty " + fieldTypes[i] + " field queried as datetime did not return " + expected + ", but " + value + "(differs " + diff + ") value:" + node.getStringValue(fieldTypes[i] + "field"), diff < 60000L); // allow for a minute differnce (duration of test or so..)
65
} else {
66                 assertTrue("Empty " + fieldTypes[i] + " field queried as double did not return -1, but " + value,
67                            value == -1.0);
68             }
69         }
70     }
71
72     public void testGetFloatValue() {
73         for (int i = 0; i < fieldTypes.length; i++) {
74             float value = node.getFloatValue(fieldTypes[i] + "field");
75             if (fieldTypes[i].equals("node")) {
76                 int nodeValue = getCloud().getNodeManager("bb").getNumber();
77                 // not-null nodes MUST have a valid value.
78
assertTrue(fieldTypes[i] + " field queried as float did not return " + nodeValue + ", but " + value,
79                         value == nodeValue);
80             } else if (fieldTypes[i].equals("boolean")) {
81                 // not-null 'empty' booleans has value 0 (false)
82
assertTrue("Empty " + fieldTypes[i] + " field queried as float did not return 0, but " + value,
83                             value == 0.0);
84             } else {
85                 assertTrue("Empty " + fieldTypes[i] + " field queried as float did not return -1, but " + value,
86                         value == -1.0);
87             }
88         }
89     }
90
91     public void testGetIntValue() {
92         for (int i = 0; i < fieldTypes.length; i++) {
93             int value = node.getIntValue(fieldTypes[i] + "field");
94             if (fieldTypes[i].equals("node")) {
95                 int nodeValue = getCloud().getNodeManager("bb").getNumber();
96                 // not-null nodes MUST have a valid value.
97
assertTrue(fieldTypes[i] + " field queried as integer did not return " + nodeValue + ", but " + value,
98                         value == nodeValue);
99             } else if (fieldTypes[i].equals("boolean")) {
100                 // not-null 'empty' booleans has value 0 (false)
101
assertTrue("Empty " + fieldTypes[i] + " field queried as integer did not return 0, but " + value,
102                             value == 0);
103             } else {
104                 assertTrue("Empty " + fieldTypes[i] + " field queried as integer did not return -1, but " + value,
105                         value == -1);
106             }
107         }
108     }
109
110     public void testGetLongValue() {
111         for (int i = 0; i < fieldTypes.length; i++) {
112             long value = node.getLongValue(fieldTypes[i] + "field");
113             if (fieldTypes[i].equals("node")) {
114                 int nodeValue = getCloud().getNodeManager("bb").getNumber();
115                 // not-null nodes MUST have a valid value.
116
assertTrue(fieldTypes[i] + " field queried as long did not return " + nodeValue + ", but " + value,
117                         value == nodeValue);
118             } else if (fieldTypes[i].equals("boolean")) {
119                 // not-null 'empty' booleans has value 0 (false)
120
assertTrue("Empty " + fieldTypes[i] + " field queried as long did not return 0, but " + value,
121                             value == 0);
122             } else {
123                 assertTrue("Empty " + fieldTypes[i] + " field queried as long did not return -1, but " + value,
124                         value == -1);
125             }
126         }
127     }
128
129     public void testGetStringValue() {
130         for (int i = 0; i < fieldTypes.length; i++) {
131             String JavaDoc value = node.getStringValue(fieldTypes[i] + "field");
132             if (fieldTypes[i].equals("node")) {
133                 String JavaDoc nodeValue = ""+getCloud().getNodeManager("bb").getNumber();
134                 // not-null nodes MUST have a valid value.
135
assertTrue(fieldTypes[i] + " field queried as string did not return \"" + nodeValue + "\", but \"" + value +"\"",
136                     nodeValue.equals(value));
137             } else if (fieldTypes[i].equals("boolean")) {
138                 // not-null 'empty' booleans has value "false"
139
assertTrue("Empty " + fieldTypes[i] + " field queried as string did not return \"false\", but \"" + value +"\"",
140                     "false".equals(value));
141             } else if (fieldTypes[i].equals("long") || fieldTypes[i].equals("int")) {
142                 // not-null 'empty' numerics has value "-1"
143
assertTrue("Empty " + fieldTypes[i] + " field queried as string did not return \"-1\", but \"" + value +"\"",
144                     "-1".equals(value));
145             } else if (fieldTypes[i].equals("double") || fieldTypes[i].equals("float")) {
146                 // not-null 'empty' numerics has value "-1"
147
assertTrue("Empty " + fieldTypes[i] + " field queried as string did not return \"-1.0\", but \"" + value +"\"",
148                     "-1.0".equals(value));
149             } else if (fieldTypes[i].equals("datetime")) {
150                 // not-null 'empty' dates return a date string
151
Field field = node.getNodeManager().getField(fieldTypes[i] + "field");
152                 String JavaDoc dateValue = (String JavaDoc) field.getDataType().getProcessor(DataType.PROCESS_GET, Field.TYPE_STRING).process(node, field, Casting.toString(new Date(-1)));
153                 assertTrue("Empty " + fieldTypes[i] + " field queried as string did not return \"" + dateValue + "\", but \"" + value +"\" " , dateValue.equals(value));
154             } else if (fieldTypes[i].equals("xml")) {
155                 // not-null 'empty' xml values return <p/>
156
assertTrue("Empty " + fieldTypes[i] + " field queried as string did not return \"" + EMPTY_XML + "\", but \"" + value +"\" " +
157                         "\n field: \"" + getBytesString(value.getBytes())+"\" teststring: \"" + getBytesString(EMPTY_XML.getBytes()) + "\"",
158                            EMPTY_XML.equals(value));
159             } else {
160                 assertTrue("Empty " + fieldTypes[i] + " field queried as string did not return an empty string, but \"" + value +"\"",
161                     "".equals(value));
162             }
163         }
164     }
165     
166     private String JavaDoc getBytesString(byte[] bytes){
167         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
168         for(int i = 0; i < bytes.length; i++){
169             sb.append(bytes[i]);
170             sb.append(",");
171         }
172       return sb.toString();
173     }
174
175     public void testGetXMLValue() {
176         for (int i = 0; i < fieldTypes.length; i++) {
177             Document JavaDoc value = node.getXMLValue(fieldTypes[i] + "field");
178             assertTrue("Empty " + fieldTypes[i] + " field queried as XML returns null", value != null);
179         }
180     }
181
182     public void testGetNodeValue() {
183         for (int i = 0; i < fieldTypes.length; i++) {
184             Node value = node.getNodeValue(fieldTypes[i] + "field");
185             if (fieldTypes[i].equals("node")) {
186                 Node nodeValue = getCloud().getNodeManager("bb");
187                 // not-null nodes MUST have a valid value.
188
assertTrue(fieldTypes[i] + " field queried as node did not return \"bb\", but \"" + value +"\"", nodeValue.equals(value));
189             } else {
190                 assertTrue("Empty " + fieldTypes[i] + " field queried as Node did not return null, but " + value, value == null);
191             }
192        }
193     }
194
195     public void testGetBooleanValue() {
196         for (int i = 0; i < fieldTypes.length; i++) {
197             boolean value = node.getBooleanValue(fieldTypes[i] + "field");
198             if (fieldTypes[i].equals("node")) {
199                 assertTrue("Empty " + fieldTypes[i] + " field queried as boolean did not return true, but " + value, value);
200             } else {
201                 assertTrue("Empty " + fieldTypes[i] + " field queried as boolean did not return false, but " + value, !value);
202             }
203        }
204     }
205
206     public void testGetDateTimeValue() {
207         for (int i = 0; i < fieldTypes.length; i++) {
208             Date value = node.getDateValue(fieldTypes[i] + "field");
209             assertTrue("Empty " + fieldTypes[i] + " field queried as datetime returned null", value != null);
210             Date expected = new Date(-1);
211             assertTrue("Empty " + fieldTypes[i] + " field queried as datetime did not return " + expected + ", but " + value + " value:" + node.getStringValue(fieldTypes[i] + "field"), value.equals(expected));
212        }
213     }
214
215     public void testGetListValue() {
216         for (int i = 0; i < fieldTypes.length; i++) {
217             List value = node.getListValue(fieldTypes[i] + "field");
218             assertTrue("Empty " + fieldTypes[i] + " field queried as list returned null", value != null);
219             if (fieldTypes[i].equals("list")) {
220                 assertTrue("Empty " + fieldTypes[i] + " field queried as list did not return [], but " + value, value.size() == 0);
221             } else {
222                 assertTrue("Empty " + fieldTypes[i] + " field queried as list did not return [<object>], but " + value, value.size() == 1);
223             }
224        }
225     }
226
227
228     public void setUp() {
229         // Create a empty test node.
230
Cloud cloud = getCloud();
231         node = cloud.getNodeManager("xx").createNode();
232         assertTrue(cloud.hasNode(cloud.getNodeManager("bb").getNumber()));
233         // not-null node-field _must_ be filled because of referential integrity conflicts
234
node.setValue("nodefield", cloud.getNodeManager("bb"));
235         node.commit();
236     }
237
238 }
239
Popular Tags