Example #1
0
        public World(IControls controls)
        {
            _controls = controls;

            _start = new State
            {
                Update = StartUpdate,
                Draw   = StartDraw
            };
            _alive = new State
            {
                Update = AliveUpdate,
                Draw   = AliveDraw
            };
            _dead = new State
            {
                Update = DeadUpdate,
                Draw   = DeadDraw
            };
            _gameOver = new State
            {
                Update = GameOverUpdate,
                Draw   = GameOverDraw
            };

            _state          = _start;
            _viewer         = new Viewer();
            _bird           = new Bird(controls);
            _pipeCollection = new PipeCollection();
        }
        public void WizardLoggingExtensionMethods_RollingFileLogger()
        {
            var currentFolderPath = Path.GetDirectoryName(GetType().Assembly.Location);
            var folderPath        = Path.Combine(currentFolderPath, "TestLogs");
            var fileProvider      = new RollingFileProvider(folderPath);
            var serializer        = StringLogSerializerBuilder.DefaultSerializer;
            var serializerApply   = new Action <StringLogSerializerBuilder>(s => { });
            var recordVerifier    = new MinimumLogLevelVerifier(LogLevel.Debug);
            var minLevel          = LogLevel.Debug;
            var enc   = Encoding.UTF8;
            var pipes = new PipeCollection <RollingFileContext>();

            var l1  = LoggingWizard.Spell.RollingFileLogger(fileProvider, serializer, enc, pipes);
            var l2  = LoggingWizard.Spell.RollingFileLogger(fileProvider, serializerApply, enc, pipes);
            var l3  = LoggingWizard.Spell.RollingFileLogger(folderPath, serializer, enc, pipes);
            var l4  = LoggingWizard.Spell.RollingFileLogger(folderPath, serializerApply, enc, pipes);
            var l5  = LoggingWizard.Spell.RollingFileLogger(fileProvider, recordVerifier, serializer, enc, pipes);
            var l6  = LoggingWizard.Spell.RollingFileLogger(fileProvider, recordVerifier, serializerApply, enc, pipes);
            var l7  = LoggingWizard.Spell.RollingFileLogger(fileProvider, minLevel, serializer, enc, pipes);
            var l8  = LoggingWizard.Spell.RollingFileLogger(fileProvider, minLevel, serializerApply, enc, pipes);
            var l9  = LoggingWizard.Spell.RollingFileLogger(folderPath, recordVerifier, serializer, enc, pipes);
            var l10 = LoggingWizard.Spell.RollingFileLogger(folderPath, recordVerifier, serializerApply, enc, pipes);
            var l11 = LoggingWizard.Spell.RollingFileLogger(folderPath, minLevel, serializer, enc, pipes);
            var l12 = LoggingWizard.Spell.RollingFileLogger(folderPath, minLevel, serializerApply, enc, pipes);
        }
 //3
 public static BackgroundLogger BackgroundRollingFileLogger(
     this LoggingWizardCharms charms,
     string folderPath,
     IStringLogSerializer serializer = null,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(BackgroundRollingFileLogger(
                charms,
                folderPath,
                new MinimumLogLevelVerifier(LogLevel.Debug),
                serializer,
                encoding,
                pipes
                ));
 }
Example #4
0
 //9
 public static RollingFileLogger RollingFileLogger(
     this LoggingWizardCharms charms,
     IRollingFileProvider fileProvider,
     IStringLogSerializer serializer = null,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(RollingFileLogger(
                charms,
                fileProvider,
                new MinimumLogLevelVerifier(LogLevel.Debug),
                serializer,
                encoding,
                pipes
                ));
 }
 //12
 public static BackgroundLogger BackgroundRollingFileLogger(
     this LoggingWizardCharms charms,
     IRollingFileProvider fileProvider,
     Action <StringLogSerializerBuilder> serializerApply,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(BackgroundRollingFileLogger(
                charms,
                fileProvider,
                new MinimumLogLevelVerifier(LogLevel.Debug),
                serializerApply,
                encoding,
                pipes
                ));
 }
Example #6
0
 //6
 public static RollingFileLogger RollingFileLogger(
     this LoggingWizardCharms charms,
     string folderPath,
     Action <StringLogSerializerBuilder> serializerApply,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(RollingFileLogger(
                charms,
                folderPath,
                new MinimumLogLevelVerifier(LogLevel.Debug),
                serializerApply,
                encoding,
                pipes
                ));
 }
 //8
 public static BackgroundLogger BackgroundRollingFileLogger(
     this LoggingWizardCharms charms,
     IRollingFileProvider fileProvider,
     LogLevel minLevel,
     IStringLogSerializer serializer = null,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(BackgroundRollingFileLogger(
                charms,
                fileProvider,
                new MinimumLogLevelVerifier(minLevel),
                serializer,
                encoding,
                pipes
                ));
 }
 //1
 public static BackgroundLogger BackgroundRollingFileLogger(
     this LoggingWizardCharms charms,
     string folderPath,
     ILogRecordVerifier recordVerifier,
     IStringLogSerializer serializer = null,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(BackgroundRollingFileLogger(
                charms,
                new RollingFileProvider(folderPath),
                recordVerifier,
                serializer,
                encoding,
                pipes
                ));
 }
Example #9
0
 //2
 public static RollingFileLogger RollingFileLogger(
     this LoggingWizardCharms charms,
     string folderPath,
     LogLevel minLevel,
     IStringLogSerializer serializer = null,
     Encoding encoding = null,
     PipeCollection <RollingFileContext> pipes = null
     )
 {
     return(RollingFileLogger(
                charms,
                folderPath,
                new MinimumLogLevelVerifier(minLevel),
                serializer,
                encoding,
                pipes
                ));
 }
        //7
        public static BackgroundLogger BackgroundRollingFileLogger(
            this LoggingWizardCharms charms,
            IRollingFileProvider fileProvider,
            ILogRecordVerifier recordVerifier,
            IStringLogSerializer serializer = null,
            Encoding encoding = null,
            PipeCollection <RollingFileContext> pipes = null
            )
        {
            var baseLogger = new RollingFileLogger(fileProvider)
            {
                RecordVerifier = recordVerifier
            };

            baseLogger.Serializer = serializer ?? baseLogger.Serializer;
            baseLogger.Encoding   = encoding ?? baseLogger.Encoding;
            baseLogger.Pipes      = pipes ?? baseLogger.Pipes;

            return(charms.BackgroundLogger(baseLogger));
        }
Example #11
0
        //7
        public static RollingFileLogger RollingFileLogger(
            this LoggingWizardCharms charms,
            IRollingFileProvider fileProvider,
            ILogRecordVerifier recordVerifier,
            IStringLogSerializer serializer = null,
            Encoding encoding = null,
            PipeCollection <RollingFileContext> pipes = null
            )
        {
            var logger = new RollingFileLogger(fileProvider)
            {
                RecordVerifier = recordVerifier
            };

            logger.Serializer = serializer ?? logger.Serializer;
            logger.Encoding   = encoding ?? logger.Encoding;
            logger.Pipes      = pipes ?? logger.Pipes;

            return(logger);
        }
        //4
        public static BackgroundLogger BackgroundRollingFileLogger(
            this LoggingWizardCharms charms,
            string folderPath,
            ILogRecordVerifier recordVerifier,
            Action <StringLogSerializerBuilder> serializerApply,
            Encoding encoding = null,
            PipeCollection <RollingFileContext> pipes = null
            )
        {
            var serializerBuilder = new StringLogSerializerBuilder();

            serializerApply?.Invoke(serializerBuilder);

            var serializer = serializerBuilder.BuildSerializer();

            return(BackgroundRollingFileLogger(
                       charms,
                       folderPath,
                       recordVerifier,
                       serializer,
                       encoding,
                       pipes
                       ));
        }
Example #13
0
        //10
        public static RollingFileLogger RollingFileLogger(
            this LoggingWizardCharms charms,
            IRollingFileProvider fileProvider,
            ILogRecordVerifier recordVerifier,
            Action <StringLogSerializerBuilder> serializerApply,
            Encoding encoding = null,
            PipeCollection <RollingFileContext> pipes = null
            )
        {
            var serializerBuilder = new StringLogSerializerBuilder();

            serializerApply?.Invoke(serializerBuilder);

            var serializer = serializerBuilder.BuildSerializer();

            return(RollingFileLogger(
                       charms,
                       fileProvider,
                       recordVerifier,
                       serializer,
                       encoding,
                       pipes
                       ));
        }
        public void RollingFileLogger_CustomPipeline()
        {
            #region Arrange

            var currentFolderPath = Path.GetDirectoryName(GetType().Assembly.Location);
            var currentFolder     = new DirectoryInfo(currentFolderPath);

            var log = new LogRecord
            {
                Timestamp = DateTime.Now,
                Message   = "str",
                Level     = LogLevel.Error,
                Exception = new Exception("Ex")
            };

            var filePathTemplate = $"{currentFolderPath}\\log.txt";
            var lastFileMock     = new Mock <FileInformation>(filePathTemplate);
            lastFileMock.SetupGet(x => x.CreationTime).Returns(DateTime.Now);
            lastFileMock.SetupGet(x => x.FullName).Returns(filePathTemplate);
            lastFileMock.SetupGet(x => x.Exists).Returns(true);

            var files = new List <FileInformation> {
                lastFileMock.Object
            };

            new DirectoryInfo(currentFolderPath).GetFiles("*.txt").Each(x => x.Delete());

            var fileProviderMock = new Mock <IRollingFileProvider>();
            fileProviderMock.Setup(x => x.GetFiles()).Returns(() => files.ToArray());
            fileProviderMock.Setup(x => x.Directory).Returns(currentFolder);
            fileProviderMock.Setup(x => x.TryResolveLastFile()).Returns(lastFileMock.Object);
            fileProviderMock.Setup(x => x.ProduceNewFile()).Returns(() =>
            {
                var newFilePath = filePathTemplate.Replace(".txt", (files.Count + 1) + ".txt");

                var fm = new Mock <FileInformation>(newFilePath);
                fm.SetupGet(x => x.CreationTime).Returns(DateTime.Now);
                fm.SetupGet(x => x.FullName).Returns(newFilePath);
                fm.SetupGet(x => x.Exists).Returns(false);

                files.Add(fm.Object);

                return(fm.Object);
            });

            var logs = new List <LogRecord>();

            var pipes = new PipeCollection <RollingFileContext>()
                        .Add(new RollingFileWriterPipe())
                        .Add((c, n) =>
            {
                n(c);
                logs.AddRange(c.Batch);
            })
                        .Add((c, n) =>
            {
                c.Batch.Each(x => x.Message = x.Message.ToUpper());
                n(c);
            });

            var logger = new RollingFileLogger(fileProviderMock.Object)
            {
                Pipes = pipes
            };

            #endregion Arrange

            #region Act

            logger.Log(log);
            logger.Dispose();

            #endregion Act

            #region Assert

            var logFile = new FileInfo(lastFileMock.Object.FullName);

            Assert.IsTrue(logFile.Exists);
            Assert.AreEqual(1, logs.Count);
            Assert.AreSame(logs[0], log);
            Assert.AreEqual(logs[0].Message, log.Message.ToUpper());
            //because last file exists
            fileProviderMock.Verify(x => x.ProduceNewFile(), Times.Never());
            fileProviderMock.Verify(x => x.TryResolveLastFile(), Times.Once());

            new DirectoryInfo(currentFolderPath).GetFiles("*.txt").Each(x => x.Delete());

            #endregion Assert
        }
Example #15
0
        /// <summary>
        /// 多管一键标注
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_AllMulltiplePipe_Click(object sender, EventArgs e)
        {
            if (!CheckInputsOfMultiple())
            {
                return;
            }
            if (!CheckInputsOfSingle())
            {
                return;
            }
            if (!CheckInputsOfCommon())
            {
                return;
            }

            //先删除后新增
            var lines = new FilteredElementCollector(Doc, View.Id)
                        .OfClass(typeof(FamilyInstance))
                        .WherePasses(new FamilyInstanceFilter(Doc, PAContext.GetMultipleTagSymbol(Doc).Id));
            var pipeTags = new FilteredElementCollector(Doc, View.Id)
                           .OfCategory(BuiltInCategory.OST_PipeTags)
                           .WhereElementIsNotElementType();

            if (pipeTags.Count() > 0 || lines.Count() > 0)
            {
                if (PMMessageBox.ShowQuestion("已存在标注,继续将重新生成所有管道标注", MessageBoxButtons.OKCancel) != DialogResult.OK)
                {
                    return;
                }
            }
            DelegateHelper.DelegateTransaction(Doc, "清空已有标注", () =>
            {
                //清空模型对象
                var lineIds = lines.Select(c => c.Id).ToList();
                foreach (var lineId in lineIds)
                {
                    Doc.Delete(lineId);
                }
                var pipeTagIds = pipeTags.Select(c => c.Id).ToList();
                foreach (var pipeTagId in pipeTagIds)
                {
                    Doc.Delete(pipeTagId);
                }
                //删除存储的关联
                var storageCollection = PAContext.GetCollection(Doc);
                storageCollection.RemoveAll(c => c.ViewId == View.Id.IntegerValue);
                storageCollection.Save(Doc);
                var creator = new AnnotationCreater();
                //生成处理
                var pipes = new FilteredElementCollector(Doc, View.Id)
                            .OfCategory(BuiltInCategory.OST_PipeCurves)
                            .WhereElementIsNotElementType();
                PipeCollection collection = new PipeCollection();
                foreach (Pipe pipe in pipes)
                {
                    if (CheckFilter(pipe))
                    {
                        collection.Add(pipe);
                    }
                }
                collection.SortBySkew();
                List <PipeGroup> slopedPipeGroups = null;
                try
                {
                    slopedPipeGroups = collection.GetPipeGroups(PipeAnnotationCmd.PipeAnnotationUIData.SettingForMultiple.LengthBetweenPipe_Inch);
                }
                catch (Exception ex)//特定情况暂时以提示处理,比如连续超过7个,比如
                {
                    TaskDialog.Show("警告", ex.Message);
                    return(false);
                }
                foreach (var pipeGroup in slopedPipeGroups)
                {
                    if (pipeGroup.Count > 1)
                    {
                        creator.GenerateMultipleTagSymbol(Doc, pipeGroup.Select(c => c.Id), PipeAnnotationCmd.PipeAnnotationUIData.SettingForMultiple, false);
                    }
                    else
                    {
                        var pipe            = Doc.GetElement(pipeGroup.First().Id) as Pipe;
                        var setting         = PipeAnnotationCmd.PipeAnnotationUIData.SettingForSingle;
                        var headerPoint     = setting.GetHeaderPoint(pipe);
                        var tag             = Doc.Create.NewTag(View, pipe, setting.NeedLeader, TagMode.TM_ADDBY_CATEGORY, TagOrientation.Horizontal, headerPoint);
                        tag.TagHeadPosition = headerPoint;
                    }
                }
                creator.FinishMultipleGenerate(Doc);
                return(true);
            });
        }
        public void WizardLoggingExtensions_RollingFileLogger()
        {
            #region Arrange

            var defaultMinLevel       = LogLevel.Debug;
            var defaultEncoding       = new UTF8Encoding(false);
            var defaultOutputTemplate = StringLogSerializer.DefaultOutputTemplate;
            var minLevel       = LogLevel.Warning;
            var levelVerifier  = new RangeLogLevelVerifier(LogLevel.Debug, LogLevel.Warning);
            var outputTemplate = "{Message}";
            var serializer     = new StringLogSerializer {
                OutputTemplate = outputTemplate
            };
            var serializerApply      = new Action <StringLogSerializer>(s => { s.OutputTemplate = outputTemplate; });
            var encoding             = Encoding.ASCII;
            var folder               = Environment.CurrentDirectory;
            var fileNameProviderMock = new Mock <IRollingFileProvider>();
            fileNameProviderMock.SetupGet(x => x.FolderPath).Returns(folder);
            var fileNameProvider = fileNameProviderMock.Object;
            var stubPipe         = LambdaPipe <RollingFileContext> .Stub;
            var stubPipeDelegate = new Action <RollingFileContext, Action <RollingFileContext> >(
                (c, n) => { stubPipe.Perform(c); n(c); }
                );
            var pipeCollection = new PipeCollection <RollingFileContext>().Apply(c => c.Add(stubPipe));

            #endregion Arrange

            #region Act

            var logger1  = LoggingWizard.Spell.RollingFileLogger(folder);
            var logger2  = LoggingWizard.Spell.RollingFileLogger(folder, serializer, encoding, pipeCollection);
            var logger3  = LoggingWizard.Spell.RollingFileLogger(folder, serializerApply, encoding, pipeCollection);
            var logger4  = LoggingWizard.Spell.RollingFileLogger(folder, minLevel, serializer, encoding, pipeCollection);
            var logger5  = LoggingWizard.Spell.RollingFileLogger(folder, levelVerifier, serializer, encoding, pipeCollection);
            var logger6  = LoggingWizard.Spell.RollingFileLogger(folder, minLevel, serializerApply, encoding, pipeCollection);
            var logger7  = LoggingWizard.Spell.RollingFileLogger(folder, levelVerifier, serializerApply, encoding, pipeCollection);
            var logger8  = LoggingWizard.Spell.RollingFileLogger(fileNameProvider);
            var logger9  = LoggingWizard.Spell.RollingFileLogger(fileNameProvider, serializer, encoding, pipeCollection);
            var logger10 = LoggingWizard.Spell.RollingFileLogger(fileNameProvider, serializerApply, encoding, pipeCollection);
            var logger11 = LoggingWizard.Spell.RollingFileLogger(fileNameProvider, minLevel, serializer, encoding, pipeCollection);
            var logger12 = LoggingWizard.Spell.RollingFileLogger(fileNameProvider, levelVerifier, serializer, encoding, pipeCollection);
            var logger13 = LoggingWizard.Spell.RollingFileLogger(fileNameProvider, minLevel, serializerApply, encoding, pipeCollection);
            var logger14 = LoggingWizard.Spell.RollingFileLogger(fileNameProvider, levelVerifier, serializerApply, encoding, pipeCollection);

            #endregion Act

            #region Assert

            Assert.IsNotEmpty(logger1.Pipes);
            Assert.AreEqual(defaultMinLevel, logger1.RecordVerifier.CastTo <MinimumLogLevelVerifier>().MinimumLevel);
            Assert.AreEqual(defaultOutputTemplate, logger1.Serializer.CastTo <StringLogSerializer>().OutputTemplate);
            Assert.AreEqual(defaultEncoding, logger1.Encoding);
            Assert.AreEqual(folder, logger1.FileProvider.FolderPath);

            Assert.AreEqual(pipeCollection, logger2.Pipes);
            Assert.AreEqual(serializer, logger2.Serializer);
            Assert.AreEqual(encoding, logger2.Encoding);
            Assert.AreEqual(defaultMinLevel, logger2.RecordVerifier.CastTo <MinimumLogLevelVerifier>().MinimumLevel);
            Assert.AreEqual(folder, logger2.FileProvider.FolderPath);

            #endregion Assert
        }