@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)));
}