| /* |
| * 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.logical.shared.ValueChangeEvent; |
| import com.google.gwt.event.logical.shared.ValueChangeHandler; |
| import com.google.gwt.event.shared.EventBus; |
| import com.google.gwt.event.shared.HandlerRegistration; |
| import com.google.gwt.event.shared.SimpleEventBus; |
| import com.google.gwt.place.testplaces.Place1; |
| import com.google.gwt.place.testplaces.Place2; |
| |
| import junit.framework.TestCase; |
| |
| import java.util.logging.Logger; |
| |
| /** |
| * Eponymous unit test. |
| */ |
| public class PlaceHistoryHandlerTest extends TestCase { |
| private static class MockHistorian implements |
| PlaceHistoryHandler.Historian { |
| final HandlerRegistration registration = new Registration(); |
| |
| ValueChangeHandler<String> handler; |
| String token = ""; |
| |
| @Override |
| public HandlerRegistration addValueChangeHandler( |
| ValueChangeHandler<String> valueChangeHandler) { |
| this.handler = valueChangeHandler; |
| return registration; |
| } |
| |
| @Override |
| public String getToken() { |
| return token; |
| } |
| |
| @Override |
| public void newItem(String token, boolean issueEvent) { |
| assertFalse(issueEvent); |
| this.token = token; |
| } |
| |
| public void postToken(String string) { |
| handler.onValueChange(new ValueChangeEvent<String>(string) { |
| }); |
| } |
| } |
| |
| private static class MockPlaceHistoryMapper implements PlaceHistoryMapper { |
| |
| @Override |
| public Place getPlace(String token) { |
| if (TOKEN1.equals(token)) { |
| return PLACE1; |
| } |
| if (TOKEN2.equals(token)) { |
| return PLACE2; |
| } |
| |
| return null; |
| } |
| |
| @Override |
| public String getToken(Place place) { |
| if (place == PLACE1) { |
| return TOKEN1; |
| } |
| if (place == PLACE2) { |
| return TOKEN2; |
| } |
| |
| return null; |
| } |
| } |
| |
| private static class Registration implements HandlerRegistration { |
| @Override |
| public void removeHandler() { |
| throw new UnsupportedOperationException("Auto-generated method stub"); |
| } |
| } |
| |
| private class Subject extends PlaceHistoryHandler { |
| |
| Subject(PlaceHistoryMapper mapper, Historian historian) { |
| super(mapper, historian); |
| } |
| |
| @Override |
| Logger log() { |
| return deadLogger; |
| } |
| } |
| |
| private static final String TOKEN1 = "t1"; |
| |
| private static final String TOKEN2 = "token2"; |
| |
| private static final Place1 PLACE1 = new Place1("able"); |
| |
| private static final Place2 PLACE2 = new Place2("baker"); |
| |
| Logger deadLogger = new Logger("shut up", null) { |
| }; |
| |
| PlaceController placeController; |
| |
| MockHistorian historian; |
| |
| Subject subject; |
| |
| final Place defaultPlace = new Place() { |
| }; |
| |
| public void testEmptyToken() { |
| historian.postToken(""); |
| assertEquals(defaultPlace, placeController.getWhere()); |
| } |
| |
| public void testGoToDefaultPlace() { |
| placeController.goTo(defaultPlace); |
| assertEquals("", historian.token); |
| } |
| |
| public void testPlaceChange() { |
| placeController.goTo(PLACE1); |
| assertEquals(TOKEN1, historian.token); |
| placeController.goTo(PLACE2); |
| assertEquals(TOKEN2, historian.token); |
| } |
| |
| public void testProperToken() { |
| historian.postToken(TOKEN1); |
| assertEquals(PLACE1, placeController.getWhere()); |
| |
| historian.postToken(TOKEN2); |
| assertEquals(PLACE2, placeController.getWhere()); |
| } |
| |
| public void testUnknownToken() { |
| historian.postToken("abcdefghijklmnop"); |
| assertEquals(defaultPlace, placeController.getWhere()); |
| } |
| |
| @Override |
| protected void setUp() { |
| EventBus eventBus = new SimpleEventBus(); |
| historian = new MockHistorian(); |
| placeController = new PlaceController(eventBus, |
| new MockPlaceControllerDelegate()) { |
| @Override |
| Logger log() { |
| return deadLogger; |
| } |
| }; |
| subject = new Subject(new MockPlaceHistoryMapper(), historian); |
| subject.register(placeController, eventBus, defaultPlace); |
| }; |
| } |