2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Copyright (C) 2017 Amdocs
 
   8  * =============================================================================
 
   9  * Licensed under the Apache License, Version 2.0 (the "License");
 
  10  * you may not use this file except in compliance with the License.
 
  11  * You may obtain a copy of the License at
 
  13  *      http://www.apache.org/licenses/LICENSE-2.0
 
  15  * Unless required by applicable law or agreed to in writing, software
 
  16  * distributed under the License is distributed on an "AS IS" BASIS,
 
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  18  * See the License for the specific language governing permissions and
 
  19  * limitations under the License.
 
  21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
  22  * ============LICENSE_END=========================================================
 
  25 package org.onap.appc.statemachine.objects;
 
  27 import org.junit.Assert;
 
  28 import org.junit.Test;
 
  29 import org.mockito.internal.util.reflection.Whitebox;
 
  31 import java.util.List;
 
  33 public class StateTest {
 
  34     private final String STATE_NAME = "Starting";
 
  35     private State state = new State(STATE_NAME);
 
  37     @SuppressWarnings("unchecked")
 
  39     public void testConstructor() {
 
  40         State state = new State(STATE_NAME);
 
  41         Assert.assertEquals("Should set stateName",
 
  42                 STATE_NAME, Whitebox.getInternalState(state, "stateName"));
 
  43         Assert.assertEquals("Should set hash code",
 
  44                 STATE_NAME.toLowerCase().hashCode(), (int)Whitebox.getInternalState(state, "hashCode"));
 
  45         List<Transition> transitions = (List<Transition>) Whitebox.getInternalState(state, "transitions");
 
  46         Assert.assertTrue("Should initialized transtiions",
 
  47                 transitions != null && transitions.isEmpty());
 
  51     public void testHashCode() throws Exception {
 
  52         Assert.assertEquals("Should return proper hash code",
 
  53                 STATE_NAME.toLowerCase().hashCode(), state.hashCode());
 
  57     public void testEquals() throws Exception {
 
  58         Assert.assertFalse("should return false for null", state.equals(null));
 
  59         Assert.assertFalse("should return false for object", state.equals(new Event(STATE_NAME)));
 
  60         Assert.assertFalse("should return false for different event",
 
  61                 state.equals(new Event("Another")));
 
  62         Assert.assertTrue("should return true", state.equals(new State(STATE_NAME)));
 
  63         Assert.assertTrue("should return true (lower case)", state.equals(new State(STATE_NAME.toLowerCase())));
 
  67     public void testGetStateName() throws Exception {
 
  68         Assert.assertEquals("Should return STATE_NAME", STATE_NAME, state.getStateName());
 
  71     @SuppressWarnings("unchecked")
 
  73     public void testAddAndGetTransition() throws Exception {
 
  74         Transition transition1 = new Transition(new Event("event1"), new State("state2"));
 
  75         List<Transition> transitions = (List<Transition>) Whitebox.getInternalState(state, "transitions");
 
  76         Assert.assertFalse("should not have transition1", transitions.contains(transition1));
 
  77         state.addTransition(transition1);
 
  78         transitions = (List<Transition>) Whitebox.getInternalState(state, "transitions");
 
  79         Assert.assertTrue("should have added transition1", transitions.contains(transition1));
 
  80         Assert.assertEquals("Should return transitions", transitions, state.getTransitions());
 
  82         state.addTransition(null);
 
  83         Assert.assertEquals("Should not change transitions", transitions,
 
  84                 Whitebox.getInternalState(state, "transitions"));
 
  88     public void testToString() throws Exception {
 
  89         Assert.assertEquals("Should return STATE_NAME", STATE_NAME, state.toString());