/* This file is part of SlumDroid <https://code.google.com/p/slumdroid/>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License <http://www.gnu.org/licenses/gpl-3.0.txt>
* for more details.
*
* Copyright (C) 2013-2015 Gennaro Imparato
*/
package it.slumdroid.droidmodels.testcase;
import it.slumdroid.droidmodels.guitree.GuiTree;
import it.slumdroid.droidmodels.model.ActivityState;
import it.slumdroid.droidmodels.model.WidgetState;
import it.slumdroid.droidmodels.xml.ElementWrapper;
import it.slumdroid.droidmodels.xml.NodeListWrapper;
import java.util.Iterator;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
// TODO: Auto-generated Javadoc
/**
* The Class TestCaseActivity.
*/
public class TestCaseActivity extends ElementWrapper implements ActivityState {
/**
* Instantiates a new test case activity.
*/
public TestCaseActivity() {
super();
}
/**
* Instantiates a new test case activity.
*
* @param element the element
*/
public TestCaseActivity(Element element) {
super(element);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.WrapperInterface#getWrapper(org.w3c.dom.Element)
*/
public TestCaseActivity getWrapper(Element element) {
return new TestCaseActivity(element);
}
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
*/
public Iterator<WidgetState> iterator() {
return new NodeListWrapper<WidgetState> (this.element, new TestCaseWidget());
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#getName()
*/
public String getName() {
return getAttribute("name");
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#setName(java.lang.String)
*/
public void setName(String name) {
setAttribute("name", name);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#getTitle()
*/
public String getTitle() {
return getAttribute("title");
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#setTitle(java.lang.String)
*/
public void setTitle(String title) {
setAttribute("title", title);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#getId()
*/
public String getId() {
return getAttribute("id");
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#setId(java.lang.String)
*/
public void setId(String id) {
setAttribute("id", id);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#getUniqueId()
*/
public String getUniqueId() {
return getAttribute("unique_id");
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#setUniqueId(java.lang.String)
*/
public void setUniqueId(String id) {
setAttribute("unique_id", id);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#getScreenshot()
*/
public String getScreenshot() {
return getAttribute("screenshot");
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#setScreenshot(java.lang.String)
*/
public void setScreenshot(String fileName) {
setAttribute("screenshot", fileName);
}
/**
* Creates the activity.
*
* @param dom the dom
* @param tag the tag
* @return the test case activity
*/
public static TestCaseActivity createActivity(Document dom, String tag) {
return new TestCaseActivity(dom.createElement(tag));
}
/**
* Creates the activity.
*
* @param dom the dom
* @return the test case activity
*/
public static TestCaseActivity createActivity(Document dom) {
return createActivity(dom, getTag());
}
/**
* Creates the activity.
*
* @param session the session
* @return the test case activity
*/
public static TestCaseActivity createActivity(GuiTree session) {
return createActivity(session.getDom());
}
// The main purpose of this method is to create the start activity
// of a transition from the final activity of the previous one
/**
* Creates the activity.
*
* @param originalActivity the original activity
* @return the test case activity
*/
public static TestCaseActivity createActivity(ActivityState originalActivity) {
Document dom = originalActivity.getElement().getOwnerDocument();
TestCaseActivity newActivity = createActivity(dom);
return newActivity;
}
/* (non-Javadoc)
* @see java.lang.Object#clone()
*/
public TestCaseActivity clone() {
return createActivity(this);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#hasWidget(it.slumdroid.droidmodels.model.WidgetState)
*/
public boolean hasWidget(WidgetState widgetToCheck) {
for (WidgetState stored: this) {
if (widgetToCheck.equals(stored))
return true;
}
return false;
}
/**
* Gets the tag.
*
* @return the tag
*/
public static String getTag() {
return "STATE";
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#isExit()
*/
public boolean isExit() {
return getId().equals(EXIT);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#isCrash()
*/
public boolean isCrash() {
return getId().equals(CRASH);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#isFailure()
*/
public boolean isFailure() {
return getId().equals(FAILURE);
}
/* (non-Javadoc)
* @see it.slumdroid.droidmodels.model.ActivityState#markAsExit()
*/
public void markAsExit() {
setName(EXIT);
setId(EXIT);
}
}