blob: c3f133d4dafcd4ecfe337151b3121f5b5aa07025 [file] [log] [blame]
/*
* Copyright 2010 Google Inc.
*
* 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.google.gwt.place.shared;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
import junit.framework.TestCase;
import java.util.logging.Logger;
/**
* Eponymous test class.
*/
public class PlaceControllerTest extends TestCase {
private final class Canceler implements
PlaceChangeRequestEvent.Handler {
Place calledWith = null;
String warning = "Stop fool!";
public void onPlaceChangeRequest(PlaceChangeRequestEvent event) {
calledWith = event.getNewPlace();
event.setWarning(warning);
}
}
private static class MyPlace extends Place {
}
private class SimpleHandler implements PlaceChangeEvent.Handler {
MyPlace calledWith = null;
public void onPlaceChange(PlaceChangeEvent event) {
calledWith = (MyPlace) event.getNewPlace();
}
}
private Logger deadLogger = new Logger("shut up", null) {
};
private EventBus eventBus = new SimpleEventBus();
private MockPlaceControllerDelegate delegate = new MockPlaceControllerDelegate();
private PlaceController placeController = new PlaceController(
eventBus, delegate) {
@Override
Logger log() {
return deadLogger;
}
};
public void testConfirmCancelOnUserNav() {
SimpleHandler handler = new SimpleHandler();
eventBus.addHandler(PlaceChangeEvent.TYPE, handler);
Canceler canceler = new Canceler();
eventBus.addHandler(PlaceChangeRequestEvent.TYPE, canceler);
MyPlace place = new MyPlace();
placeController.goTo(place);
assertNull(handler.calledWith);
assertEquals(place, canceler.calledWith);
assertEquals(canceler.warning, delegate.message);
delegate.confirm = true;
placeController.goTo(place);
assertEquals(place, canceler.calledWith);
}
public void testConfirmCancelOnWindowClose() {
SimpleHandler handler = new SimpleHandler();
eventBus.addHandler(PlaceChangeEvent.TYPE, handler);
Canceler canceler = new Canceler();
eventBus.addHandler(PlaceChangeRequestEvent.TYPE, canceler);
assertNull(handler.calledWith);
assertNull(delegate.message);
delegate.close();
assertEquals(canceler.warning, delegate.message);
assertNull(handler.calledWith);
}
public void testSimple() {
SimpleHandler handler = new SimpleHandler();
eventBus.addHandler(PlaceChangeEvent.TYPE, handler);
MyPlace place1 = new MyPlace();
MyPlace place2 = new MyPlace();
placeController.goTo(place1);
assertEquals(place1, handler.calledWith);
placeController.goTo(place2);
assertEquals(place2, handler.calledWith);
}
}