KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openide > nodes > NodeListenerTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.openide.nodes;
21
22 import junit.framework.*;
23 import junit.textui.TestRunner;
24 import java.util.*;
25 import org.openide.nodes.*;
26
27 import org.netbeans.junit.*;
28
29 /** Tests whether notification to NodeListener is fired under Mutex.writeAccess
30  *
31  * @author Jaroslav Tulach
32  */

33 public class NodeListenerTest extends NbTestCase {
34     public NodeListenerTest(String JavaDoc name) {
35         super(name);
36     }
37
38     public static void main(String JavaDoc[] args) {
39         TestRunner.run(new NbTestSuite(NodeListenerTest.class));
40     }
41
42     /** Creates a node with children, attaches a listener and tests whether
43      * notifications are delivered under correct lock.
44      */

45     public void testCorrectMutexUsage () throws Exception JavaDoc {
46         Children.Array ch = new Children.Array ();
47         AbstractNode n = new AbstractNode (ch);
48         
49         class L extends Object JavaDoc implements NodeListener, Runnable JavaDoc {
50             private boolean run;
51             
52             public void childrenAdded (NodeMemberEvent ev) {
53                 runNows ();
54             }
55             public void childrenRemoved (NodeMemberEvent ev) {
56                 runNows ();
57             }
58             public void childrenReordered(NodeReorderEvent ev) {
59             }
60             public void nodeDestroyed (NodeEvent ev) {
61             }
62             
63             public void propertyChange (java.beans.PropertyChangeEvent JavaDoc ev) {
64             }
65             
66             public void run () {
67                 run = true;
68             }
69             
70             private void runNows () {
71                 L read = new L ();
72                 Children.MUTEX.postReadRequest (read);
73                 if (read.run) {
74                     fail ("It is possible to run read access request");
75                 }
76                 
77                 L write = new L ();
78                 Children.MUTEX.postWriteRequest (write);
79                 if (!write.run) {
80                     fail ("It is not possible to run write access request");
81                 }
82             }
83         }
84         
85         
86         L l = new L ();
87         
88         n.addNodeListener (l);
89         Node t = new AbstractNode (Children.LEAF);
90         ch.add (new Node[] { t });
91         
92         ch.remove (new Node[] { t });
93     }
94 }
95
Popular Tags