コード例 #1
0
        public async Task TestDelayedLimitHandle()
        {
            var observer          = CreateObserver();
            var app               = CreateAppDailyLimit(100);
            var appInfo           = AppInfo.Create(app.Name);
            var logInfoObservable = Observable.Return(new AppChangedArgs(LogInfo.Create(appInfo, "")));

            windowChangedNotifier.Setup(n => n.AppChangedObservable).Returns(logInfoObservable);
            repository.Setup(d => d.GetFiltered <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >(),
                                                             It.IsAny <Expression <Func <Aplication, object> > >()))
            .Returns(new List <Aplication> {
                app
            });
            repository.Setup(d => d.GetFilteredAsync <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >())).ReturnsAsync(new List <Aplication>()
            {
                app
            });
            appDurationCalc.Setup(t => t.GetDuration(app.Name, LimitSpan.Day)).ReturnsAsync(0);

            observer.Initialize(new Setting()
            {
                TrackingEnabled = true
            });

            limitHandler.Verify(h => h.Handle(app.Limits.First()), Times.Never);

            await Task.Delay(200);

            limitHandler.Verify(h => h.Handle(app.Limits.First()), Times.Once);
        }
コード例 #2
0
        public async Task TestLimitsCancel()
        {
            var observer          = CreateObserver();
            var app               = CreateAppDailyLimit(100);
            var appInfo           = AppInfo.Create(app.Name);
            var secondAppInfo     = AppInfo.Create("some app");
            var logInfoObservable = Observable.ToObservable(new List <AppChangedArgs>()
            {
                new AppChangedArgs(LogInfo.Create(appInfo, "")), new AppChangedArgs(LogInfo.Create(secondAppInfo, ""))
            });

            logInfoObservable = Observable.ToObservable(await logInfoObservable.Buffer(TimeSpan.FromMilliseconds(100)));

            windowChangedNotifier.Setup(n => n.AppChangedObservable).Returns(logInfoObservable);
            repository.Setup(d => d.GetFiltered <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >(),
                                                             It.IsAny <Expression <Func <Aplication, object> > >()))
            .Returns(new List <Aplication> {
                app
            });
            repository.Setup(d => d.GetFilteredAsync <Aplication>(It.IsAny <Expression <Func <Aplication, bool> > >())).ReturnsAsync(new List <Aplication>()
            {
                app
            });
            appDurationCalc.Setup(t => t.GetDuration(app.Name, LimitSpan.Day)).ReturnsAsync(0);


            observer.Initialize(new Setting()
            {
                TrackingEnabled = true
            });

            await Task.Delay(50);

            limitHandler.Verify(h => h.Handle(It.IsAny <AppLimit>()), Times.Never);
        }
コード例 #3
0
        private void NotifyAppChanged()
        {
            var appInfo = AppInfo.Create(activeWindowHandle);
            var logInfo = LogInfo.Create(appInfo, activeWindowTitle);
            var args    = new AppChangedArgs(logInfo);

            subject.OnNext(args);
        }