public void TestCreateGrid()
        {
            ChristmasLightsGrid grid = new ChristmasLightsGrid();
            int columns = 10;
            int rows    = 10;

            grid.Columns = columns;
            grid.Rows    = rows;
            grid.GenerateGridCommand.Execute(null);
            Assert.AreEqual(columns * rows, grid.Lights.Count, "Grid cell count do not match.");
        }
        public void TestSetGrid()
        {
            ChristmasLightsGrid grid = new ChristmasLightsGrid();
            int expectedRows         = 10;
            int expectedColumns      = 20;

            Assert.AreEqual(0, grid.Columns);
            Assert.AreEqual(0, grid.Rows);
            grid.Columns = expectedColumns;
            grid.Rows    = expectedRows;
            Assert.AreEqual(expectedColumns, grid.Columns, "Column test failed");
            Assert.AreEqual(expectedRows, grid.Rows, "Row test failed");
        }
Пример #3
0
        private void GenerateGrid_Click(object sender, RoutedEventArgs e)
        {
            ChristmasLightsGrid dc = (ChristmasLightsGrid)DataContext;

            dc.Rows = dc.Columns;
            dc.GenerateGridCommand.Execute(null);
            for (int y = 0; y < dc.Rows; y++)
            {
                LightGrid.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(2)
                });
                LightGrid.ColumnDefinitions.Add(new ColumnDefinition {
                    Width = new GridLength(2)
                });
            }

            int       i         = 0;
            Stopwatch stopwatch = Stopwatch.StartNew();

            for (int x = 0; x < dc.Columns; x++)
            {
                for (int y = 0; y < dc.Rows; y++)
                {
                    Border cell = new Border();
                    cell.SetBinding(Border.BackgroundProperty,
                                    new Binding
                    {
                        Path =
                            new PropertyPath(
                                $"Lights[{i}].Lit"),
                        Source              = dc,
                        Converter           = new BoolToBrushConverter(),
                        UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
                        IsAsync             = true
                    });
                    Grid.SetColumn(cell, x);
                    Grid.SetRow(cell, y);
                    LightGrid.Children.Add(cell);
                    i++;
                }
            }
            stopwatch.Stop();
            TimeSpan span = new TimeSpan(stopwatch.ElapsedTicks);

            Console.WriteLine($"Time taken for {dc.Columns}x{dc.Rows} grid: {span}");
        }
        public void TestTurnOnAllLights()
        {
            ChristmasLightsGrid grid       = new ChristmasLightsGrid();
            int           columns          = 1000;
            int           rows             = columns;
            List <string> instructionsList = new List <string> {
                "turn on 0,0 through 999,999"
            };

            grid.Columns      = columns;
            grid.Rows         = rows;
            grid.Instructions = instructionsList;
            grid.GenerateGridCommand.Execute(null);
            grid.FollowInstructionsCommand.Execute(null);
            int actual = grid.Lights.Count(x => x.Lit);

            Assert.AreEqual(columns * rows, actual, $"Some lights failed to turn on. Total lights on: {actual}.");
        }
Пример #5
0
        static void Main(string[] args)
        {
            int           cols            = 1000;
            int           rows            = cols;
            List <string> instructionList = File.ReadAllLines("input.txt").ToList();

            //new List<string>
            //{
            //    "toggle 0,0 through 999,999"
            //};
            _grid = new ChristmasLightsGrid
            {
                Columns = cols,
                Rows    = rows,
                Lights  = new List <ChristmasLight>()
            };

            Part1(instructionList);
            Part2(instructionList);
            Console.Write("Press any key.");
            Console.ReadKey();
        }
        public void TestSetGridDimensions()
        {
            ChristmasLightsGrid grid = new ChristmasLightsGrid();
            int columns = 10;
            int rows    = 10;

            grid.Columns = columns;
            grid.Rows    = rows;
            Assert.AreEqual(columns, grid.Columns, "Columns do not match");
            Assert.AreEqual(rows, grid.Rows, "Rows do not match");
            try
            {
                columns      = -1;
                rows         = -1;
                grid.Columns = columns;
                grid.Rows    = rows;
                Assert.AreEqual(columns, grid.Columns);
                Assert.AreEqual(rows, grid.Rows);
            }
            catch (ArgumentOutOfRangeException e)
            {
                StringAssert.Contains(e.Message, ChristmasLightsGrid.ArgumentOutOfRangeMessage);
            }
        }