[DEV] add object test

This commit is contained in:
Edouard DUPIN 2021-07-08 14:18:46 +02:00
parent a6c90e5515
commit e5db63a06b

View File

@ -0,0 +1,400 @@
/** @file
* @author Edouard DUPIN
* @copyright 2021, Edouard DUPIN, all right reserved
* @license MPL v2.0 (see license file)
*/
package test.atriasoft.exml;
import java.util.List;
import org.atriasoft.exml.Exml;
import org.atriasoft.exml.annotation.XmlAttribute;
import org.atriasoft.exml.annotation.XmlList;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class ExmlTestIntrospectionObject {
static final String NODE_NAME = "elem";
@BeforeAll
public static void beforeClass() {
Log.warning("================================================================");
}
public class SimpleObject {
@XmlAttribute
public int value1;
public float value2;
}
public class TestNodeObject {
public SimpleObject valueA;
public SimpleObject valueB;
}
@Test
public void testModelNodeObject() {
TestNodeObject elem = new TestNodeObject();
elem.valueA = new SimpleObject();
elem.valueA.value1 = 55;
elem.valueA.value2 = 12568.0f;
elem.valueB = new SimpleObject();
elem.valueB.value1 = -55;
elem.valueB.value2 = -12568.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <valueA value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </valueA>\n"
+ " <valueB value1=\"-55\">\n"
+ " <value2>-12568.0</value2>\n"
+ " </valueB>\n"
+ "</elem>", dataTest);
final TestNodeObject root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestNodeObject.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(55, root.valueA.value1);
Assertions.assertEquals(12568.0f, root.valueA.value2);
Assertions.assertEquals(-55, root.valueB.value1);
Assertions.assertEquals(-12568.0f, root.valueB.value2);
}
public class TestArrayNodeObject {
public SimpleObject[] values;
}
@Test
public void testModelArrayNodeObject() {
TestArrayNodeObject elem = new TestArrayNodeObject();
elem.values = new SimpleObject[] {new SimpleObject(), new SimpleObject(), new SimpleObject()};
elem.values[0].value1 = 55;
elem.values[0].value2 = 12568.0f;
elem.values[1].value1 = 77;
elem.values[1].value2 = 15.0f;
elem.values[2].value1 = 152654;
elem.values[2].value2 = -75.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <values value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"77\">\n"
+ " <value2>15.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"152654\">\n"
+ " <value2>-75.0</value2>\n"
+ " </values>\n"
+ "</elem>", dataTest);
final TestArrayNodeObject root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestArrayNodeObject.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(3, root.values.length);
Assertions.assertEquals(55, root.values[0].value1);
Assertions.assertEquals(12568.0f, root.values[0].value2);
Assertions.assertEquals(77, root.values[1].value1);
Assertions.assertEquals(15.0f, root.values[1].value2);
Assertions.assertEquals(152654, root.values[2].value1);
Assertions.assertEquals(-75.0f, root.values[2].value2);
}
public class TestListNodeObject {
public List<SimpleObject> values;
}
@Test
public void testModelListNodeObject() {
TestListNodeObject elem = new TestListNodeObject();
elem.values = List.of(new SimpleObject(), new SimpleObject(), new SimpleObject());
elem.values.get(0).value1 = 55;
elem.values.get(0).value2 = 12568.0f;
elem.values.get(1).value1 = 77;
elem.values.get(1).value2 = 15.0f;
elem.values.get(2).value1 = 152654;
elem.values.get(2).value2 = -75.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <values value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"77\">\n"
+ " <value2>15.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"152654\">\n"
+ " <value2>-75.0</value2>\n"
+ " </values>\n"
+ "</elem>", dataTest);
final TestListNodeObject root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestListNodeObject.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(3, root.values.size());
Assertions.assertEquals(55, root.values.get(0).value1);
Assertions.assertEquals(12568.0f, root.values.get(0).value2);
Assertions.assertEquals(77, root.values.get(1).value1);
Assertions.assertEquals(15.0f, root.values.get(1).value2);
Assertions.assertEquals(152654, root.values.get(2).value1);
Assertions.assertEquals(-75.0f, root.values.get(2).value2);
}
public class TestNodeObjectFunc {
private SimpleObject valueA;
private SimpleObject valueB;
public SimpleObject getValueA() {
return this.valueA;
}
public void setValueA(final SimpleObject valueA) {
this.valueA = valueA;
}
public SimpleObject getValueB() {
return this.valueB;
}
public void setValueB(final SimpleObject valueB) {
this.valueB = valueB;
}
}
@Test
public void testModelNodeObjectFunc() {
TestNodeObjectFunc elem = new TestNodeObjectFunc();
elem.setValueA(new SimpleObject());
elem.getValueA().value1 = 4564;
elem.getValueA().value2 = 152.0f;
elem.setValueB(new SimpleObject());
elem.getValueB().value1 = 454564;
elem.getValueB().value2 = 85422.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <valueA value1=\"4564\">\n"
+ " <value2>152.0</value2>\n"
+ " </valueA>\n"
+ " <valueB value1=\"454564\">\n"
+ " <value2>85422.0</value2>\n"
+ " </valueB>\n"
+ "</elem>", dataTest);
final TestNodeObjectFunc root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestNodeObjectFunc.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(4564, root.getValueA().value1);
Assertions.assertEquals(152.0f, root.getValueA().value2);
Assertions.assertEquals(454564, root.getValueB().value1);
Assertions.assertEquals(85422.0f, root.getValueB().value2);
}
public class TestArrayNodeObjectFunc {
private SimpleObject[] values;
public SimpleObject[] getValues() {
return this.values;
}
public void setValues(final SimpleObject[] values) {
this.values = values;
}
}
@Test
public void testModelArrayNodeObjectFunc() {
TestArrayNodeObjectFunc elem = new TestArrayNodeObjectFunc();
elem.setValues(new SimpleObject[] {new SimpleObject(), new SimpleObject(), new SimpleObject()});
elem.getValues()[0].value1 = 55;
elem.getValues()[0].value2 = 12568.0f;
elem.getValues()[1].value1 = 77;
elem.getValues()[1].value2 = 15.0f;
elem.getValues()[2].value1 = 152654;
elem.getValues()[2].value2 = -75.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <values value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"77\">\n"
+ " <value2>15.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"152654\">\n"
+ " <value2>-75.0</value2>\n"
+ " </values>\n"
+ "</elem>", dataTest);
final TestArrayNodeObjectFunc root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestArrayNodeObjectFunc.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(3, root.getValues().length);
Assertions.assertEquals(55, root.getValues()[0].value1);
Assertions.assertEquals(12568.0f, root.getValues()[0].value2);
Assertions.assertEquals(77, root.getValues()[1].value1);
Assertions.assertEquals(15.0f, root.getValues()[1].value2);
Assertions.assertEquals(152654, root.getValues()[2].value1);
Assertions.assertEquals(-75.0f, root.getValues()[2].value2);
}
// Note this is set in static to test an other part of code...
public static class TestListNodeObjectFunc {
private List<SimpleObject> values;
public List<SimpleObject> getValues() {
return this.values;
}
public void setValues(final List<SimpleObject> values) {
this.values = values;
}
}
@Test
public void testModelListNodeObjectFunc() {
TestListNodeObjectFunc elem = new TestListNodeObjectFunc();
elem.values = List.of(new SimpleObject(), new SimpleObject(), new SimpleObject());
elem.getValues().get(0).value1 = 55;
elem.getValues().get(0).value2 = 12568.0f;
elem.getValues().get(1).value1 = 77;
elem.getValues().get(1).value2 = 15.0f;
elem.getValues().get(2).value1 = 152654;
elem.getValues().get(2).value2 = -75.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <values value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"77\">\n"
+ " <value2>15.0</value2>\n"
+ " </values>\n"
+ " <values value1=\"152654\">\n"
+ " <value2>-75.0</value2>\n"
+ " </values>\n"
+ "</elem>", dataTest);
final TestListNodeObjectFunc root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestListNodeObjectFunc.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(3, root.getValues().size());
Assertions.assertEquals(55, root.getValues().get(0).value1);
Assertions.assertEquals(12568.0f, root.getValues().get(0).value2);
Assertions.assertEquals(77, root.getValues().get(1).value1);
Assertions.assertEquals(15.0f, root.getValues().get(1).value2);
Assertions.assertEquals(152654, root.getValues().get(2).value1);
Assertions.assertEquals(-75.0f, root.getValues().get(2).value2);
}
public class TestArrayNodeStructuredObjectFunc {
private SimpleObject[] values;
@XmlList(value="elem")
public SimpleObject[] getValues() {
return this.values;
}
public void setValues(final SimpleObject[] values) {
this.values = values;
}
}
@Test
public void testModelArrayNodeStructuredObjectFunc() {
TestArrayNodeStructuredObjectFunc elem = new TestArrayNodeStructuredObjectFunc();
elem.setValues(new SimpleObject[] {new SimpleObject(), new SimpleObject(), new SimpleObject()});
elem.getValues()[0].value1 = 55;
elem.getValues()[0].value2 = 12568.0f;
elem.getValues()[1].value1 = 77;
elem.getValues()[1].value2 = 15.0f;
elem.getValues()[2].value1 = 152654;
elem.getValues()[2].value2 = -75.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <values>\n"
+ " <elem value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </elem>\n"
+ " <elem value1=\"77\">\n"
+ " <value2>15.0</value2>\n"
+ " </elem>\n"
+ " <elem value1=\"152654\">\n"
+ " <value2>-75.0</value2>\n"
+ " </elem>\n"
+ " </values>\n"
+ "</elem>", dataTest);
final TestArrayNodeStructuredObjectFunc root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestArrayNodeStructuredObjectFunc.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(3, root.getValues().length);
Assertions.assertEquals(55, root.getValues()[0].value1);
Assertions.assertEquals(12568.0f, root.getValues()[0].value2);
Assertions.assertEquals(77, root.getValues()[1].value1);
Assertions.assertEquals(15.0f, root.getValues()[1].value2);
Assertions.assertEquals(152654, root.getValues()[2].value1);
Assertions.assertEquals(-75.0f, root.getValues()[2].value2);
}
// Note this is set in static to test an other part of code...
public static class TestListNodeStructuredObjectFunc {
private List<SimpleObject> values;
@XmlList(value="elem")
public List<SimpleObject> getValues() {
return this.values;
}
public void setValues(final List<SimpleObject> values) {
this.values = values;
}
}
@Test
public void testModelListNodeStructuredObjectFunc() {
TestListNodeStructuredObjectFunc elem = new TestListNodeStructuredObjectFunc();
elem.values = List.of(new SimpleObject(), new SimpleObject(), new SimpleObject());
elem.getValues().get(0).value1 = 55;
elem.getValues().get(0).value2 = 12568.0f;
elem.getValues().get(1).value1 = 77;
elem.getValues().get(1).value2 = 15.0f;
elem.getValues().get(2).value1 = 152654;
elem.getValues().get(2).value2 = -75.0f;
StringBuilder builder = new StringBuilder();
Assertions.assertDoesNotThrow(() -> Exml.generate(elem, ExmlTestIntrospectionObject.NODE_NAME, builder));
String dataTest = builder.toString();
Log.warning("data generated: " + builder.toString());
Assertions.assertEquals("<elem>\n"
+ " <values>\n"
+ " <elem value1=\"55\">\n"
+ " <value2>12568.0</value2>\n"
+ " </elem>\n"
+ " <elem value1=\"77\">\n"
+ " <value2>15.0</value2>\n"
+ " </elem>\n"
+ " <elem value1=\"152654\">\n"
+ " <value2>-75.0</value2>\n"
+ " </elem>\n"
+ " </values>\n"
+ "</elem>", dataTest);
final TestListNodeStructuredObjectFunc root = Assertions.assertDoesNotThrow(() -> Exml.parseOne(dataTest, TestListNodeStructuredObjectFunc.class, ExmlTestIntrospectionObject.NODE_NAME));
Assertions.assertEquals(3, root.getValues().size());
Assertions.assertEquals(55, root.getValues().get(0).value1);
Assertions.assertEquals(12568.0f, root.getValues().get(0).value2);
Assertions.assertEquals(77, root.getValues().get(1).value1);
Assertions.assertEquals(15.0f, root.getValues().get(1).value2);
Assertions.assertEquals(152654, root.getValues().get(2).value1);
Assertions.assertEquals(-75.0f, root.getValues().get(2).value2);
}
}