001    package org.hackystat.sensor.xmldata.util;
002    
003    import junit.framework.TestCase;
004    import java.util.ArrayList;
005    import java.util.List;
006    import java.util.Arrays;
007    
008    /**
009     * Tests the StringListCodec implementation.
010     *
011     * @author    Philip Johnson
012     * @version   $Id: TestStringListCodec.java,v 1.1.1.1 2005/10/20 23:56:44 johnson Exp $
013     */
014    public class TestStringListCodec extends TestCase {
015    
016      /**
017       * Tests the stringlistcodec method.
018       *
019       * @exception Exception  if an error occurs
020       */
021      public void testStringListCodec() throws Exception {
022        // Test simple.
023        String[] stringList1 = {"abc", "defg"};
024        List<String> originalList = Arrays.asList(stringList1);
025        String encoded = StringListCodec.encode(originalList);
026        List<String> decodedList = StringListCodec.decode(encoded);
027        assertEquals("Testing simple list", originalList, decodedList);
028    
029        String[] stringList2 = {"abc", "defg", "", "hijklmnop"};
030        List<String> originalList2 = Arrays.asList(stringList2);
031        String encoded2 = StringListCodec.encode(Arrays.asList(stringList2));
032        List<String> decodedList2 = StringListCodec.decode(encoded2);
033        assertEquals("Testing empty list item", originalList2, decodedList2);
034    
035        List<String> emptyList = new ArrayList<String>();
036        String encodedEmpty = StringListCodec.encode(emptyList);
037        List<String> decodedEmpty = StringListCodec.decode(encodedEmpty);
038        assertEquals("Testing degenerate list", emptyList, decodedEmpty);
039      }
040      
041      /**
042       * Tests whether line breaks are coverted or not.
043       * 
044       * @throws Exception If test fails.
045       */
046      public void testLineBreak() throws Exception {
047        ArrayList<String> original = new ArrayList<String>();
048        original.add("\r\n00\r\n00\r\n");
049        original.add("\r11\r11\r");
050        original.add("\n22\n22\n");
051        String encodedString = StringListCodec.encode(original);    
052    
053        List<String> decoded = StringListCodec.decode(encodedString);     
054        assertEquals("LineBreak Test 1", original.size(), decoded.size());
055        assertEquals("LineBreak Test 2", "\n00\n00\n", decoded.get(0));
056        assertEquals("LineBreak Test 3", "\n11\n11\n", decoded.get(1));    
057        assertEquals("LineBreak Test 4", "\n22\n22\n", decoded.get(2));    
058      }
059    }