示例#1
0
        public static Yogi.SignalSet CreateSignalSet()
        {
            MOCK_SignalSetCreate((ref IntPtr sigset, IntPtr context, int signals) =>
            {
                sigset = pointer;
                return((int)Yogi.ErrorCode.Ok);
            });

            return(new Yogi.SignalSet(CreateContext(), Yogi.Signals.Term));
        }
示例#2
0
        public void CreateSet()
        {
            MOCK_SignalSetCreate((ref IntPtr sigset, IntPtr context, int signals) =>
            {
                Assert.Equal(pointer, context);
                Assert.Equal((int)Yogi.Signals.Term, signals);
                sigset = pointer;
                return((int)Yogi.ErrorCode.Ok);
            });

            new Yogi.SignalSet(CreateContext(), Yogi.Signals.Term);
        }
        public void AwaitSignal()
        {
            var sigset = new Yogi.SignalSet(context, Yogi.Signals.Term | Yogi.Signals.Usr5);

            bool called = false;

            sigset.AwaitSignalAsync((res, signal) => {
                Assert.IsType <Yogi.Success>(res);
                Assert.Equal(Yogi.ErrorCode.Ok, res.ErrorCode);
                Assert.Equal(Yogi.Signals.Term, signal);
                called = true;
            });
            GC.Collect();
            Yogi.RaiseSignal(Yogi.Signals.Term, "123");
            GC.Collect();
            context.Poll();
            GC.Collect();
            Assert.True(called);

            called = false;
            sigset.AwaitSignalAsync <string>((res, signal, sigarg) => {
                Assert.IsType <Yogi.Success>(res);
                Assert.Equal(Yogi.ErrorCode.Ok, res.ErrorCode);
                Assert.Equal(Yogi.Signals.Term, signal);
                Assert.Null(sigarg);
                called = true;
            });
            Yogi.RaiseSignal(Yogi.Signals.Term);
            context.Poll();
            Assert.True(called);

            called = false;
            sigset.AwaitSignalAsync <string>((res, signal, sigarg) => {
                Assert.IsType <Yogi.Success>(res);
                Assert.Equal(Yogi.ErrorCode.Ok, res.ErrorCode);
                Assert.Equal(Yogi.Signals.Term, signal);
                Assert.Equal("Hello", sigarg);
                called = true;
            });
            Yogi.RaiseSignal(Yogi.Signals.Term, "Hello");
            context.Poll();
            Assert.True(called);
        }
        public void CancelAwaitSignal()
        {
            var sigset = new Yogi.SignalSet(context, Yogi.Signals.Term);

            bool called = false;

            sigset.AwaitSignalAsync <string>((res, signal, sigarg) => {
                Assert.IsType <Yogi.Failure>(res);
                Assert.Equal(Yogi.ErrorCode.Canceled, res.ErrorCode);
                Assert.IsType <Yogi.Signals>(signal);
                Assert.Equal(Yogi.Signals.None, signal);
                Assert.Null(sigarg);
                called = true;
            });
            GC.Collect();
            sigset.CancelAwaitSignal();
            GC.Collect();
            context.Poll();
            Assert.True(called);
        }