jtulach@105: package org.apidesign.deadlock; jtulach@105: jtulach@105: import java.awt.Dimension; jtulach@105: import java.util.logging.Level; jtulach@105: import java.util.logging.Logger; jtulach@105: import javax.swing.JFrame; jtulach@105: import javax.swing.JLabel; jtulach@105: import javax.swing.JPanel; jtulach@105: import javax.swing.SwingUtilities; jtulach@105: import org.junit.Test; jtulach@105: import org.netbeans.junit.Log; jtulach@105: import org.netbeans.junit.NbTestCase; jtulach@105: import static org.junit.Assert.*; jtulach@105: jtulach@105: // BEGIN: deadlock.test jtulach@105: public class DeadlockTest extends NbTestCase { jtulach@132: static final Logger LOG = Logger.getLogger( jtulach@132: DeadlockTest.class.getName() jtulach@132: ); jtulach@105: jtulach@105: public DeadlockTest(String n) { jtulach@105: super(n); jtulach@105: } jtulach@105: jtulach@105: @Override jtulach@105: protected int timeOut() { jtulach@105: return 10000; jtulach@105: } jtulach@105: jtulach@105: jtulach@105: public static class StrangePanel extends LabelProvider { jtulach@105: @Override jtulach@105: public Dimension getPreferredSize () { jtulach@105: try { jtulach@105: Thread.sleep(1000); jtulach@105: JLabel sampleLabel = createLabel(); jtulach@105: return sampleLabel.getPreferredSize(); jtulach@105: } catch (InterruptedException ex) { jtulach@132: Logger.getLogger( jtulach@132: DeadlockTest.class.getName()).log(Level.SEVERE, null, ex jtulach@132: ); jtulach@105: return super.getPreferredSize(); jtulach@105: } jtulach@105: } jtulach@105: } jtulach@105: jtulach@105: jtulach@105: jtulach@105: jtulach@105: public void testCreateLabel() throws Exception { jtulach@105: final LabelProvider instance = new StrangePanel(); jtulach@105: jtulach@105: class R implements Runnable { jtulach@105: public void run() { jtulach@105: JFrame f = new JFrame(); jtulach@105: f.add(instance); jtulach@105: f.setVisible(true); jtulach@105: f.pack(); jtulach@105: } jtulach@105: } jtulach@105: jtulach@105: R showFrame = new R(); jtulach@105: SwingUtilities.invokeLater(showFrame); jtulach@105: jtulach@105: Thread.sleep(500); jtulach@105: JLabel result = instance.createLabel(); jtulach@105: assertNotNull("Creates the result", result); jtulach@105: } jtulach@105: jtulach@105: } jtulach@105: // END: deadlock.test jtulach@105: