/** * Tests the behavior when state is {@link ModifiableMetadata.State#EDITABLE}. * Setting new values and overwriting existing values are allowed. */ @Test public void testStateEditable() { assertFalse("transition", md.transition(ModifiableMetadata.State.EDITABLE)); // Shall be a no-op. assertEquals("state", ModifiableMetadata.State.EDITABLE, md.state()); assertEquals("identifier.state", ModifiableMetadata.State.EDITABLE, identifierState()); /* * Verify conditions given in Javadoc: allow new values and overwriting. */ md.setVolumes(4); // New value. md.setMediumNote(new SimpleInternationalString("A new note.")); // Overwriting. md.getMediumFormats().add(MediumFormat.TAR); md.setMediumFormats(Collections.singleton(MediumFormat.CPIO)); // Discard TAR. md.getMediumFormats().add(MediumFormat.ISO_9660); assertPropertiesEqual(4, "A new note.", MediumFormat.CPIO, MediumFormat.ISO_9660); }
assertTrue("transition", md.transition(ModifiableMetadata.State.COMPLETABLE)); assertEquals("state", ModifiableMetadata.State.COMPLETABLE, md.state()); assertEquals("identifier.state", ModifiableMetadata.State.COMPLETABLE, identifierState()); try { md.transition(ModifiableMetadata.State.EDITABLE); fail("Shall not be allowed to transition back to editable state."); } catch (UnmodifiableMetadataException e) {
assertTrue("transition", md.transition(ModifiableMetadata.State.FINAL)); assertEquals("state", ModifiableMetadata.State.FINAL, md.state()); assertEquals("identifier.state", ModifiableMetadata.State.FINAL, identifierState()); try { md.transition(ModifiableMetadata.State.EDITABLE); fail("Shall not be allowed to transition back to editable state."); } catch (UnmodifiableMetadataException e) {