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