@Test
public void copy() {

	Application<Task, Dependency> app = new Application<Task, Dependency>();
	Task task = new Task("t");
	app.addVertex(task);
	Architecture<Resource, Link> arch = new Architecture<Resource, Link>();
	Resource resource = new Resource("r");
	arch.addVertex(resource);
	Mappings<Task, Resource> mappings = new Mappings<Task, Resource>();
	Mapping<Task, Resource> mapping = new Mapping<Task, Resource>("m", task, resource);
	mappings.add(mapping);
	Specification spec = new Specification(app, arch, mappings);
	Specification spec2 = Models.copy(spec);
	Assert.assertEquals(1, spec2.getApplication().getVertexCount());
	Assert.assertTrue(spec2.getApplication().containsVertex(task));
	Assert.assertEquals(1, spec2.getArchitecture().getVertexCount());
	Assert.assertTrue(spec2.getArchitecture().containsVertex(resource));
	Assert.assertEquals(1, spec2.getMappings().size());
	Assert.assertEquals(mapping, spec2.getMappings().get(task).iterator().next());
	Assert.assertEquals(mapping, spec2.getMappings().get(resource).iterator().next());
}