package com.windowtester.test.codegen;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.widgets.Widget;
import com.windowtester.codegen.SourceStringBuilder;
import com.windowtester.codegen.TestCaseBuilder;
import com.windowtester.codegen.eventstream.EventStream;
import com.windowtester.codegen.eventstream.IEventStream;
import com.windowtester.internal.runtime.IWidgetIdentifier;
import com.windowtester.internal.runtime.PropertySet;
import com.windowtester.internal.runtime.locator.IdentifierAdapter;
import com.windowtester.recorder.event.user.SemanticKeyDownEvent;
import com.windowtester.recorder.event.user.SemanticWidgetClosedEvent;
import com.windowtester.recorder.event.user.SemanticWidgetInspectionEvent;
import com.windowtester.recorder.event.user.SemanticWidgetSelectionEvent;
import com.windowtester.recorder.event.user.UISemanticEvent.EventInfo;
import com.windowtester.runtime.WT;
import com.windowtester.runtime.locator.ILocator;
import com.windowtester.ui.internal.corel.model.Event;
/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* 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:
* Google, Inc. - initial API and implementation
*******************************************************************************/
public class CodeGenFixture {
public static final String TEST_PKG = "test";
public static final String TEST_NAME = "Test";
public static TestCaseBuilder builder() {
return new TestCaseBuilder(TEST_NAME, TEST_PKG) {
@Override
protected SourceStringBuilder getStringBuilder() {
return new SourceStringBuilder(this) {
@Override
public String format(String source) {
return source; //don't format (to simplify string compare)
}
};
}
};
}
public static EventInfo mockEvent(IWidgetIdentifier wl) {
return mockEvent(Widget.class /* likely ignored */, wl);
}
public static EventInfo mockEvent(Class<?> cls, IWidgetIdentifier wl) {
EventInfo info = new EventInfo();
info.cls = cls.getName();
info.button = WT.BUTTON1;
info.hierarchyInfo = wl;
return info;
}
public static SemanticWidgetSelectionEvent mockSelect(Class<?> cls, IWidgetIdentifier wl) {
return new SemanticWidgetSelectionEvent(mockEvent(cls, wl));
}
public static SemanticWidgetClosedEvent mockClose(Class<?> cls, IWidgetIdentifier wl) {
return new SemanticWidgetClosedEvent(mockEvent(cls, wl));
}
public static SemanticWidgetInspectionEvent mockAssert(Class<?> cls, IWidgetIdentifier wl) {
return new SemanticWidgetInspectionEvent(mockEvent(cls, wl));
}
public static Event fakeSelectEvent(Class<?> cls, IWidgetIdentifier locator) {
return new Event(mockSelect(cls, locator));
}
public static Event fakeCloseEvent(Class<?> cls, IWidgetIdentifier locator) {
return new Event(mockClose(cls, locator));
}
public static Event fakeAssertEvent(Class<?> cls, IWidgetIdentifier locator, PropertySet properties) {
return new Event(mockAssert(cls, locator).withProperties(properties));
}
public static Event fakeKeyEntry(char key) {
SemanticKeyDownEvent keyDown = new SemanticKeyDownEvent(new EventInfo());
keyDown.setKey(key);
return new Event(keyDown);
}
public static EventInfo mockEvent(ILocator locator) {
return mockEvent(adaptToIdentifier(locator));
}
public static IWidgetIdentifier adaptToIdentifier(ILocator locator) {
IWidgetIdentifier identifier = null;
if (locator instanceof IWidgetIdentifier){
identifier = (IWidgetIdentifier)locator;
} else {
identifier = new IdentifierAdapter(locator);
}
return identifier;
}
public static IEventStream stream(Event ... events) {
List<Event> es = new ArrayList<Event>();
for (Event event : events) {
es.add(event);
}
return new EventStream(es);
}
}