/** * A test class for HuffmanCode. * @author Dr. Jody Paul */ public class HuffmanCodeTest extends junit.framework.TestCase { public void testEncodeDecode() { String sample4 = "abcdefgfghi"; HuffmanCode huffmanC4 = new HuffmanCode(sample4); assertEquals(sample4, huffmanC4.decode(huffmanC4.encode(sample4))); java.util.Map map4 = huffmanC4.getCodeMap(); for (Character c : sample4.toCharArray()) { assertTrue(map4.get(c) != null); } for (Character c : huffmanC4.encode(sample4).toCharArray()) { assertTrue(c.equals('0') || c.equals('1')); } String sample3 = "ab cd e ab cd ab c ab a"; HuffmanCode huffmanC3 = new HuffmanCode(sample3); java.lang.String encoded3 = huffmanC3.encode(sample3); assertEquals(sample3, huffmanC3.decode(encoded3)); String sample2 = "abcdeabcdabcaba"; assertEquals(sample2, huffmanC3.decode(huffmanC3.encode(sample2))); HuffmanCode huffmanC2 = new HuffmanCode(sample2); java.lang.String encoded2 = huffmanC2.encode(sample2); assertEquals(sample2, huffmanC2.decode(encoded2)); String sample1 = "abracadabra"; HuffmanCode huffmanC1 = new HuffmanCode(sample1); java.lang.String encoded1 = huffmanC1.encode(sample1); assertEquals(sample1, huffmanC1.decode(encoded1)); String sample5 = "what light through yonder window breaks"; HuffmanCode huffmanC5 = new HuffmanCode(sample5); assertEquals(sample5, huffmanC5.decode(huffmanC5.encode(sample5))); String sample6 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789.,?" + "This is some text to provide a bias to the frequency" + "values for the code. although the intent is to ensure" + "that any message using alphanumerics is encodable, " + "it would still be nice if the code reflected some " + "characteristics of the English language."; HuffmanCode huffmanC6 = new HuffmanCode(sample6); java.util.Map map6 = huffmanC6.getCodeMap(); for (Character c : sample6.toCharArray()) { assertTrue(map6.get(c) != null); } for (Character c : huffmanC6.encode(sample6).toCharArray()) { assertTrue(c.equals('0') || c.equals('1')); } assertEquals(sample6, huffmanC6.decode(huffmanC6.encode(sample6))); for (Character c : huffmanC6.encode(sample5).toCharArray()) { assertTrue(c.equals('0') || c.equals('1')); } assertEquals(sample5, huffmanC6.decode(huffmanC6.encode(sample5))); assertEquals(sample4, huffmanC6.decode(huffmanC6.encode(sample4))); assertEquals(sample3, huffmanC6.decode(huffmanC6.encode(sample3))); assertEquals(sample2, huffmanC6.decode(huffmanC6.encode(sample2))); assertEquals(sample1, huffmanC6.decode(huffmanC6.encode(sample1))); } }