    @Test
    public void testResolveReturnsFirstResults() {

        AdvancedHostResolver firstResolver = mock(AdvancedHostResolver.class);
        AdvancedHostResolver secondResolver = mock(AdvancedHostResolver.class);
        ChainedHostResolver chainResolver = new ChainedHostResolver(ImmutableList.of(firstResolver, secondResolver));

        when(firstResolver.resolve("1.1.1.1")).thenReturn(TestConstants.addressOnesList);
        when(secondResolver.resolve("1.1.1.1")).thenReturn(Collections.<InetAddress>emptyList());

        Collection<InetAddress> results = chainResolver.resolve("1.1.1.1");
        assertNotNull("Resolver should not return null results", results);
        assertThat("Expected resolver to return a result", results, not(empty()));
        Assert.assertEquals("Resolver returned unexpected result", TestConstants.addressOnes, Iterables.get(results, 0));

        verify(secondResolver, never()).resolve("1.1.1.1");

        reset(firstResolver);
        reset(secondResolver);

        when(firstResolver.resolve("2.2.2.2")).thenReturn(Collections.<InetAddress>emptyList());
        when(secondResolver.resolve("2.2.2.2")).thenReturn(TestConstants.addressTwosList);

        results = chainResolver.resolve("2.2.2.2");
        assertNotNull("Resolver should not return null results", results);
        assertThat("Expected resolver to return a result", results, not(empty()));
        Assert.assertEquals("Resolver returned unexpected result", TestConstants.addressTwos, Iterables.get(results, 0));

        verify(firstResolver).resolve("2.2.2.2");
        verify(secondResolver).resolve("2.2.2.2");
    }