@Test
public void testStrict() {

    CompositeEthereumListener listener = new CompositeEthereumListenerMock();
    EthashRule rule = new EthashRule(EthashRule.Mode.strict, EthashRule.ChainType.main, listener);
    // cache is empty, fallback into fake rule
    assertEquals(Success, rule.validate(partlyValidHeader));
    // trigger ethash cache
    listener.onBlock(dummySummaryNum_1, true);
    assertEquals(Success, rule.validate(validHeader));
    assertNotEquals(Success, rule.validate(partlyValidHeader));
    assertNotEquals(Success, rule.validate(invalidHeader));
    // check that full verification is done on each run in strict mode
    for (int i = 0; i < 100; i++) {
        assertNotEquals(Success, rule.validate(partlyValidHeader));
    }
}