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; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * @author csh */ public class IQEntityTimeHandlerTest { @Test public void testIQInfo() { IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler(); assertTrue(iqEntityTimeHandler.getFeatures().hasNext()); assertEquals(iqEntityTimeHandler.getFeatures().next(), "urn:xmpp:time"); assertEquals(iqEntityTimeHandler.getInfo().getNamespace(), "urn:xmpp:time"); assertEquals(iqEntityTimeHandler.getInfo().getName(), "time"); } @Test public void testTimeZone() { IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler(); assertEquals(iqEntityTimeHandler.formatsTimeZone(TimeZone.getTimeZone("GMT-8:00")), "-08:00"); } @Test public void testUtcDate() { IQEntityTimeHandler iqEntityTimeHandler = new IQEntityTimeHandler(); Date date = new Date(); Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.setTimeZone(TimeZone.getTimeZone("GMT")); assertEquals(iqEntityTimeHandler.getUtcDate(date), DatatypeConverter.printDateTime(calendar)); } @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); 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"); } }