1919import java .io .ByteArrayInputStream ;
2020import java .io .File ;
2121import java .io .IOException ;
22+ import java .lang .reflect .Field ;
23+ import java .lang .reflect .Modifier ;
2224import java .nio .ByteBuffer ;
2325import java .security .MessageDigest ;
2426import java .security .NoSuchAlgorithmException ;
27+
2528import org .junit .After ;
2629import org .junit .Assert ;
2730import org .junit .Assume ;
2831import org .junit .Before ;
32+ import org .junit .BeforeClass ;
2933import org .junit .Test ;
3034import org .junit .runner .RunWith ;
3135import org .junit .runners .Parameterized ;
@@ -44,6 +48,39 @@ public static Object[] data() {
4448 return MessageDigestAlgorithms .values ();
4549 }
4650
51+ private static boolean contains (String key ) {
52+ for (String s : MessageDigestAlgorithms .values ()) {
53+ if (s .equals (key )) {
54+ return true ;
55+ }
56+ }
57+ return false ;
58+ }
59+
60+ @ BeforeClass
61+ public static void checkValues () throws Exception {
62+ Field [] fields = MessageDigestAlgorithms .class .getDeclaredFields ();
63+ boolean ok = true ;
64+ int psf = 0 ;
65+ for (Field f : fields ) {
66+ // Only interested in public fields
67+ final int modifiers = f .getModifiers ();
68+ if (Modifier .isPublic (modifiers ) && Modifier .isStatic (modifiers ) && Modifier .isFinal (modifiers )) {
69+ psf ++;
70+ if (!contains ((String ) f .get (null ))) {
71+ System .out .println ("Not found in MessageDigestAlgorithms.values(): " +f .getName ());
72+ ok = false ;
73+ }
74+ }
75+ }
76+ if (!ok ) {
77+ Assert .fail ("One or more entries are missing from the MessageDigestAlgorithms.values() array" );
78+ }
79+ if (psf != MessageDigestAlgorithms .values ().length ) {
80+ Assert .fail ("One or more unexpected entries found in the MessageDigestAlgorithms.values() array" );
81+ }
82+ }
83+
4784 private DigestUtilsTest digestUtilsTest ;
4885
4986 private final String messageDigestAlgorithm ;
0 commit comments