///Tests para probar cuando se corta la llamada y pasa la tecla a reposo
        ///por una sectorización con cambios.
        ///Hay una llamada con canal, pero sin callId
        public void ChangeConfig3()
        {
            //Initial configuration
            TlfPosition      tlfTest = new TlfPosition(12);
            CfgEnlaceInterno link    = new CfgEnlaceInterno();

            link.Literal           = "BL";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            CfgRecursoEnlaceInterno rec = new CfgRecursoEnlaceInterno();

            rec.Prefijo       = 2;
            rec.NombreRecurso = "prubl";
            rec.Interface     = TipoInterface.TI_BL;
            link.ListaRecursos.Add(rec);

            tlfTest.Reset(link);

            //Give it an incomplete call, no callID
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            SipRemote remote = new SipRemote(rec.NombreRecurso);

            tlfTest._SipCall.Update(-1, link.OrigenR2, rec.NombreRecurso, tlfTest.Channels[0], remote, tlfTest.Channels[0].ListLines[0]);
            Assert.IsNotNull(tlfTest._SipCall);

            //1.Cambio configuracion origen R2
            link                   = new CfgEnlaceInterno();
            link.Literal           = "BL";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218002"; // Cambio
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "prubl";
            rec.Interface     = TipoInterface.TI_BL;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //Se corta la llamada
            Assert.IsNull(tlfTest._SipCall);

            //Give it an incomplete call, no callID
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            remote           = new SipRemote(rec.NombreRecurso);
            tlfTest._SipCall.Update(-1, link.OrigenR2, rec.NombreRecurso, tlfTest.Channels[0], remote, tlfTest.Channels[0].ListLines[0]);
            tlfTest.State = TlfState.Busy;

            //2.Cambio configuracion Prioridad, literal
            link                   = new CfgEnlaceInterno();
            link.Literal           = "BL_"; //Cambio
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 3;     // Cambio
            link.OrigenR2          = "218002";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "prubl";
            rec.Interface     = TipoInterface.TI_BL;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //Se corta la llamada porque no esta disponible la linea
            Assert.IsNull(tlfTest._SipCall);
            Assert.AreEqual(tlfTest.State, TlfState.Unavailable);

            //Give it an incomplete call, no channel
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            remote           = new SipRemote(rec.NombreRecurso);
            tlfTest._SipCall.Update(-1, link.OrigenR2, rec.NombreRecurso, tlfTest.Channels[0], remote, tlfTest.Channels[0].ListLines[0]);
            tlfTest.State = TlfState.Busy;
            Assert.IsNotNull(tlfTest._SipCall);

            //3.Cambio configuracion prefijo recurso, nombre rec
            link                   = new CfgEnlaceInterno();
            link.Literal           = "BL_";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 3;
            link.OrigenR2          = "218002";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 0;         // Cambio
            rec.NombreRecurso = "S4_SCV2"; //Cambio
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //Se corta la llamada
            Assert.IsNull(tlfTest._SipCall);
        }
        ///Tests para probar cuando se corta la llamada y pasa la tecla a reposo
        ///por una sectorización con cambios.
        ///La llamada no tiene canal
        public void ChangeConfig1()
        {
            //Initial configuration
            TlfPosition      tlfTest = new TlfPosition(12);
            CfgEnlaceInterno link    = new CfgEnlaceInterno();

            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            CfgRecursoEnlaceInterno rec = new CfgRecursoEnlaceInterno();

            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);

            tlfTest.Reset(link);

            //Give it an incomplete call, , no channel
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            Assert.IsNotNull(tlfTest._SipCall);

            //1.Cambio configuracion origen R2
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218002"; // Cambio
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //Se corta la llamada
            Assert.IsNull(tlfTest._SipCall);

            //Give it an incomplete call, no channel
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            Assert.IsNotNull(tlfTest._SipCall);

            //2.Cambio configuracion Prioridad, literal
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1_"; //Cambio
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;     // Cambio
            link.OrigenR2          = "218002";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //No se corta la llamada
            Assert.IsNotNull(tlfTest._SipCall);

            //Give it an incomplete call, no channel
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            Assert.IsNotNull(tlfTest._SipCall);

            //3.Cambio configuracion prefijo recurso, nombre rec
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1_";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218002";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 3;     // Cambio
            rec.NombreRecurso = "S1_"; //Cambio
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //No Se corta la llamada
            Assert.IsNotNull(tlfTest._SipCall);
        }
        ///Tests para probar que no se corta la llamada ni cambia de estado
        ///por una sectorización sin cambios
        public void ChangeConfig2()
        {
            //Initial configuration
            TlfPosition      tlfTest = new TlfPosition(12);
            CfgEnlaceInterno link    = new CfgEnlaceInterno();

            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            CfgRecursoEnlaceInterno rec = new CfgRecursoEnlaceInterno();

            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);

            tlfTest.Reset(link);
            //Give it an incomplete call, estado unavailable
            tlfTest._SipCall = SipCallInfo.NewTlfCall(tlfTest.Channels, CORESIP_Priority.CORESIP_PR_NORMAL, null);
            Assert.IsNotNull(tlfTest._SipCall);
            Assert.AreEqual(tlfTest.State, TlfState.Unavailable);

            //1.sin cambios, en estado unavailable
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //No se corta la llamada
            Assert.IsNotNull(tlfTest._SipCall);
            Assert.AreEqual(tlfTest.State, TlfState.Unavailable);

            //2. Tecla en congestion, no cambia
            tlfTest.State          = TlfState.Congestion;
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //No se corta la llamada
            Assert.IsNotNull(tlfTest._SipCall);
            Assert.AreEqual(tlfTest.State, TlfState.Congestion);

            //3. Tecla en busy, no cambia
            tlfTest.State          = TlfState.Busy;
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //No se corta la llamada
            Assert.IsNotNull(tlfTest._SipCall);
            Assert.AreEqual(tlfTest.State, TlfState.Busy);

            //3. Tecla en InProcess, no cambia
            tlfTest.State          = TlfState.InProcess;
            link                   = new CfgEnlaceInterno();
            link.Literal           = "S1";
            link.TipoEnlaceInterno = "DA";
            link.Prioridad         = 4;
            link.OrigenR2          = "218001";
            rec               = new CfgRecursoEnlaceInterno();
            rec.Prefijo       = 2;
            rec.NombreRecurso = "S1";
            rec.Interface     = TipoInterface.TI_Radio;
            link.ListaRecursos.Add(rec);
            tlfTest.Reset(link);
            //No se corta la llamada
            Assert.IsNotNull(tlfTest._SipCall);
            Assert.AreEqual(tlfTest.State, TlfState.InProcess);
        }