package org.openflexo;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.jdom2.JDOMException;
import org.junit.Assert;
import org.junit.Test;
import org.openflexo.model.exceptions.InvalidDataException;
import org.openflexo.model.exceptions.ModelDefinitionException;
import org.openflexo.model.factory.ModelFactory;
import org.openflexo.view.controller.FlexoServerAddressBook;
import org.openflexo.view.controller.FlexoServerInstance;
public class TestFlexoServerAddressBook {
private static final String WS_URL = "http://www.mytest.openflexo.org/ws/coucou";
private static final String URL = "http://www.mytest.openflexo.org";
private static final String NAME = "My super name";
private static final String MY_ID = "MyID";
private static final String COUCOU2 = "Coucou2";
private static final String COUCOU = "Coucou";
@Test
public void testAddressBookModel() {
ModelFactory factory = null;
try {
factory = new ModelFactory(FlexoServerAddressBook.class);
} catch (ModelDefinitionException e) {
e.printStackTrace();
Assert.fail("Model definition exception: " + e.getMessage());
}
FlexoServerAddressBook book = factory.newInstance(FlexoServerAddressBook.class);
FlexoServerInstance instance = factory.newInstance(FlexoServerInstance.class);
instance.addToUserTypes(COUCOU);
instance.addToUserTypes(COUCOU2);
instance.setID(MY_ID);
instance.setName(NAME);
instance.setURL(URL);
instance.setWSURL(WS_URL);
book.addToInstances(instance);
Assert.assertNotNull(book.getInstanceWithID(MY_ID));
Assert.assertTrue(instance == book.getInstanceWithID(MY_ID));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
factory.serialize(book, baos);
} catch (IOException e) {
// Not sure this can happen with a BAOS
e.printStackTrace();
Assert.fail("Serialization failed: " + e.getMessage());
}
try {
book = (FlexoServerAddressBook) factory.deserialize(new ByteArrayInputStream(baos.toByteArray()));
} catch (IOException e) {
e.printStackTrace();
Assert.fail("Serialization failed (IO): " + e.getMessage());
} catch (JDOMException e) {
e.printStackTrace();
Assert.fail("Serialization failed (JDOM): " + e.getMessage());
} catch (InvalidDataException e) {
e.printStackTrace();
Assert.fail("Serialization failed (invalid XML): " + e.getMessage());
} catch (ModelDefinitionException e) {
e.printStackTrace();
Assert.fail("Serialization failed (ModelDefinition): " + e.getMessage());
}
Assert.assertNotNull(book);
Assert.assertEquals(1, book.getInstances().size());
FlexoServerInstance instanceWithID = book.getInstanceWithID(MY_ID);
Assert.assertNotNull(instanceWithID);
Assert.assertEquals(2, instanceWithID.getUserTypes().size());
Assert.assertEquals(COUCOU, instanceWithID.getUserTypes().get(0));
Assert.assertEquals(COUCOU2, instanceWithID.getUserTypes().get(1));
Assert.assertEquals(WS_URL, instanceWithID.getWSURL());
Assert.assertEquals(URL, instanceWithID.getURL());
Assert.assertEquals(MY_ID, instanceWithID.getID());
Assert.assertEquals(NAME, instanceWithID.getName());
}
}