samples/deadlock/test/org/apidesign/deadlock/DeadlockTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:58:11 +0200
changeset 154 0fd5e9c500b9
parent 153 b5cbb797ec0a
child 263 7e8e995065c5
permissions -rw-r--r--
Merge: Geertjan's changs up to 2000
     1 package org.apidesign.deadlock;
     2 
     3 import java.awt.Dimension;
     4 import java.util.logging.Level;
     5 import java.util.logging.Logger;
     6 import javax.swing.JFrame;
     7 import javax.swing.JLabel;
     8 import javax.swing.JPanel;
     9 import javax.swing.SwingUtilities;
    10 import org.junit.Test;
    11 import org.netbeans.junit.Log;
    12 import org.netbeans.junit.NbTestCase;
    13 import static org.junit.Assert.*;
    14 
    15 // BEGIN: deadlock.test
    16 public class DeadlockTest extends NbTestCase {
    17     static final Logger LOG = Logger.getLogger(
    18         DeadlockTest.class.getName()
    19     );
    20     
    21     public DeadlockTest(String n) {
    22         super(n);
    23     }
    24 
    25     @Override
    26     protected int timeOut() {
    27         return 10000;
    28     }
    29     
    30     
    31     public static class StrangePanel extends LabelProvider {
    32         @Override
    33         public Dimension getPreferredSize () {
    34             try {
    35                 Thread.sleep(1000);
    36                 JLabel sampleLabel = createLabel();
    37                 return sampleLabel.getPreferredSize();
    38             } catch (InterruptedException ex) {
    39                 Logger l = Logger.getLogger(
    40                     DeadlockTest.class.getName()
    41                 );
    42                 l.log(Level.SEVERE, null, ex);
    43                 return super.getPreferredSize();
    44             }
    45         }
    46     }
    47     
    48     
    49     
    50 
    51     public void testCreateLabel() throws Exception {
    52         final LabelProvider instance = new StrangePanel();
    53         
    54         class R implements Runnable {
    55             public void run() {
    56                 JFrame f = new JFrame();
    57                 f.add(instance);
    58                 f.setVisible(true);
    59                 f.pack();
    60             }
    61         }
    62 
    63         R showFrame = new R();
    64         SwingUtilities.invokeLater(showFrame);
    65         
    66         Thread.sleep(500);
    67         JLabel result = instance.createLabel();
    68         assertNotNull("Creates the result", result);
    69     }
    70 
    71 }
    72 // END: deadlock.test
    73