示例#1
0
        public void AmbientServicesBasic()
        {
            ITest test = _Test.Global;

            Assert.IsNotNull(test);
            Assert.AreEqual(_Test.GlobalReference.Service, _Test.Global);
            IAmbientLogger logger = _Logger.Global;

            Assert.IsNotNull(logger);
            AmbientLogger <TestAmbientService> serviceBrokerLogger = new AmbientLogger <TestAmbientService>(logger);
            IAmbientProgressService            progressTracker     = _ProgressService.Global;

            Assert.IsNotNull(progressTracker);
            IAmbientSettingsSet settings = _SettingsSet.Global;

            Assert.IsNotNull(settings);
            IJunk junk = _Junk.Global;

            Assert.IsNull(junk);


            ITest compareTest = test;

            Assert.IsNotNull(test);

            int   changed     = 0;
            ITest updatedTest = test;

            Assert.IsNotNull(updatedTest);
            EventHandler <EventArgs> globalChanged = (o, e) => { updatedTest = _Test.Global; ++changed; };

            _Test.GlobalChanged += globalChanged;

            _Test.Global = null;
            Assert.AreEqual(1, changed);
            Assert.IsNull(updatedTest);
            compareTest = null;

            ITest disabledTest = _Test.Global;

            Assert.IsNull(disabledTest);

            _Test.Global = test;
            Assert.AreEqual(2, changed);
            compareTest = test;

            ITest reenabledTest = _Test.Global;

            Assert.IsNotNull(reenabledTest);

            _Test.GlobalChanged -= globalChanged;
        }
        public async Task AmbientFileLoggerBasic()
        {
            string tempPath = Path.GetTempPath() + Guid.NewGuid().ToString("N");

            try
            {
                using (AmbientClock.Pause())
                    using (AmbientFileLogger loggerImp = new AmbientFileLogger(tempPath, ".log", 8 * 60))
                    {
                        // delete any preexisting files
                        await AmbientFileLogger.TryDeleteAllFiles(loggerImp.FilePrefix);

                        using (IDisposable over = Logger.ScopedLocalOverride(loggerImp))
                        {
                            IAmbientLogger logger = Logger.Local;
                            // log the first test message (this will cause the file to be created, but only *after* this message gets flushed
                            logger?.Log("test1");
                            Assert.AreEqual(0, TempFileCount(tempPath));
                            if (logger != null)
                            {
                                await logger.Flush();
                            }
                            Assert.AreEqual(1, TempFileCount(tempPath));
                            // log the second test message (since the clock is stopped, this will *never* create another file)
                            logger?.Log("test2");
                            if (logger != null)
                            {
                                await logger.Flush();
                            }
                            Assert.AreEqual(1, TempFileCount(tempPath));
                        }
                    }
            }
            finally
            {
                await AmbientFileLogger.TryDeleteAllFiles(tempPath);
            }
        }