/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.locale;
import java.io.IOException;
import java.util.Locale;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.XMLAssert;
import org.jdom.Document;
import org.jdom.output.XMLOutputter;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;
import static org.junit.Assert.*;
public class LocaleXmlCreatorTest
{
private LocaleService localeService;
private LocaleXmlCreator localeXmlCreator;
@Before
public void setUp()
{
this.localeService = new LocaleServiceImpl();
this.localeXmlCreator = new LocaleXmlCreator();
}
@Test
public void createDocument()
{
Locale[] locales = localeService.getLocales();
assertNotNull( locales );
Document localesDoc = localeXmlCreator.createLocalesDocument( locales );
assertNotNull( localesDoc );
}
@Test
public void createSingleLocaleDocument()
throws SAXException, IOException
{
Locale.setDefault( Locale.ENGLISH );
Locale locale = new Locale( "NO", "NO", "NB" );
Document localeDoc = localeXmlCreator.createLocalesDocument( locale );
assertNotNull( localeDoc );
String controlXml = "<locales><locale><name>no_NO_NB</name><country>NO</country><display-country>Norway</display-country>" +
"<display-language>Norwegian</display-language><display-name>Norwegian (Norway,NB)</display-name><display-variant>NB</display-variant>" +
"<iso3country>NOR</iso3country><iso3language>nor</iso3language><language>no</language><variant>NB</variant></locale></locales>";
XMLOutputter outputter = new XMLOutputter();
Diff myDiff = new Diff( controlXml, outputter.outputString( localeDoc ) );
XMLAssert.assertXMLEqual( myDiff, true );
}
@Test
public void createSingleLocaleDocumentWithInLocaleNO()
throws SAXException, IOException
{
Locale.setDefault( Locale.ENGLISH );
Locale locale = new Locale( "NO", "NO", "NB" );
Document localeDoc = localeXmlCreator.createLocaleDocument( locale, locale );
assertNotNull( localeDoc );
String controlXml = "<locales><locale><name>no_NO_NB</name><country>NO</country><display-country>Norway</display-country>" +
"<display-language>Norwegian</display-language><display-name>Norwegian (Norway,NB)</display-name><display-variant>NB</display-variant>" +
"<iso3country>NOR</iso3country><iso3language>nor</iso3language><language>no</language><variant>NB</variant>" +
"<display-country-in-locale language=\"no\">Norge</display-country-in-locale>" +
"<display-language-in-locale language=\"no\">norsk</display-language-in-locale>" +
"<display-name-in-locale language=\"no\">norsk (Norge,NB)</display-name-in-locale>" +
"<display-variant-in-locale language=\"no\">NB</display-variant-in-locale></locale></locales>";
XMLOutputter outputter = new XMLOutputter();
Diff myDiff = new Diff( controlXml, outputter.outputString( localeDoc ) );
XMLAssert.assertXMLEqual( myDiff, true );
}
@Test
public void createSingleLocaleDocumentWithInLocaleSE()
throws SAXException, IOException
{
Locale.setDefault( Locale.ENGLISH );
Locale locale = new Locale( "NO", "NO", "NB" );
Locale inLocale = new Locale( "DE" );
Document localeDoc = localeXmlCreator.createLocaleDocument( locale, inLocale );
assertNotNull( localeDoc );
String controlXml = "<locales><locale><name>no_NO_NB</name><country>NO</country><display-country>Norway</display-country>" +
"<display-language>Norwegian</display-language><display-name>Norwegian (Norway,NB)</display-name><display-variant>NB</display-variant>" +
"<iso3country>NOR</iso3country><iso3language>nor</iso3language><language>no</language><variant>NB</variant>" +
"<display-country-in-locale language=\"de\">Norwegen</display-country-in-locale>" +
"<display-language-in-locale language=\"de\">Norwegisch</display-language-in-locale>" +
"<display-name-in-locale language=\"de\">Norwegisch (Norwegen,NB)</display-name-in-locale>" +
"<display-variant-in-locale language=\"de\">NB</display-variant-in-locale></locale></locales>";
XMLOutputter outputter = new XMLOutputter();
Diff myDiff = new Diff( controlXml, outputter.outputString( localeDoc ) );
XMLAssert.assertXMLEqual( myDiff, true );
}
}