/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_remove_and_retrieve_local_contexts() { fixture.addLocalContext(localContext1); fixture.addLocalContext(localContext2); fixture.addLocalContext(localContext3); fixture.removeLocalContext(localContext2); assertThat(fixture.getContexts(), is(Arrays.asList(localContext3, localContext1))); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public <V, T extends Throwable> V runWithContext (final @Nonnull Object context, final @Nonnull Task<V, T> task) throws T { return runWithContexts(Collections.singletonList(context), task); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_prioritize_global_contexts() { fixture.addLocalContext(localContext1); fixture.addLocalContext(localContext2); fixture.addGlobalContext(globalContext1); fixture.addLocalContext(localContext3); fixture.addGlobalContext(globalContext2); fixture.addGlobalContext(globalContext3); assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3, localContext3, localContext2, localContext1))); }
@Override public void run() { fixture.addGlobalContext(globalContext1); fixture.addLocalContext(localContext1); latch.countDown(); } });
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void runWithContexts_must_temporarily_associate_local_contexts() throws InterruptedException { fixture.addGlobalContext(globalContext1); fixture.addGlobalContext(globalContext2); fixture.addGlobalContext(globalContext3); assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3))); final String result = fixture.runWithContexts(Arrays.asList(localContext1, localContext2, localContext3), new Task<String, RuntimeException>() { @Override @Nonnull public String run() { assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3, localContext3, localContext2, localContext1))); return "result"; } }); assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3))); assertThat(result, is("result")); } }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_add_and_retrieve_local_contexts_in_order() { fixture.addLocalContext(localContext1); fixture.addLocalContext(localContext2); fixture.addLocalContext(localContext3); assertThat(fixture.getContexts(), is(Arrays.asList(localContext3, localContext2, localContext1))); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_remove_and_retrieve_global_contexts() { fixture.addGlobalContext(globalContext1); fixture.addGlobalContext(globalContext2); fixture.addGlobalContext(globalContext3); fixture.removeGlobalContext(globalContext2); assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext3))); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_add_and_retrieve_global_contexts_in_order() { fixture.addGlobalContext(globalContext1); fixture.addGlobalContext(globalContext2); fixture.addGlobalContext(globalContext3); assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3))); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public <T> T findContextOfType (final @Nonnull Class<T> contextType) throws NotFoundException { for (final Object context : getContexts()) { if (contextType.isAssignableFrom(context.getClass())) { return contextType.cast(context); } } throw new NotFoundException("No current context of type " + contextType); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @BeforeMethod public void setupFixture() { fixture = new DefaultContextManager(); globalContext1 = "globalContext1"; globalContext2 = "globalContext2"; globalContext3 = "globalContext3"; localContext1 = "localContext1"; localContext2 = "localContext2"; localContext3 = "localContext3"; }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_add_and_retrieve_local_contexts() { fixture.addLocalContext(localContext1); assertThat(fixture.getContexts(), is(Arrays.asList(localContext1))); }
@Override public void run() { fixture.addGlobalContext(globalContext3); fixture.addLocalContext(localContext3); latch.countDown(); } });
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_properly_add_and_retrieve_global_contexts() { fixture.addGlobalContext(globalContext1); assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1))); }
@Override @Nonnull public String run() { assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3, localContext3, localContext2, localContext1))); return "result"; } });
addLocalContext(context); log.trace(">>>> contexts now: {} - {}", getContexts(), this); removeLocalContext(context);
@Override public void run() { fixture.addGlobalContext(globalContext2); fixture.addLocalContext(localContext2); latch.countDown(); } });
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test public void must_start_with_no_contexts() { assertThat(fixture.getContexts(), is(Collections.<Object>emptyList())); }
assertThat(fixture.getContexts(), is(Arrays.asList(globalContext1, globalContext2, globalContext3)));