@SuppressWarnings("unchecked") @Test public void testResourceNameLifecycle() { Name<String> owner = name("test"); NameProvider sut = NameProvider.create(owner); sut.addResourceName(name("m1")); sut.addResourceName(name("m2")); assertThat(sut.pendingResourceNames(),contains(name("m1"),name("m2"))); assertThat(sut.nextResourceName(),equalTo(name("m1"))); assertThat(sut.pendingResourceNames(),contains(name("m2"))); assertThat(sut.nextResourceName(),equalTo(name("m2"))); assertThat(sut.pendingResourceNames(),hasSize(0)); try { sut.nextResourceName(); fail("Should not provide resource names if not available"); } catch (ApplicationRuntimeException e) { assertThat(e.getMessage(),equalTo("No more resource names available for resource 'test'")); } }