public Builder transition(Transition transition) { Preconditions.checkArgument( states.contains(transition.from()), "Originating state does not exist: " + transition.from()); Preconditions.checkArgument( states.contains(transition.to()), "Destination state does not exist: " + transition.to()); outTransitions.put(transition.from(), transition); return this; }
@Test public void test_simplest_transition() throws Exception { Transition transition = Transition.builder("close").from("OPEN").to("CLOSED").build(); assertThat(transition.key()).isEqualTo("close"); assertThat(transition.from()).isEqualTo("OPEN"); assertThat(transition.to()).isEqualTo("CLOSED"); assertThat(transition.conditions()).isEmpty(); assertThat(transition.functions()).isEmpty(); }
/** * This implements a deep copy of the class for replicating FSM information. * * @throws CloneNotSupportedException if clone method is not supported * @return Object */ @Override public Object clone() throws CloneNotSupportedException { Transition retval = (Transition) super.clone(); if (retval != null) { if (this.from != null) retval.from = new String(this.from); if (this.to != null) retval.to = new String(this.to); if (this.event != null) retval.event = new String(this.event); } return retval; }
@Test public void test_builder() throws Exception { Transition transition = Transition.builder("close") .from("OPEN") .to("CLOSED") .conditions(condition1, condition2) .functions(function1, function2) .build(); assertThat(transition.key()).isEqualTo("close"); assertThat(transition.from()).isEqualTo("OPEN"); assertThat(transition.to()).isEqualTo("CLOSED"); assertThat(transition.conditions()).containsOnly(condition1, condition2); assertThat(transition.functions()).containsOnly(function1, function2); assertThat(transition.automatic()).isFalse(); }