1 package org.bouncycastle.util.encoders.test;
2 
3 import java.io.IOException;
4 
5 import org.bouncycastle.util.Strings;
6 import org.bouncycastle.util.encoders.DecoderException;
7 import org.bouncycastle.util.encoders.Hex;
8 import org.bouncycastle.util.encoders.HexEncoder;
9 
10 public class HexTest extends AbstractCoderTest
11 {
12     private static final String invalid1 = "%O4T";
13     private static final String invalid2 = "FZI4";
14     private static final String invalid3 = "ae%E";
15     private static final String invalid4 = "fO4%";
16     private static final String invalid5 = "beefe";
17     private static final String invalid6 = "beefs";
18 
HexTest( String name)19     public HexTest(
20         String    name)
21     {
22         super(name);
23     }
24 
setUp()25     protected void setUp()
26     {
27         super.setUp();
28         enc = new HexEncoder();
29     }
30 
testLength()31     public void testLength()
32     {
33         String r = "616263";
34         String v = "abc";
35 
36         assertEquals(r.length(), enc.getEncodedLength(v.length()));
37         assertEquals(v.length(), enc.getMaxDecodedLength(r.length()));
38     }
39 
paddingChar()40     protected char paddingChar()
41     {
42         return 0;
43     }
44 
isEncodedChar(char c)45     protected boolean isEncodedChar(char c)
46     {
47         if ('A' <= c && c <= 'F')
48         {
49             return true;
50         }
51         if ('a' <= c && c <= 'f')
52         {
53             return true;
54         }
55         if ('0' <= c && c <= '9')
56         {
57             return true;
58         }
59         return false;
60     }
61 
testInvalidInput()62     public void testInvalidInput()
63         throws IOException
64     {
65         String[] invalid = new String[] { invalid1, invalid2, invalid3, invalid4, invalid5, invalid6 };
66 
67         for (int i = 0; i != invalid.length; i++)
68         {
69             invalidTest(invalid[i]);
70             invalidTest(Strings.toByteArray(invalid[i]));
71         }
72     }
73 
invalidTest(String data)74     private void invalidTest(String data)
75     {
76         try
77         {
78             Hex.decode(data);
79         }
80         catch (DecoderException e)
81         {
82             return;
83         }
84 
85         fail("invalid String data parsed");
86     }
87 
invalidTest(byte[] data)88     private void invalidTest(byte[] data)
89     {
90         try
91         {
92             Hex.decode(data);
93         }
94         catch (DecoderException e)
95         {
96             return;
97         }
98 
99         fail("invalid byte data parsed");
100     }
101 }
102