samples/deadlock/test/org/apidesign/deadlock/DeadlockTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:58:08 +0200
changeset 153 b5cbb797ec0a
parent 133 50bf1b976c0d
child 154 0fd5e9c500b9
permissions -rw-r--r--
up to line 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(DeadlockTest.class.getName());
    18     
    19     public DeadlockTest(String n) {
    20         super(n);
    21     }
    22 
    23     @Override
    24     protected int timeOut() {
    25         return 10000;
    26     }
    27     
    28     
    29     public static class StrangePanel extends LabelProvider {
    30         @Override
    31         public Dimension getPreferredSize () {
    32             try {
    33                 Thread.sleep(1000);
    34                 JLabel sampleLabel = createLabel();
    35                 return sampleLabel.getPreferredSize();
    36             } catch (InterruptedException ex) {
    37                 Logger.getLogger(DeadlockTest.class.getName()).log(Level.SEVERE, null, ex);
    38                 return super.getPreferredSize();
    39             }
    40         }
    41     }
    42     
    43     
    44     
    45 
    46     public void testCreateLabel() throws Exception {
    47         final LabelProvider instance = new StrangePanel();
    48         
    49         class R implements Runnable {
    50             public void run() {
    51                 JFrame f = new JFrame();
    52                 f.add(instance);
    53                 f.setVisible(true);
    54                 f.pack();
    55             }
    56         }
    57 
    58         R showFrame = new R();
    59         SwingUtilities.invokeLater(showFrame);
    60         
    61         Thread.sleep(500);
    62         JLabel result = instance.createLabel();
    63         assertNotNull("Creates the result", result);
    64     }
    65 
    66 }
    67 // END: deadlock.test
    68