package org.overture.interpreter.tests.newtests;
import static org.junit.Assert.fail;
import java.util.List;
import java.util.Vector;
import org.junit.Assert;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class StringInterpreterResult
{
String result;
public final List<Message> warnings;
public final List<Message> errors;
public StringInterpreterResult(String result, Vector<Message> warnings,
Vector<Message> errors)
{
super();
this.result = result;
this.warnings = warnings;
this.errors = errors;
}
protected boolean assertEqualResults(String actual)
{
if (result == null)
{
assert false : "No result file";
}
// return expected.size() == actual.size();
if (!result.equals(actual))
{
fail("Expected result does not match actual:\n\tExpected:\n\t"
+ result + "\n\tActual:\n\t" + actual);
return false;
}
return true;
}
public void encodeResult(String filename, String result, Document doc,
Element resultElement)
{
Element message = doc.createElement("output");
message.setAttribute("object", result);
message.setAttribute("resource", filename);
message.setAttribute("value", result + "");
resultElement.appendChild(message);
}
public static String decodeResult(Node node)
{
String result = null;
for (int i = 0; i < node.getChildNodes().getLength(); i++)
{
Node cn = node.getChildNodes().item(i);
if (cn.getNodeType() == Node.ELEMENT_NODE
&& cn.getNodeName().equals("output"))
{
String nodeType = cn.getAttributes().getNamedItem("object").getNodeValue();
if (nodeType != null && !nodeType.isEmpty())
{
try
{
result = nodeType;
} catch (Exception e)
{
Assert.fail("Not able to decode object stored result");
}
}
}
}
return result;
}
public String getResult()
{
return result;
}
@Override
public String toString()
{
return "StringInterpreterResult [result=" + result + ", warnings="
+ warnings + ", errors=" + errors + "]";
}
}