Package rabbit.ui.internal

Source Code of rabbit.ui.internal.RabbitViewTest

/*
* Copyright 2010 The Rabbit Eclipse Plug-in Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package rabbit.ui.internal;

import rabbit.ui.Preference;
import rabbit.ui.IPage;
import rabbit.ui.internal.RabbitUI;
import rabbit.ui.internal.RabbitView;
import rabbit.ui.internal.util.PageDescriptor;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Map;

/**
* @see RabbitView
*/
public class RabbitViewTest {

  private static Shell shell;

  @BeforeClass
  public static void setUpBeforeClass() {
    Display.getDefault().syncExec(new Runnable() {
      @Override
      public void run() {
        shell = new Shell(PlatformUI.getWorkbench().getDisplay());
      }
    });
  }

  @AfterClass
  public static void tearDownAfterClass() {
    shell.dispose();
  }

  @Test
  public void testDispose() throws Exception {
    RabbitView view = new RabbitView();
    view.createPartControl(shell);
    view.dispose();

    Field toolkit = RabbitView.class.getDeclaredField("toolkit");
    toolkit.setAccessible(true);
    FormToolkit theKit = (FormToolkit) toolkit.get(view);
    Field isDisposed = FormToolkit.class.getDeclaredField("isDisposed");
    isDisposed.setAccessible(true);
    assertTrue((Boolean) isDisposed.get(theKit));
  }

  @Test
  public void testIsSameDate() throws Exception {
    Method isSameDate = RabbitView.class.getDeclaredMethod("isSameDate",
        Calendar.class, Calendar.class);
    isSameDate.setAccessible(true);

    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = (Calendar) cal1.clone();
    assertTrue((Boolean) isSameDate.invoke(null, cal1, cal2));

    cal2.add(Calendar.SECOND, 1);
    assertTrue((Boolean) isSameDate.invoke(null, cal1, cal2));

    cal2.add(Calendar.DAY_OF_MONTH, 1);
    assertFalse((Boolean) isSameDate.invoke(null, cal1, cal2));
  }

  @Test
  public void testUpdate_checkDates() throws Exception {
    RabbitView view = new RabbitView();
    view.createPartControl(shell);

    Preference pref = getPreference(view);

    Calendar fromDate = new GregorianCalendar(1999, 1, 1);
    pref.getStartDate().setTimeInMillis(fromDate.getTimeInMillis());

    Calendar toDate = new GregorianCalendar(2010, 1, 1);
    pref.getEndDate().setTimeInMillis(toDate.getTimeInMillis());

    update(view);

    assertEquals(fromDate.get(Calendar.YEAR), pref.getStartDate().get(
        Calendar.YEAR));
    assertEquals(fromDate.get(Calendar.MONTH), pref.getStartDate().get(
        Calendar.MONTH));
    assertEquals(fromDate.get(Calendar.DAY_OF_MONTH), pref.getStartDate().get(
        Calendar.DAY_OF_MONTH));

    assertEquals(toDate.get(Calendar.YEAR), pref.getEndDate()
        .get(Calendar.YEAR));
    assertEquals(toDate.get(Calendar.MONTH), pref.getEndDate().get(
        Calendar.MONTH));
    assertEquals(toDate.get(Calendar.DAY_OF_MONTH), pref.getEndDate().get(
        Calendar.DAY_OF_MONTH));
  }

  @Test
  public void testUpdate_checkPageStatus() throws Exception {
    RabbitView view = new RabbitView();
    view.createPartControl(shell);

    IPage visiblePage = null;
    for (PageDescriptor des : RabbitUI.getDefault().loadRootPages()) {
      visiblePage = des.getPage();
      display(view, des.getPage());
    }
    // All pages have been displayed before, so they should all be updated:
    Map<IPage, Boolean> status = getPageStatus(view);
    for (boolean isPageUpdated : status.values()) {
      assertTrue(isPageUpdated);
    }

    update(view);
    // Now only the current visible page is updated:
    for (Map.Entry<IPage, Boolean> entry : status.entrySet()) {
      if (entry.getKey() == visiblePage) {
        assertTrue(entry.getValue());
      } else {
        assertFalse(entry.getValue());
      }
    }

  }

  @Test
  public void testUpdateDate() {
    Calendar date = Calendar.getInstance();
    DateTime widget = new DateTime(shell, SWT.NONE);
    widget.setYear(1901);
    widget.setMonth(3);
    widget.setDay(9);
    RabbitView.updateDate(date, widget);
    assertEquals(widget.getYear(), date.get(Calendar.YEAR));
    assertEquals(widget.getMonth(), date.get(Calendar.MONTH));
    assertEquals(widget.getDay(), date.get(Calendar.DAY_OF_MONTH));
  }

  @Test
  public void testUpdateDateTime() {
    Calendar date = Calendar.getInstance();
    date.set(1999, 2, 3);
    DateTime widget = new DateTime(shell, SWT.NONE);
    RabbitView.updateDateTime(widget, date);
    assertEquals(date.get(Calendar.YEAR), widget.getYear());
    assertEquals(date.get(Calendar.MONTH), widget.getMonth());
    assertEquals(date.get(Calendar.DAY_OF_MONTH), widget.getDay());
  }

  private void display(RabbitView view, IPage page) throws Exception {
    Method display = RabbitView.class.getDeclaredMethod("display", IPage.class);
    display.setAccessible(true);
    display.invoke(view, page);
  }

  @SuppressWarnings("unchecked")
  private Map<IPage, Boolean> getPageStatus(RabbitView view) throws Exception {
    Field pageStatus = RabbitView.class.getDeclaredField("pageStatus");
    pageStatus.setAccessible(true);
    return (Map<IPage, Boolean>) pageStatus.get(view);
  }

  private Preference getPreference(RabbitView view) throws Exception {
    Field pref = RabbitView.class.getDeclaredField("preferences");
    pref.setAccessible(true);
    return (Preference) pref.get(view);
  }

  private void update(RabbitView view) throws Exception {
    Method update = RabbitView.class.getDeclaredMethod("updateView");
    update.setAccessible(true);
    update.invoke(view);
  }
}
TOP

Related Classes of rabbit.ui.internal.RabbitViewTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.