@Test
public void testExtractEventParametersWithLogGivenATransactionReceipt() {

    final Event testEvent1 = new Event(
            "TestEvent1",
            Collections.<TypeReference<?>>emptyList(),
            Collections.<TypeReference<?>>emptyList());
    final Event testEvent2 = new Event(
            "TestEvent2",
            Collections.<TypeReference<?>>emptyList(),
            Collections.<TypeReference<?>>emptyList());
    final List<Log> logs = Arrays.asList(
            new Log(false, "" + 0, "0", "0x0", "0x0", "0", "0x1", "", "",
                    singletonList(EventEncoder.encode(testEvent1))),
            new Log(false, "" + 0, "0", "0x0", "0x0", "0", "0x2", "", "",
                    singletonList(EventEncoder.encode(testEvent2)))
    );
    final TransactionReceipt transactionReceipt = new TransactionReceipt();
    transactionReceipt.setLogs(logs);
    final List<Contract.EventValuesWithLog> eventValuesWithLogs1 =
            contract.extractEventParametersWithLog(testEvent1, transactionReceipt);
    assertThat(eventValuesWithLogs1.size(), equalTo(1));
    assertThat(eventValuesWithLogs1.get(0).getLog(), equalTo(logs.get(0)));
    final List<Contract.EventValuesWithLog> eventValuesWithLogs2 =
            contract.extractEventParametersWithLog(testEvent2, transactionReceipt);
    assertThat(eventValuesWithLogs2.size(), equalTo(1));
    assertThat(eventValuesWithLogs2.get(0).getLog(), equalTo(logs.get(1)));
}