package com.bumptech.glide.load.engine; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doAnswer; import com.bumptech.glide.load.Key; import com.bumptech.glide.tests.KeyAssertions; import com.bumptech.glide.tests.Util.WriteDigest; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @RunWith(JUnit4.class) public class DataCacheKeyTest { @Mock Key firstKey; @Mock Key firstSignature; @Mock Key secondKey; @Mock Key secondSignature; @Before public void setUp() throws UnsupportedEncodingException { MockitoAnnotations.initMocks(this); doAnswer(new WriteDigest("firstKey")).when(firstKey) .updateDiskCacheKey(any(MessageDigest.class)); doAnswer(new WriteDigest("firstSignature")).when(firstSignature) .updateDiskCacheKey(any(MessageDigest.class)); doAnswer(new WriteDigest("secondKey")).when(secondKey) .updateDiskCacheKey(any(MessageDigest.class)); doAnswer(new WriteDigest("secondSignature")).when(secondSignature) .updateDiskCacheKey(any(MessageDigest.class)); } @Test public void testDiffersIfIdDiffers() throws UnsupportedEncodingException, NoSuchAlgorithmException { DataCacheKey first = new DataCacheKey(firstKey, firstSignature); DataCacheKey second = new DataCacheKey(secondKey, firstSignature); KeyAssertions.assertDifferent(first, second); } @Test public void testDiffersIfSignatureDiffers() throws UnsupportedEncodingException, NoSuchAlgorithmException { DataCacheKey first = new DataCacheKey(firstKey, firstSignature); DataCacheKey second = new DataCacheKey(firstKey, secondSignature); KeyAssertions.assertDifferent(first, second); } @Test public void testSameIfIdAndSignatureAreTheSame() throws UnsupportedEncodingException, NoSuchAlgorithmException { DataCacheKey first = new DataCacheKey(firstKey, firstSignature); DataCacheKey second = new DataCacheKey(firstKey, firstSignature); KeyAssertions.assertSame(first, second); } }