@Test public void blockAddedObserver_addRemoveMultiple() { final BlockDataGenerator gen = new BlockDataGenerator(); final KeyValueStorage kvStore = new InMemoryKeyValueStorage(); final Block genesisBlock = gen.genesisBlock(); final DefaultMutableBlockchain blockchain = createBlockchain(kvStore, genesisBlock); final long observerId1 = blockchain.observeBlockAdded((block, chain) -> {}); assertThat(blockchain.observerCount()).isEqualTo(1); final long observerId2 = blockchain.observeBlockAdded((block, chain) -> {}); assertThat(blockchain.observerCount()).isEqualTo(2); final long observerId3 = blockchain.observeBlockAdded((block, chain) -> {}); assertThat(blockchain.observerCount()).isEqualTo(3); assertThat(blockchain.removeObserver(observerId1)).isTrue(); assertThat(blockchain.observerCount()).isEqualTo(2); assertThat(blockchain.removeObserver(observerId2)).isTrue(); assertThat(blockchain.observerCount()).isEqualTo(1); assertThat(blockchain.removeObserver(observerId3)).isTrue(); assertThat(blockchain.observerCount()).isEqualTo(0); }
@Test public void blockAddedObserver_addRemoveSingle() { final BlockDataGenerator gen = new BlockDataGenerator(); final KeyValueStorage kvStore = new InMemoryKeyValueStorage(); final Block genesisBlock = gen.genesisBlock(); final DefaultMutableBlockchain blockchain = createBlockchain(kvStore, genesisBlock); final long observerId = blockchain.observeBlockAdded((block, chain) -> {}); assertThat(blockchain.observerCount()).isEqualTo(1); assertThat(blockchain.removeObserver(observerId)).isTrue(); assertThat(blockchain.observerCount()).isEqualTo(0); }
@Test public void blockAddedObserver_removeNonexistentObserver() { final BlockDataGenerator gen = new BlockDataGenerator(); final KeyValueStorage kvStore = new InMemoryKeyValueStorage(); final Block genesisBlock = gen.genesisBlock(); final DefaultMutableBlockchain blockchain = createBlockchain(kvStore, genesisBlock); assertThat(blockchain.removeObserver(7)).isFalse(); }