Package com.googlecode.mgwt.dom.client.recognizer

Source Code of com.googlecode.mgwt.dom.client.recognizer.TapRecognizerTest

/*
* Copyright 2012 Daniel Kurka
*
* 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 com.googlecode.mgwt.dom.client.recognizer;


import com.google.gwt.event.dom.client.TouchCancelEvent;
import com.google.gwt.event.dom.client.TouchEndEvent;
import com.google.gwt.event.dom.client.TouchStartEvent;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HasHandlers;
import com.google.gwtmockito.GwtMockitoTestRunner;

import com.googlecode.mgwt.dom.client.event.tap.TapEvent;
import com.googlecode.mgwt.helper.TouchTestUtil;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;

@RunWith(GwtMockitoTestRunner.class)
public class TapRecognizerTest {
  private static final int distance = 10;

  @Mock HasHandlers hasHandlers;

  @Captor ArgumentCaptor<GwtEvent<?>> eventCaptor;

  private TapRecognizer tapRecognizer;

  @Before
  public void before() {
    tapRecognizer = new TapRecognizer(hasHandlers, distance) {
      protected com.googlecode.mgwt.dom.client.recognizer.EventPropagator getEventPropagator() {
        return new EventPropagatorStandardImpl();
      }
    };
  }

  @Test
  public void testTapRecognizerHasHandlers() {
    try {
      new TapRecognizer(null);
      Assert.fail("expected exception did not occur");
    } catch (IllegalArgumentException ignored) {
    }
  }

  @Test
  public void testTapRecognizerHasHandlersInt() {
    try {
      new TapRecognizer(hasHandlers, -1);
      Assert.fail("expected exception did not occur");
    } catch (IllegalArgumentException ignored) {
    }
  }

  @Test
  public void testSimpleTouchStartAndEnd() {
    TouchStartEvent touchStartEvent = TouchTestUtil.createTouchStartEvent(1, 2);
    tapRecognizer.onTouchStart(touchStartEvent);

    TouchEndEvent touchEndEvent = mock(TouchEndEvent.class);
    tapRecognizer.onTouchEnd(touchEndEvent);

    verify(hasHandlers).fireEvent(eventCaptor.capture());
    GwtEvent<?> event = eventCaptor.getValue();
    TapEvent tapEvent = (TapEvent) event;
    Assert.assertEquals(1, tapEvent.getStartX());
    Assert.assertEquals(2, tapEvent.getStartY());
    Assert.assertSame(hasHandlers, tapEvent.getSource());
  }

  @Test
  public void testSimpleTouchStartAndCancel() {
    TouchStartEvent touchStartEvent = TouchTestUtil.createTouchStartEvent(1, 2);
    tapRecognizer.onTouchStart(touchStartEvent);
    tapRecognizer.onTouchCancel(mock(TouchCancelEvent.class));

    verifyNoMoreInteractions(hasHandlers);
  }

  @Test
  public void testSimpleTouchStartWithMoveAndEnd() {
    tapRecognizer.onTouchStart(TouchTestUtil.createTouchStartEvent(1, 2));
    tapRecognizer.onTouchMove(TouchTestUtil.createTouchMoveEvent(2, 3));
    tapRecognizer.onTouchEnd(mock(TouchEndEvent.class));

    verify(hasHandlers).fireEvent(eventCaptor.capture());
    GwtEvent<?> event = eventCaptor.getValue();
    TapEvent tapEvent = (TapEvent) event;
    Assert.assertEquals(1, tapEvent.getStartX());
    Assert.assertEquals(2, tapEvent.getStartY());
    Assert.assertSame(hasHandlers, tapEvent.getSource());
  }

  @Test
  public void testSimpleTouchStartWithMoveAndEnd1() {

    tapRecognizer.onTouchStart(TouchTestUtil.createTouchStartEvent(1, 2));
    tapRecognizer.onTouchMove(TouchTestUtil.createTouchMoveEvent(1 + distance, 2 + distance));
    tapRecognizer.onTouchEnd(mock(TouchEndEvent.class));

    verify(hasHandlers).fireEvent(eventCaptor.capture());
    GwtEvent<?> event = eventCaptor.getValue();
    TapEvent tapEvent = (TapEvent) event;
    Assert.assertEquals(1, tapEvent.getStartX());
    Assert.assertEquals(2, tapEvent.getStartY());
    Assert.assertSame(hasHandlers, tapEvent.getSource());
  }

  @Test
  public void testSimpleTouchStartWithMoveAndEnd2() {
    tapRecognizer.onTouchStart(TouchTestUtil.createTouchStartEvent(1, 2));
    tapRecognizer.onTouchMove(TouchTestUtil.createTouchMoveEvent(1 - distance, 2 - distance));
    tapRecognizer.onTouchEnd(mock(TouchEndEvent.class));

    verify(hasHandlers).fireEvent(eventCaptor.capture());
    GwtEvent<?> event = eventCaptor.getValue();
    TapEvent tapEvent = (TapEvent) event;
    Assert.assertEquals(1, tapEvent.getStartX());
    Assert.assertEquals(2, tapEvent.getStartY());
    Assert.assertSame(hasHandlers, tapEvent.getSource());
  }

  @Test
  public void testSimpleTouchStartWithMoveAndEndNoTapRcognized() {
    tapRecognizer.onTouchStart(TouchTestUtil.createTouchStartEvent(1, 2));
    tapRecognizer.onTouchMove(TouchTestUtil.createTouchMoveEvent(2 + distance, 3 + distance));
    tapRecognizer.onTouchEnd(mock(TouchEndEvent.class));
    verifyNoMoreInteractions(hasHandlers);
  }

  @Test
  public void testSimpleTouchStartWithMoveAndEndNoTapRcognized1() {
    tapRecognizer.onTouchStart(TouchTestUtil.createTouchStartEvent(1, 2));
    tapRecognizer.onTouchMove(TouchTestUtil
        .createTouchMoveEvent(1 - distance - 1, 2 - distance - 1));
    tapRecognizer.onTouchEnd(mock(TouchEndEvent.class));
    verifyNoMoreInteractions(hasHandlers);
  }
}
TOP

Related Classes of com.googlecode.mgwt.dom.client.recognizer.TapRecognizerTest

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.