// Copyright 2011 Google Inc. All Rights Reserved. package com.google.common.hash; import com.google.common.hash.AbstractStreamingHashFunction.AbstractStreamingHasher; import junit.framework.TestCase; import org.easymock.EasyMock; import java.nio.ByteBuffer; /** * Tests for HashExtractors. * * @author andreou@google.com (Dimitris Andreou) */ public class FunnelsTest extends TestCase { public void testForBytes() { Sink byteSink = EasyMock.createMock(Sink.class); EasyMock.expect(byteSink.putBytes(EasyMock.aryEq(new byte[] { 4, 3, 2, 1}))) .andReturn(byteSink).once(); EasyMock.replay(byteSink); Funnels.byteArrayFunnel().funnel(new byte[]{4, 3, 2, 1}, byteSink); EasyMock.verify(byteSink); } public void testForBytes_null() { assertNullsThrowException(Funnels.byteArrayFunnel()); } public void testForStrings() { Sink byteSink = EasyMock.createMock(Sink.class); EasyMock.expect(byteSink.putString("test")).andReturn(byteSink).once(); EasyMock.replay(byteSink); Funnels.stringFunnel().funnel("test", byteSink); EasyMock.verify(byteSink); } public void testForStrings_null() { assertNullsThrowException(Funnels.stringFunnel()); } private static void assertNullsThrowException(Funnel<?> funnel) { Sink byteSink = new AbstractStreamingHasher(4, 4) { @Override HashCode makeHash() { throw new UnsupportedOperationException(); } @Override protected void process(ByteBuffer bb) { while (bb.hasRemaining()) { bb.get(); } } }; try { funnel.funnel(null, byteSink); fail(); } catch (NullPointerException ok) {} } }