/*
* A CCNx library test.
*
* Copyright (C) 2008, 2009, 2011, 2012 Palo Alto Research Center, Inc.
*
* This work is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
* This work 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, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
package org.ccnx.ccn.test.impl.encoding;
import java.text.ParseException;
import junit.framework.Assert;
import org.ccnx.ccn.impl.encoding.CCNProtocolDTags;
import org.ccnx.ccn.impl.encoding.TextXMLCodec;
import org.ccnx.ccn.impl.support.Log;
import org.ccnx.ccn.protocol.CCNTime;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Test portions of the encoder/decoder infrastructure related to encoding dates
* and times. Largely superseded by CCNTime.
*/
public class TextXMLCodecTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void testTagMap() {
Log.info(Log.FAC_TEST, "Starting testTagMap");
String name;
Long tag;
for (int i=1; i <= CCNProtocolDTags.Parameters; ++i) {
name = CCNProtocolDTags.tagToString(i);
if (name != null) {
tag = CCNProtocolDTags.stringToTag(name);
Assert.assertEquals(tag.longValue(), i);
}
}
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.Interest);
Assert.assertEquals("Interest", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.ExtOpt);
Assert.assertEquals("ExtOpt", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.RootDigest);
Assert.assertEquals("RootDigest", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.Nonce);
Assert.assertEquals("Nonce", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.AnswerOriginKind);
Assert.assertEquals("AnswerOriginKind", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.Witness);
Assert.assertEquals("Witness", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.FinalBlockID);
Assert.assertEquals("FinalBlockID", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.EncryptedKey);
Assert.assertEquals("EncryptedKey", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.BinaryValue);
Assert.assertEquals("BinaryValue", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.ProfileName);
Assert.assertEquals("ProfileName", name);
name = CCNProtocolDTags.tagToString(CCNProtocolDTags.Parameters);
Assert.assertEquals("Parameters", name);
Log.info(Log.FAC_TEST, "Completed testTagMap");
}
@Test
public void testParseDateTime() {
Log.info(Log.FAC_TEST, "Starting testParseDateTime");
CCNTime now = CCNTime.now();
testDateTime(now);
now.setNanos(384);
testDateTime(now);
now.setNanos(1105384);
testDateTime(now);
now.setNanos(550105384);
testDateTime(now);
now.setNanos(550000000);
testDateTime(now);
now.setNanos(953405384);
testDateTime(now);
now.setNanos(110672800);
testDateTime(now);
Log.info(Log.FAC_TEST, "Completed testParseDateTime");
}
public void testDateTime(CCNTime testDateTime) {
String strDateTime = TextXMLCodec.formatDateTime(testDateTime);
System.out.println("DateTime: " + testDateTime + " XML version: " + strDateTime);
CCNTime parsedDateTime = null;
try {
parsedDateTime = TextXMLCodec.parseDateTime(strDateTime);
} catch (ParseException e) {
System.out.println("Exception parsing date time: " + e.getMessage());
e.printStackTrace();
Assert.fail("Failed to parse date time: " + strDateTime);
}
System.out.println("Parsed version: " + parsedDateTime);
if (!parsedDateTime.equals(testDateTime)) {
System.out.println("Time : " + parsedDateTime + "(long: " + parsedDateTime.getTime() + ") does not equal " + testDateTime + "(long: " + testDateTime.getTime() + ")");
}
Assert.assertTrue(parsedDateTime.equals(testDateTime));
}
}