package edu.umd.cs.piccolox.pswing;
import junit.framework.TestCase;
import javax.swing.*;
import edu.umd.cs.piccolo.PNode;
import edu.umd.cs.piccolox.PFrame;
import java.lang.ref.WeakReference;
import java.lang.ref.ReferenceQueue;
/**
* JUnit test class to exercise PSwing bugfixes.
*
* @author Stephen Chin
*/
public class PSwingTest extends TestCase {
public void testPSwing() {
PSwing pSwing = new PSwing(new JButton("test"));
PFrame frame = new PFrame();
frame.getCanvas().getLayer().addChild(pSwing);
frame.setVisible(true);
}
public void testReferences() {
WeakReference pSwing = new WeakReference(new PSwing(new JButton("test")), new ReferenceQueue());
PFrame frame = new PFrame();
frame.getCanvas().getLayer().addChild((PNode) pSwing.get());
frame.setVisible(true);
frame.getCanvas().getLayer().removeAllChildren();
for (int i=0; i<20; i++) { // make sure garbage collection has happened
System.gc();
}
assertTrue("The PSwing node should be garbage collected after removal", pSwing.isEnqueued());
}
}