blob: 61fdcfceb43952dbc8ae67f8b6d8ce64f793c881 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2022 The University of York.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.epsilon.emc.yaml.test;
import org.eclipse.epsilon.emc.yaml.YamlModel;
import org.eclipse.epsilon.eol.EolEvaluator;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class YamlModelTests {
protected YamlModel model;
protected EolEvaluator evaluator;
@Before
public void setup() throws Exception {
model = new YamlModel();
model.setName("M");
model.setReadOnLoad(true);
model.setYamlContent(
"- firstName:" + newline()
+ " age: 45" + newline()
+ " data:" + newline()
+ " isEncrypted: true" + newline()
+ " firewall:" + newline()
+ " - type: \"true\"" + newline()
+ " - type: warning" + newline()
+ " number: 4567868" + newline()
+ "- coordinate:" + newline()
+ " x_axis: 33" + newline()
+ " y_axis: 10" + newline()
+ " lastName: Melzer" + newline()
+ " dataTypes:" + newline()
+ " - numerics" + newline()
+ " - strings" + newline()
+ " - booleans"
);
model.load();
evaluator = new EolEvaluator(model);
}
public String newline() {
return System.getProperty("line.separator");
}
@Test
public void testIsPropertyCollection() {
assertEquals(evaluator.evaluate("l_firewall.all.sc_type").toString(), "EolSequence [[type=true, type=warning]]");
}
@Test
public void testIsPropertyOneElement() {
assertEquals(evaluator.evaluate("l_firewall.all.se_type").toString(), "EolSequence [type=true]");
}
@Test
public void testGetName() {
assertEquals(evaluator.evaluate("s_number.all.first().name"), "number");
}
@Test
public void testGetType() {
assertEquals(evaluator.evaluate("s_number.all.first().type").toString(), "ScalarNode");
}
@Test
public void testGetValue() {
assertEquals(evaluator.evaluate("s_number.all.first().value"), 4567868);
}
@Test
public void testGetValueString() {
assertEquals(evaluator.evaluate("s_number.all.first().s_value"), "4567868");
}
@Test
public void testGetValueBoolean() {
assertEquals(evaluator.evaluate("l_firewall.all.se_type.first().b_value"), true);
}
@Test
public void testGetValueInteger() {
assertEquals(evaluator.evaluate("s_number.all.first().i_value"), 4567868);
}
@Test
public void testGetValueDouble() {
assertEquals(evaluator.evaluate("s_number.all.first().d_value"), 4567868.0d);
}
@Test
public void testGetValueFloat() {
assertEquals(evaluator.evaluate("s_number.all.first().f_value"), 4567868.0f);
}
@Test
public void testGetScalarNode() {
assertEquals(evaluator.evaluate("s_lastName.all.first()").toString(), "lastName=Melzer");
}
@Test
public void testGetMappingNode() {
assertEquals(evaluator.evaluate("m_data.all.first()").toString(), "data={isEncrypted=true}");
}
@Test
public void testGetListNode() {
assertEquals(evaluator.evaluate("l_firewall.all.first()").toString(), "firewall=[{type=true}, {type=warning, number=4567868}]");
}
@Test
public void testGetScalarNodes() {
assertEquals(evaluator.evaluate("ScalarNode.all").toString(), "[age=45, isEncrypted=true, type=true, type=warning, number=4567868, x_axis=33, y_axis=10, lastName=Melzer]");
}
@Test
public void testGetMappingNodes() {
assertEquals(evaluator.evaluate("MappingNode.all").toString(), "[firstName={age=45}, data={isEncrypted=true}, coordinate={x_axis=33, y_axis=10}]");
}
@Test
public void testGetListNodes() {
assertEquals(evaluator.evaluate("ListNode.all").toString(), "[firewall=[{type=true}, {type=warning, number=4567868}], dataTypes=[numerics, strings, booleans]]");
}
@Test
public void testSetNode() {
evaluator.execute("m_data.all.at(0).value = 100;");
assertEquals(evaluator.evaluate("s_data.all.at(0).value"), 100);
}
@Test
public void testDeleteNode() {
evaluator.execute("delete m_firstName.all.at(0);");
assertEquals(evaluator.evaluate("m_firstName.all").toString(), "[]");
}
@Test
public void testCreateNodes() {
String previousYamlContent = evaluator.evaluate("M.root").toString();
evaluator.execute(
"M.setRootAsList();" + newline()
+ "var root = M.root;" + newline()
+ "root.value.addRows(2);" + newline()
+ "var firstRow = root.value.at(0);" + newline()
+ "var secondRow = root.value.at(1);" + newline()
+ "var firstNameNode = new m_firstName;" + newline()
+ "var ageNode = new s_age(45);" + newline()
+ "firstNameNode.value.appendNode(ageNode);" + newline()
+ "var dataNode = new m_data;" + newline()
+ "var isEncryptedNode = new s_isEncrypted(true);" + newline()
+ "dataNode.value.appendNode(isEncryptedNode);" + newline()
+ "var firewallNode = new l_firewall(2);" + newline()
+ "var typeNode1 = new s_type(\"true\");" + newline()
+ "var typeNode2 = new s_type(\"warning\");" + newline()
+ "var numberNode = new s_number(4567868);" + newline()
+ "firewallNode.value.at(0).appendNode(typeNode1);" + newline()
+ "firewallNode.value.at(1).appendNode(typeNode2);" + newline()
+ "firewallNode.value.at(1).appendNode(numberNode);" + newline()
+ "var coordinate = new m_coordinate;" + newline()
+ "var x_axisNode = new s_x_axis(33);" + newline()
+ "var y_axisNode = new s_y_axis(10);" + newline()
+ "coordinate.value.appendNode(x_axisNode);" + newline()
+ "coordinate.value.appendNode(y_axisNode);"
+ "var lastNameNode = new s_lastName(\"Melzer\");" + newline()
+ "var dataTypesNode = new l_dataTypes(3);" + newline()
+ "dataTypesNode.value.set(0, \"numerics\");" + newline()
+ "dataTypesNode.value.set(1, \"strings\");" + newline()
+ "dataTypesNode.value.set(2, \"booleans\");" + newline()
+ "firstRow.appendNode(firstNameNode);" + newline()
+ "firstRow.appendNode(dataNode);" + newline()
+ "firstRow.appendNode(firewallNode);" + newline()
+ "secondRow.appendNode(coordinate);" + newline()
+ "secondRow.appendNode(lastNameNode);" + newline()
+ "secondRow.appendNode(dataTypesNode);");
assertEquals(previousYamlContent, evaluator.evaluate("M.root").toString());
}
}