package com.bumptech.glide.load.model; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import com.google.common.testing.EqualsTester; import java.net.MalformedURLException; import java.net.URL; 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 GlideUrlTest { @Test(expected = NullPointerException.class) public void testThrowsIfGivenURLIsNull() { new GlideUrl((URL) null); } @Test(expected = IllegalArgumentException.class) public void testThrowsIfGivenStringUrlIsNull() { new GlideUrl((String) null); } @Test(expected = IllegalArgumentException.class) public void testThrowsIfGivenStringURLIsEmpty() { new GlideUrl(""); } @Test public void testCanCompareGlideUrlsCreatedWithDifferentTypes() throws MalformedURLException { String stringUrl = "http://www.google.com"; URL url = new URL(stringUrl); assertEquals(new GlideUrl(stringUrl), new GlideUrl(url)); } @Test public void testCanCompareHashcodeOfGlideUrlsCreatedWithDifferentTypes() throws MalformedURLException { String stringUrl = "http://nytimes.com"; URL url = new URL(stringUrl); assertEquals(new GlideUrl(stringUrl).hashCode(), new GlideUrl(url).hashCode()); } @Test public void testProducesEquivalentUrlFromString() throws MalformedURLException { String stringUrl = "http://www.google.com"; GlideUrl glideUrl = new GlideUrl(stringUrl); URL url = glideUrl.toURL(); assertEquals(stringUrl, url.toString()); } @Test public void testProducesEquivalentStringFromURL() throws MalformedURLException { String expected = "http://www.washingtonpost.com"; URL url = new URL(expected); GlideUrl glideUrl = new GlideUrl(url); assertEquals(expected, glideUrl.toStringUrl()); } @Test public void testIssue133() throws MalformedURLException { // u00e0=à final String original = "http://www.commitstrip.com/wp-content/uploads/2014/07/" + "Excel-\u00E0-toutes-les-sauces-650-finalenglish.jpg"; final String escaped = "http://www.commitstrip.com/wp-content/uploads/2014/07/" + "Excel-%C3%A0-toutes-les-sauces-650-finalenglish.jpg"; GlideUrl glideUrlFromString = new GlideUrl(original); assertEquals(escaped, glideUrlFromString.toURL().toString()); GlideUrl glideUrlFromEscapedString = new GlideUrl(escaped); assertEquals(escaped, glideUrlFromEscapedString.toURL().toString()); GlideUrl glideUrlFromUrl = new GlideUrl(new URL(original)); assertEquals(escaped, glideUrlFromUrl.toURL().toString()); GlideUrl glideUrlFromEscapedUrl = new GlideUrl(new URL(escaped)); assertEquals(escaped, glideUrlFromEscapedUrl.toURL().toString()); } @Test public void testEquals() throws MalformedURLException { Headers headers = mock(Headers.class); Headers otherHeaders = mock(Headers.class); String url = "http://www.google.com"; String otherUrl = "http://mail.google.com"; new EqualsTester() .addEqualityGroup( new GlideUrl(url), new GlideUrl(url), new GlideUrl(new URL(url)), new GlideUrl(new URL(url)) ) .addEqualityGroup( new GlideUrl(otherUrl), new GlideUrl(new URL(otherUrl)) ) .addEqualityGroup( new GlideUrl(url, headers), new GlideUrl(new URL(url), headers) ) .addEqualityGroup( new GlideUrl(url, otherHeaders), new GlideUrl(new URL(url), otherHeaders) ).testEquals(); } }