package com.bumptech.glide.load.engine.cache; import static org.junit.Assert.assertTrue; import com.bumptech.glide.load.Key; import java.security.MessageDigest; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE, sdk = 18) public class SafeKeyGeneratorTest { private SafeKeyGenerator keyGenerator; private int nextId; @Before public void setUp() throws Exception { nextId = 0; keyGenerator = new SafeKeyGenerator(); } @Test public void testKeysAreValidForDiskCache() { final Pattern diskCacheRegex = Pattern.compile("[a-z0-9_-]{64}"); for (int i = 0; i < 1000; i++) { String key = getRandomKeyFromGenerator(); Matcher matcher = diskCacheRegex.matcher(key); assertTrue(key, matcher.matches()); } } private String getRandomKeyFromGenerator() { return keyGenerator.getSafeKey(new MockKey(getNextId())); } private String getNextId() { return String.valueOf(nextId++); } private static class MockKey implements Key { private String id; public MockKey(String id) { this.id = id; } @Override public void updateDiskCacheKey(MessageDigest messageDigest) { messageDigest.update(id.getBytes(CHARSET)); } } }