package com.mumux.androidtesting.scenario;
import com.mumux.androidtesting.actions.Action;
import com.mumux.androidtesting.utils.StringJoiner;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class Scenario {
// region Private Fields
public final String name; // Scenario must have a name
private final List<Action> actions = new ArrayList<>();
public Scenario(String name) {
this.name = name;
}
// endregion
// region Utils
public boolean isRootRequired() {
for (Action action : actions) {
if (action.isRootRequired()) {
return true;
}
}
return false;
}
// endregion
// region Accessors
public List<Action> getActions() {
return actions;
}
public void addAction(Action action) {
actions.add(action);
}
// endregion
// region External Representation
public String toString() {
StringJoiner joiner = new StringJoiner("\n");
joiner.add("# " + name);
for (Action action : actions) {
joiner.add(action.toString());
}
return joiner.toString();
}
public JSONObject toJson() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("name", name);
} catch (JSONException e) {
e.printStackTrace();
}
JSONArray jsonArray = new JSONArray();
for (Action action : actions) {
jsonArray.put(action.toJson());
}
try {
jsonObject.put("actions", jsonArray);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}
// endregion
// region Parsing
// endregion
}