IQEntityTimeHandlerTest.java 2.93 KB
Newer Older
csh's avatar
csh committed
1 2 3 4 5 6 7 8 9 10 11 12 13
package org.jivesoftware.openfire.handler;

import org.dom4j.Element;
import org.jivesoftware.util.XMPPDateTimeFormat;
import org.junit.Test;
import org.xmpp.packet.IQ;

import javax.xml.bind.DatatypeConverter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

14 15 16
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

csh's avatar
csh committed
17 18 19 20 21 22 23 24
/**
 * @author csh
 */
public class IQEntityTimeHandlerTest {

    @Test
    public void testIQInfo() {
        IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler();
25 26 27 28
        assertTrue(iqEntityTimeHandler.getFeatures().hasNext());
        assertEquals(iqEntityTimeHandler.getFeatures().next(), "urn:xmpp:time");
        assertEquals(iqEntityTimeHandler.getInfo().getNamespace(), "urn:xmpp:time");
        assertEquals(iqEntityTimeHandler.getInfo().getName(), "time");
csh's avatar
csh committed
29 30 31 32 33
    }

    @Test
    public void testTimeZone() {
        IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler();
34
        assertEquals(iqEntityTimeHandler.formatsTimeZone(TimeZone.getTimeZone("GMT-8:00")), "-08:00");
csh's avatar
csh committed
35 36 37 38 39 40 41 42 43
    }

    @Test
    public void testUtcDate() {
        IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler();
        Date date = new Date();
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
44
        assertEquals(iqEntityTimeHandler.getUtcDate(date), DatatypeConverter.printDateTime(calendar));
csh's avatar
csh committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
    }

    @Test
    public void testPerformanceDatatypeConvertVsXMPPDateFormat() {

        Date date = new Date();
        Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
        calendar.setTime(date);
        long start = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {

            DatatypeConverter.printDateTime(calendar);
        }
        System.out.println(System.currentTimeMillis() - start);

        start = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            XMPPDateTimeFormat.format(date);
        }
        System.out.println(System.currentTimeMillis() - start);
    }

    @Test
    public void testIQ() {
        IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler();
        IQ input = new IQ(IQ.Type.get, "1");
        IQ result = iqEntityTimeHandler.handleIQ(input);
72 73 74 75 76 77 78
        assertEquals(result.getChildElement().getName(), "time");
        assertEquals(result.getChildElement().getNamespace().getText(), "urn:xmpp:time");
        assertEquals(result.getChildElement().content().size(), 2);
        assertTrue(result.getChildElement().content().get(0) instanceof Element);
        assertTrue(result.getChildElement().content().get(1) instanceof Element);
        assertEquals(((Element) result.getChildElement().content().get(0)).getName(), "tzo");
        assertEquals(((Element) result.getChildElement().content().get(1)).getName(), "utc");
csh's avatar
csh committed
79 80
    }
}