예제 #1
0
        public void GetEnumerator_ProcessesRows()
        {
            IQueryable <GridModel>     items = new[] { new GridModel(), new GridModel() }.AsQueryable();
            IGridProcessor <GridModel> postProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IGridProcessor <GridModel> preProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IGridProcessor <GridModel> manProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IQueryable <GridModel>     postProcessedItems = new[] { new GridModel() }.AsQueryable();
            IQueryable <GridModel>     preProcessedItems = new[] { new GridModel() }.AsQueryable();

            manProcessor.ProcessorType  = GridProcessorType.Manual;
            postProcessor.ProcessorType = GridProcessorType.Post;
            preProcessor.ProcessorType  = GridProcessorType.Pre;
            Grid <GridModel> grid = new Grid <GridModel>(items);

            postProcessor.Process(preProcessedItems).Returns(postProcessedItems);
            manProcessor.Process(items).Returns(new GridModel[0].AsQueryable());
            preProcessor.Process(items).Returns(preProcessedItems);
            grid.Processors.Add(postProcessor);
            grid.Processors.Add(preProcessor);
            grid.Processors.Add(manProcessor);

            IEnumerable <Object> actual = new GridRows <GridModel>(grid).ToList().Select(row => row.Model);
            IEnumerable <Object> expected = postProcessedItems;

            postProcessor.Received().Process(preProcessedItems);
            manProcessor.DidNotReceive().Process(items);
            preProcessor.Received().Process(items);

            Assert.Equal(expected, actual);
        }
예제 #2
0
        public void GetEnumerator_OnNullCurrentRowsProcessesRows()
        {
            IQueryable <GridModel>     models = new[] { new GridModel(), new GridModel() }.AsQueryable();
            IGridProcessor <GridModel> postProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IGridProcessor <GridModel> preProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IQueryable <GridModel>     postProcessedModels = new[] { new GridModel() }.AsQueryable();
            IQueryable <GridModel>     preProcessedModels = new[] { new GridModel() }.AsQueryable();

            postProcessor.ProcessorType = GridProcessorType.Post;
            preProcessor.ProcessorType  = GridProcessorType.Pre;
            Grid <GridModel> grid       = new Grid <GridModel>(models);

            postProcessor.Process(preProcessedModels).Returns(postProcessedModels);
            preProcessor.Process(models).Returns(preProcessedModels);
            grid.Processors.Add(postProcessor);
            grid.Processors.Add(preProcessor);

            GridRows <GridModel>   rows = new GridRows <GridModel>(grid);
            IEnumerable <IGridRow> currentRows = rows.CurrentRows;

            IEnumerable <Object> actual   = rows.ToList().Select(row => row.Model);
            IEnumerable <Object> expected = postProcessedModels;

            postProcessor.Received().Process(preProcessedModels);
            CollectionAssert.AreEqual(expected, actual);
            preProcessor.Received().Process(models);
            Assert.IsNull(currentRows);
        }
예제 #3
0
 public SpawnController(IControllerFactory controllerFactory,
                        BlocksSpawner blocksSpawner,
                        IGridProcessor gridProcessor)
     : base(controllerFactory)
 {
     _blocksSpawner = blocksSpawner;
     _gridProcessor = gridProcessor;
 }
예제 #4
0
        public void ProcessWith_AddsProcessorToGrid()
        {
            IGridProcessor <GridModel> processor = Substitute.For <IGridProcessor <GridModel> >();

            htmlGrid.Grid.Processors.Clear();
            htmlGrid.ProcessWith(processor);

            Object actual   = htmlGrid.Grid.Processors.Single();
            Object expected = processor;

            Assert.Same(expected, actual);
        }
예제 #5
0
        public void GetEnumerator_CachesRows()
        {
            IQueryable <GridModel>     items = new[] { new GridModel(), new GridModel() }.AsQueryable();
            IGridProcessor <GridModel> preProcessor = Substitute.For <IGridProcessor <GridModel> >();

            preProcessor.Process(items).Returns(Array.Empty <GridModel>().AsQueryable());
            preProcessor.ProcessorType = GridProcessorType.Pre;
            Grid <GridModel> grid = new Grid <GridModel>(items);

            GridRows <GridModel> rows = new GridRows <GridModel>(grid);

            rows.ToList();

            grid.Processors.Add(preProcessor);

            IEnumerable <Object> actual   = rows.ToList().Select(row => row.Model);
            IEnumerable <Object> expected = items;

            preProcessor.DidNotReceive().Process(Arg.Any <IQueryable <GridModel> >());
            Assert.Equal(expected, actual);
        }
예제 #6
0
        public void GetEnumerator_ReturnsCurrentRows()
        {
            IQueryable <GridModel>     models = new[] { new GridModel(), new GridModel() }.AsQueryable();
            IGridProcessor <GridModel> preProcessor = Substitute.For <IGridProcessor <GridModel> >();

            preProcessor.Process(models).Returns(new GridModel[0].AsQueryable());
            preProcessor.ProcessorType = GridProcessorType.Pre;
            Grid <GridModel> grid = new Grid <GridModel>(models);

            GridRows <GridModel> rows = new GridRows <GridModel>(grid);

            rows.ToList();

            grid.Processors.Add(preProcessor);

            IEnumerable <Object> actual   = rows.ToList().Select(row => row.Model);
            IEnumerable <Object> expected = models;

            preProcessor.DidNotReceive().Process(Arg.Any <IQueryable <GridModel> >());
            CollectionAssert.AreEqual(expected, actual);
        }
예제 #7
0
        public void GetEnumerator_AutomaticallyProcessesRows()
        {
            IQueryable <GridModel>     items = new[] { new GridModel(), new GridModel() }.AsQueryable();
            IGridProcessor <GridModel> postProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IGridProcessor <GridModel> preProcessor = Substitute.For <IGridProcessor <GridModel> >();
            IQueryable <GridModel>     postProcessedItems = new[] { new GridModel() }.AsQueryable();
            IQueryable <GridModel>     preProcessedItems = new[] { new GridModel() }.AsQueryable();

            postProcessor.ProcessorType = GridProcessorType.Post;
            preProcessor.ProcessorType  = GridProcessorType.Pre;
            Grid <GridModel> grid = new Grid <GridModel>(items);

            grid.Mode = GridProcessingMode.Automatic;

            postProcessor.Process(preProcessedItems).Returns(postProcessedItems);
            preProcessor.Process(items).Returns(preProcessedItems);
            grid.Processors.Add(postProcessor);
            grid.Processors.Add(preProcessor);

            IEnumerable <Object> actual = new GridRows <GridModel>(grid).ToList().Select(row => row.Model);
            IEnumerable <Object> expected = postProcessedItems;

            Assert.Equal(expected, actual);
        }
 public GhostBlockMovement(IGridProcessor gridProcessorProcessor)
 {
     _gridProcessor = gridProcessorProcessor;
 }
예제 #9
0
        public virtual IHtmlGrid <T> ProcessWith(IGridProcessor <T> processor)
        {
            Grid.Processors.Add(processor);

            return(this);
        }
예제 #10
0
        public static IHtmlGrid <T> ProcessWith <T>(this IHtmlGrid <T> html, IGridProcessor <T> processor)
        {
            html.Grid.Processors.Add(processor);

            return(html);
        }
예제 #11
0
 public BlockMovement(IAudioPlayer audioPlayer, IGridProcessor gridProcessor, BlocksSpeedSettings speedSettings)
 {
     _gridProcessor = gridProcessor;
     _speedSettings = speedSettings;
     _audioPlayer   = audioPlayer;
 }