/*******************************************************************************
* Copyright (c) 2007, 2014 compeople AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* compeople AG - initial API and implementation
*******************************************************************************/
package org.eclipse.riena.ui.swt.facades.internal;
import junit.framework.TestCase;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tracker;
import org.eclipse.riena.core.test.collect.UITestCase;
import org.eclipse.riena.core.util.ReflectionUtils;
import org.eclipse.riena.ui.swt.GrabCorner;
import org.eclipse.riena.ui.swt.facades.internal.GrabCornerListenerWithTracker;
import org.eclipse.riena.ui.swt.utils.SwtUtilities;
/**
* Tests of the class {@code GrabCornerListenerWithTracker}.
*/
@UITestCase
public class GrabCornerListenerWithTrackerTest extends TestCase {
private Shell shell;
private Tracker tracker;
private GrabCornerListenerWithTracker grabCornerListener;
private GrabCorner corner;
/**
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
shell = new Shell();
corner = new GrabCorner(shell, SWT.NONE);
grabCornerListener = new GrabCornerListenerWithTracker(corner);
tracker = new Tracker(shell, SWT.DOWN | SWT.RIGHT | SWT.RESIZE);
}
/**
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
SwtUtilities.dispose(corner);
grabCornerListener = null;
SwtUtilities.dispose(tracker);
SwtUtilities.dispose(shell);
}
/**
* Test of the method {@code getTrackerBounds}
*/
public void testGetTrackerBounds() {
final Rectangle rec1 = new Rectangle(1, 2, 3, 4);
final Rectangle rec2 = new Rectangle(10, 20, 30, 40);
Rectangle[] recs = new Rectangle[] { rec1, rec2 };
tracker.setRectangles(recs);
Rectangle bounds = ReflectionUtils.invokeHidden(grabCornerListener, "getTrackerBounds", tracker);
assertEquals(rec1, bounds);
recs = new Rectangle[] {};
tracker.setRectangles(recs);
bounds = ReflectionUtils.invokeHidden(grabCornerListener, "getTrackerBounds", tracker);
assertNull(bounds);
}
/**
* Test of the method {@code setMinimumBounds}
*/
public void testSetMinimumBounds() {
final Point miniSize = new Point(200, 300);
shell.setMinimumSize(miniSize);
Rectangle rec1 = new Rectangle(1, 2, 3, 4);
Rectangle[] recs = new Rectangle[] { rec1 };
tracker.setRectangles(recs);
ReflectionUtils.invokeHidden(grabCornerListener, "setMinimumBounds", tracker);
Rectangle bounds = ReflectionUtils.invokeHidden(grabCornerListener, "getTrackerBounds", tracker);
assertEquals(miniSize.x, bounds.width);
assertEquals(miniSize.y, bounds.height);
rec1 = new Rectangle(1, 2, 300, 400);
recs = new Rectangle[] { rec1 };
tracker.setRectangles(recs);
ReflectionUtils.invokeHidden(grabCornerListener, "setMinimumBounds", tracker);
bounds = ReflectionUtils.invokeHidden(grabCornerListener, "getTrackerBounds", tracker);
assertEquals(rec1.width, bounds.width);
assertEquals(rec1.height, bounds.height);
rec1 = new Rectangle(1, 2, 30, 400);
recs = new Rectangle[] { rec1 };
tracker.setRectangles(recs);
ReflectionUtils.invokeHidden(grabCornerListener, "setMinimumBounds", tracker);
bounds = ReflectionUtils.invokeHidden(grabCornerListener, "getTrackerBounds", tracker);
assertEquals(miniSize.x, bounds.width);
assertEquals(rec1.height, bounds.height);
rec1 = new Rectangle(1, 2, 300, 40);
recs = new Rectangle[] { rec1 };
tracker.setRectangles(recs);
ReflectionUtils.invokeHidden(grabCornerListener, "setMinimumBounds", tracker);
bounds = ReflectionUtils.invokeHidden(grabCornerListener, "getTrackerBounds", tracker);
assertEquals(rec1.width, bounds.width);
assertEquals(miniSize.y, bounds.height);
}
}