Example #1
0
        public void DefinirAccionSalida(string estado, Action accion, string descripcion)
        {
            Valida.TextoNoNuloVacio(descripcion, "Descripción");
            int i = IndiceEstado(estado);

            if (_accionesSalida[i] == null)
            {
                _accionesSalida[i] = new List <Accion>();
            }
            _accionesSalida[i].Add(new Accion(accion, descripcion));
        }
Example #2
0
        private int IndiceTransicion(string transicion)
        {
            Valida.TextoNoNuloVacio(transicion, "Transición");
            int i = _transiciones.IndexOf(transicion);

            if (i == -1)
            {
                throw new TransicionNoDefinidaException(
                          string.Format("Transición [{0}] no definida.",
                                        transicion));
            }
            return(i);
        }
Example #3
0
        private int IndiceEstado(string estado)
        {
            Valida.TextoNoNuloVacio(estado, "Estado");
            int i = _estados.IndexOf(estado);

            if (i == -1)
            {
                throw new EstadoNoDefinidoException(
                          string.Format("Estado {0} no definido.",
                                        estado));
            }
            return(i);
        }
Example #4
0
        public void DefinirAccionEntrada(string estado, Action accion, string descripcion)
        {
            Valida.TextoNoNuloVacio(descripcion, "Descripción");
            int i = IndiceEstado(estado);

            // Estado inicial no permite acciones de entrada.
            if (estado.Equals(_estadoInicial))
            {
                throw new ArgumentException("Estado inicial no permite definición de acciones de entrada.");
            }
            if (_accionesEntrada[i] == null)
            {
                _accionesEntrada[i] = new List <Accion>();
            }
            _accionesEntrada[i].Add(new Accion(accion, descripcion));
        }
Example #5
0
        public void DefinirCondicion(string estado, string transicion, Func <bool> condicion, string descripcion)
        {
            Valida.TextoNoNuloVacio(descripcion, "Descripción");
            int indiceEstado     = IndiceEstado(estado);
            int indiceTransicion = IndiceTransicion(transicion);

            if (_matrizTransiciones[indiceEstado, indiceTransicion].IndiceEstado == NO_DEFINIDO)
            {
                throw new TransicionNoDefinidaException(
                          string.Format("Estado {0} no contiene transición {1}.",
                                        estado,
                                        transicion));
            }
            if (_matrizTransiciones[indiceEstado, indiceTransicion].Condiciones == null)
            {
                _matrizTransiciones[indiceEstado, indiceTransicion].Condiciones = new List <Condicion>();
            }

            _matrizTransiciones[indiceEstado, indiceTransicion].Condiciones.Add(new Condicion(condicion, descripcion));
        }