public void PozivMetodeDižiAlarmProsljeđujePredbilježenimSlušateljimaVrijemeAlarma()
        {
            Assert.IsTrue(typeof(GeneratorAlarma).GetEvent("Alarm") != null);

            GeneratorAlarma generatorAlarma = new GeneratorAlarma();
            Slušatelj       slušatelj       = new Slušatelj();

            EventInfo eInfo = generatorAlarma.GetType().GetEvent("Alarm");

            Assert.IsNotNull(eInfo);
            if (eInfo == null)
            {
                return;
            }

            Type     handlerType = eInfo.EventHandlerType;
            Delegate del         = Delegate.CreateDelegate(handlerType, slušatelj, "ObradaDogađaja", false);

            eInfo.AddEventHandler(generatorAlarma, del);

            DateTime trenutakPrije = DateTime.Now;

            generatorAlarma.DižiAlarm("mjesto", 3, "potres");

            Assert.IsTrue(slušatelj.Vrijeme >= trenutakPrije && slušatelj.Vrijeme <= DateTime.Now);
        }
        public void PozivMetodeDižiAlarmObavještavaPredbilježeneSlušateljeODogađaju()
        {
            Assert.IsTrue(typeof(GeneratorAlarma).GetEvent("Alarm") != null);

            GeneratorAlarma generatorAlarma = new GeneratorAlarma();
            Slušatelj       slušatelj       = new Slušatelj();

            EventInfo eInfo = generatorAlarma.GetType().GetEvent("Alarm");

            Assert.IsNotNull(eInfo);
            if (eInfo == null)
            {
                return;
            }

            Type     handlerType = eInfo.EventHandlerType;
            Delegate del         = Delegate.CreateDelegate(handlerType, slušatelj, "ObradaDogađaja", false);

            eInfo.AddEventHandler(generatorAlarma, del);

            Assert.IsFalse(slušatelj.DogađajSeDogodio);

            generatorAlarma.DižiAlarm("mjesto", 3, "potres");

            Assert.IsTrue(slušatelj.DogađajSeDogodio);
        }
        public void PozivMetodeDižiAlarmProsljeđujePredbilježenimSlušateljimaRazinuAlarma()
        {
            Assert.IsTrue(typeof(GeneratorAlarma).GetEvent("Alarm") != null);

            GeneratorAlarma generatorAlarma = new GeneratorAlarma();
            Slušatelj       slušatelj       = new Slušatelj();

            EventInfo eInfo = generatorAlarma.GetType().GetEvent("Alarm");

            Assert.IsNotNull(eInfo);
            if (eInfo == null)
            {
                return;
            }

            Type     handlerType = eInfo.EventHandlerType;
            Delegate del         = Delegate.CreateDelegate(handlerType, slušatelj, "ObradaDogađaja", false);

            eInfo.AddEventHandler(generatorAlarma, del);

            generatorAlarma.DižiAlarm("mjesto", 3, "potres");

            Assert.AreEqual(3, slušatelj.Razina);
        }
            public void ObradaDogađaja(object sender, AlarmEventArgs a)
            {
                GeneratorAlarma ga = sender as GeneratorAlarma;

                if (ga != null)
                {
                    DogađajSeDogodio = true;
                }

                Type t = a.GetType();

                if (t.Name == "AlarmEventArgs")
                {
                    var fields = t.GetFields();
                    var v      = fields.FirstOrDefault(p => string.Compare(p.Name, "Vrijeme", true) == 0);
                    if (v != null)
                    {
                        Vrijeme = (DateTime)v.GetValue(a);
                    }
                    var m = fields.FirstOrDefault(p => string.Compare(p.Name, "Mjesto", true) == 0);
                    if (m != null)
                    {
                        Mjesto = (string)m.GetValue(a);
                    }
                    var r = fields.FirstOrDefault(p => string.Compare(p.Name, "Razina", true) == 0);
                    if (r != null)
                    {
                        Razina = (int)r.GetValue(a);
                    }
                    var o = fields.FirstOrDefault(p => string.Compare(p.Name, "Opis", true) == 0);
                    if (o != null)
                    {
                        Opis = (string)o.GetValue(a);
                    }
                }
            }