/*
* Copyright (C) 2013 Jan Pokorsky
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cz.cas.lib.proarc.common.dublincore;
import cz.cas.lib.proarc.oaidublincore.ElementType;
import cz.cas.lib.proarc.oaidublincore.OaiDcType;
import java.io.StringReader;
import java.net.URL;
import java.util.List;
import javax.xml.transform.stream.StreamSource;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author Jan Pokorsky
*/
public class DcUtilsTest {
public DcUtilsTest() {
}
@Test
public void testMarshalTitle() {
OaiDcType dc = new OaiDcType();
dc.getTitles().add(new ElementType("title", null));
dc.getTitles().add(new ElementType("", null));
dc.getTitles().add(new ElementType(null, null));
String xml = DcUtils.toXml(dc, true);
assertNotNull(xml);
// System.out.println(xml);
OaiDcType result = DcUtils.unmarshal(new StreamSource(new StringReader(xml)), OaiDcType.class);
assertNotNull(result);
// test collapse of empty elements
List<ElementType> expTitles = new OaiDcType().getTitles();
expTitles.add(new ElementType("title", null));
assertEquals(expTitles, result.getTitles());
assertEquals(dc.getTitles(), result.getTitles());
}
@Test
public void testMarshal() {
OaiDcType dc = createFullDc();
String xml = DcUtils.toXml(dc, true);
assertNotNull(xml);
// System.out.println(xml);
OaiDcType result = DcUtils.unmarshal(new StreamSource(new StringReader(xml)), OaiDcType.class);
assertNotNull(result);
assertEquals(dc.getContributors(), result.getContributors());
assertEquals(dc.getCoverages(), result.getCoverages());
assertEquals(dc.getCreators(), result.getCreators());
assertEquals(dc.getDates(), result.getDates());
assertEquals(dc.getDescriptions(), result.getDescriptions());
assertEquals(dc.getFormats(), result.getFormats());
assertEquals(dc.getIdentifiers(), result.getIdentifiers());
assertEquals(dc.getLanguages(), result.getLanguages());
assertEquals(dc.getPublishers(), result.getPublishers());
assertEquals(dc.getRelations(), result.getRelations());
assertEquals(dc.getRights(), result.getRights());
assertEquals(dc.getSources(), result.getSources());
assertEquals(dc.getSubjects(), result.getSubjects());
assertEquals(dc.getTitles(), result.getTitles());
assertEquals(dc.getTypes(), result.getTypes());
}
@Test
public void testUnmarshal() {
URL resource = DcUtilsTest.class.getResource("oai_dc.xml");
assertNotNull(resource);
OaiDcType result = DcUtils.unmarshal(resource, OaiDcType.class);
assertNotNull(result);
OaiDcType dc = createFullDc();
assertEquals(dc.getContributors(), result.getContributors());
assertEquals(dc.getCoverages(), result.getCoverages());
assertEquals(dc.getCreators(), result.getCreators());
assertEquals(dc.getDates(), result.getDates());
assertEquals(dc.getDescriptions(), result.getDescriptions());
assertEquals(dc.getFormats(), result.getFormats());
assertEquals(dc.getIdentifiers(), result.getIdentifiers());
assertEquals(dc.getLanguages(), result.getLanguages());
assertEquals(dc.getPublishers(), result.getPublishers());
assertEquals(dc.getRelations(), result.getRelations());
assertEquals(dc.getRights(), result.getRights());
assertEquals(dc.getSources(), result.getSources());
assertEquals(dc.getSubjects(), result.getSubjects());
assertEquals(dc.getTitles(), result.getTitles());
assertEquals(dc.getTypes(), result.getTypes());
}
private OaiDcType createFullDc() {
OaiDcType dc = new OaiDcType();
dc.getContributors().add(new ElementType("Contributor", "en"));
dc.getCoverages().add(new ElementType("Coverage", "en"));
dc.getCreators().add(new ElementType("Creator", "en"));
dc.getDates().add(new ElementType("Date", "en"));
dc.getDescriptions().add(new ElementType("Description", "en"));
dc.getFormats().add(new ElementType("Format", "en"));
dc.getIdentifiers().add(new ElementType("Identifier", "en"));
dc.getLanguages().add(new ElementType("Language", "en"));
dc.getPublishers().add(new ElementType("Publisher", "en"));
dc.getRelations().add(new ElementType("Relation", "en"));
dc.getRights().add(new ElementType("Right", "en"));
dc.getSources().add(new ElementType("Source", "en"));
dc.getSubjects().add(new ElementType("Subject", "en"));
dc.getTitles().add(new ElementType("Title", "en"));
dc.getTypes().add(new ElementType("Type", "en"));
return dc;
}
}