Package org.geoserver.wms.capabilities

Source Code of org.geoserver.wms.capabilities.DimensionHelperTest

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.capabilities;

import static org.junit.Assert.assertEquals;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Random;
import java.util.TimeZone;

import org.geoserver.catalog.DimensionInfo;
import org.geoserver.catalog.DimensionPresentation;
import org.geoserver.catalog.impl.DimensionInfoImpl;
import org.geoserver.util.ISO8601Formatter;
import org.geoserver.wms.WMS;
import org.geoserver.wms.capabilities.DimensionHelper.Mode;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.Attributes;

import com.vividsolutions.jts.util.Assert;

/**
* A test for proper ISO8601 formatting.
* @author Ian Schneider <ischneider@opengeo.org>
*/
public class DimensionHelperTest {

    protected DimensionHelper dimensionHelper;

    @Before
    public void setUp() {
       
        dimensionHelper = new DimensionHelper(Mode.WMS13, WMS.get()) {

            @Override
            protected void element(String element, String content, Attributes atts) {
                // Capabilities_1_3_0_Translator.this.element(element, content, atts);
            }

            @Override
            protected void element(String element, String content) {
                // Capabilities_1_3_0_Translator.this.element(element, content);
            }
        };
    }
   
    @Test
    public void testGetCustomDomainRepresentation() {
        final String[] vals=new String[]{"value with spaces", "value", "  other values "};
        final List<String> values=new ArrayList<String>();
        for (String val : vals)
            values.add(val);
        DimensionInfo dimensionInfo=new DimensionInfoImpl();
        dimensionInfo.setPresentation(DimensionPresentation.LIST);
        dimensionInfo.setResolution(new BigDecimal(1));
        String customDimRepr=dimensionHelper.getCustomDomainRepresentation(dimensionInfo, values);
        //value with spaces,value
        Assert.equals(customDimRepr, vals[0]+","+vals[1]+","+vals[2].trim());
        //System.out.print(vals.toString());

    }
   
    @Test
    public void testNegativeYears() {
        ISO8601Formatter fmt = new ISO8601Formatter();
       
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTimeZone(TimeZone.getTimeZone("GMT"));
        cal.clear();

        // base assertion
        cal.set(Calendar.YEAR, 1);
        assertEquals("0001-01-01T00:00:00.000Z", fmt.format(cal.getTime()));
       
        // according to the spec, the year before is year 0000
        cal.add(Calendar.YEAR, -1);
        assertEquals("0000-01-01T00:00:00.000Z", fmt.format(cal.getTime()));
       
        // and now where negative territory
        cal.add(Calendar.YEAR, -1);
        assertEquals("-0001-01-01T00:00:00.000Z", fmt.format(cal.getTime()));
       
        // and real negative
        cal.set(Calendar.YEAR, 265000001);
        assertEquals("-265000000-01-01T00:00:00.000Z", fmt.format(cal.getTime()));
    }
   
    /**
     * The goal if this test is to verify behavior of a similar, but not complete,
     * format provided by the standard libraries. The incomplete pattern does
     * not support BC dates properly, so we will not test compliance here.
     *
     * The random seed is not specified to allow various test runs broader coverage.
     */
    @Test
    public void testFormatterFuzz() {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
       
        ISO8601Formatter fmt = new ISO8601Formatter();
       
        GregorianCalendar cal = new GregorianCalendar();
        Random r = new Random();
        for (int i = 0; i < 1000; i++) {
            cal.set(Calendar.YEAR, 1 + r.nextInt(3000));
            cal.set(Calendar.DAY_OF_YEAR, 1 + r.nextInt(365));
            cal.set(Calendar.HOUR_OF_DAY, r.nextInt(24));
            cal.set(Calendar.MINUTE, r.nextInt(60));
            cal.set(Calendar.SECOND, r.nextInt(60));
            cal.set(Calendar.MILLISECOND, r.nextInt(1000));
            assertEquals(df.format(cal.getTime()), fmt.format(cal.getTime()));
        }
    }

    @Test
    public void testPadding() throws ParseException {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
        ISO8601Formatter fmt = new ISO8601Formatter();
       
        assertEquals("0010-01-01T00:01:10.001Z", fmt.format(df.parse("0010-01-01T00:01:10.001")));
        assertEquals("0100-01-01T00:01:10.011Z", fmt.format(df.parse("0100-01-01T00:01:10.011")));
        assertEquals("1000-01-01T00:01:10.111Z", fmt.format(df.parse("1000-01-01T00:01:10.111")));
    }
   
}
TOP

Related Classes of org.geoserver.wms.capabilities.DimensionHelperTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.