Ejemplo n.º 1
0
        public static void ToHtml <T>(this UniversalGrid <T> grid, TextWriter output, string tableClass = null)
        {
            var htmlFormatter = new HtmlFormatter <T>(output, x => x.ToString(), tableClass);
            var writer        = new GridWriter <T>(htmlFormatter);

            writer.Write(grid);
        }
Ejemplo n.º 2
0
        public void SetObject_AtZero_FiredItemAddedAndModifiedEvent()
        {
            var grid = new UniversalGrid <string>(10, 20);

            var thing1 = new Spatial2DThing <string>(new Point2D());

            bool evFired = false;

            grid.ItemAdded += (s, e) =>
            {
                Assert.That(e.Target, Is.SameAs(thing1));
                evFired = true;
            };

            var modified = false;

            grid.Modified += (s, e) =>
            {
                modified = true;
            };

            grid.SetObject(thing1);

            Assert.That(modified);
            Assert.That(evFired);
        }
Ejemplo n.º 3
0
        public static void ToCsv <T>(this UniversalGrid <T> grid, TextWriter output, char delimitter = '\t')
        {
            var htmlFormatter = new CsvFormatter <T>(output, x => x.ToString(), delimitter);
            var writer        = new GridWriter <T>(htmlFormatter);

            writer.Write(grid);
        }
Ejemplo n.º 4
0
        public void Move_RuleViolation_RaisesEvent()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var thing1 = "A".AsSpatialObject(1, 1);

            ISpatialRule rule = null;

            grid.RuleViolated += (s, e) =>
            {
                rule = e.Rule;
            };

            grid.AddConstraint((x, m) => m.Any(p => p.Y > 1), 1, 23); // Add a rule which prevents Y from exceeding 2

            grid.SetObject(thing1);

            thing1.Move(Direction.Right); // 2, 1

            Assert.That(rule == null);

            thing1.Move(Direction.Down); // try to move => 2, 2

            Assert.That(thing1.TopLeft.Y, Is.EqualTo(1), "The Y value should remain unchanged");
            Assert.That(thing1.TopLeft.X, Is.EqualTo(2), "The X value should remain unchanged");

            Assert.That(rule.Id == 23);
        }
Ejemplo n.º 5
0
        private static void RenderToConsole(UniversalGrid <char> grid)
        {
            Console.Clear();
            Console.WriteLine();

            var r = -1;

            grid.Render((p, m) =>
            {
                if (p.Y > r)
                {
                    //if(r > -1) Console.Write("|");

                    Console.WriteLine();
                    Console.Write(p.Y.ToString().PadRight(3));
                    Console.Write("|");
                }

                if (m.Any())
                {
                    Console.Write("O");
                }
                else
                {
                    Console.Write(" ");
                }

                Console.Write("|");

                r = p.Y;
            });

            Console.WriteLine();
        }
Ejemplo n.º 6
0
        public void Write(UniversalGrid <T> grid)
        {
            var r = grid.TopLeft.Y - 1;
            var c = -1;

            _textFormatter.WriteStartGrid(grid);

            grid.Render((p, x) =>
            {
                if (p.Y > r)
                {
                    if (r > -1)
                    {
                        _textFormatter.WriteEndRow();
                    }
                    _textFormatter.WriteStartRow(p.Y - grid.TopLeft.Y);
                    c = 0;
                }

                _textFormatter.WriteCell(p, c, x);

                c++;
                r = p.Y;
            });

            if (r > -1)
            {
                _textFormatter.WriteEndRow();
            }

            _textFormatter.WriteEndGrid();
        }
Ejemplo n.º 7
0
 public static string ToCsv <T>(this UniversalGrid <T> grid, char delimitter = '\t')
 {
     using (var output = new StringWriter())
     {
         grid.ToCsv(output, delimitter);
         return(output.ToString());
     }
 }
Ejemplo n.º 8
0
        public void Clear_EmptyGrid_ReturnsFalse()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var cleared = grid.Clear();

            Assert.That(cleared, Is.False);
        }
Ejemplo n.º 9
0
 public static string ToHtml <T>(this UniversalGrid <T> grid, string tableClass = null)
 {
     using (var output = new StringWriter())
     {
         grid.ToHtml(output, tableClass);
         return(output.ToString());
     }
 }
Ejemplo n.º 10
0
        public void GetObjectsWithin_ReturnsCorrectObject()
        {
            var grid = new UniversalGrid <string>(10, 20);

            var thing1 = "A".AsSpatialObject(1, 1);

            grid.SetObject(thing1);

            Assert.That(grid.GetObjectsWithin(new Rectangle(0, 0, 5, 5)).Single(), Is.EqualTo(thing1));
        }
Ejemplo n.º 11
0
        public void SetObject_TwoEqualObjects_ThrowsError()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var thing1 = "a".AsSpatialObject(1, 1);
            var thing2 = "a".AsSpatialObject(1, 1);

            grid.SetObject(thing1);

            Assert.Throws <InvalidOperationException>(() => grid.SetObject(thing2));
        }
Ejemplo n.º 12
0
        public void SetObject_DuplicateId_ThrowsError()
        {
            var grid = new UniversalGrid <int>(10, 20);

            var thing1 = (1).AsSpatialObject(1, 1, "a");
            var thing2 = (2).AsSpatialObject(1, 2, "a");

            grid.SetObject(thing1);

            Assert.Throws <InvalidOperationException>(() => grid.SetObject(thing2));
        }
Ejemplo n.º 13
0
        public void ToCsv_ReturnsValidData()
        {
            var grid = new UniversalGrid <string>(3, 3);

            grid.SetObject("X", 0, 0);
            grid.SetObject("O", 1, 1);
            grid.SetObject("X", 2, 2);

            var csv = grid.ToCsv(',');

            Console.WriteLine(csv);
        }
Ejemplo n.º 14
0
        public void Render_ToConsole()
        {
            var grid = new UniversalGrid <int>(10, 10);

            var item = grid.SetObject(7, 5, 5);

            item.Label = "X";

            var cellCount = RenderToConsole(grid);

            Assert.That(cellCount, Is.EqualTo(100));
        }
Ejemplo n.º 15
0
        public void Clear_SingleItem_ReturnsTrue()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var thing1 = "a".AsSpatialObject(1, 1);

            grid.SetObject(thing1);

            var cleared = grid.Clear();

            Assert.That(cleared);
        }
Ejemplo n.º 16
0
        public void Move_OutOfBounds_ThrowsError()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var thing1 = "A".AsSpatialObject(1, 1);

            grid.SetObject(thing1);

            thing1.Move(Direction.Down);                                                   // 1, 2

            Assert.Throws <ObjectOutOfBoundsException>(() => thing1.Move(Direction.Down)); // 1, 3
        }
Ejemplo n.º 17
0
        public Game(int width = 10, int height = 22)
        {
            Board = new UniversalGrid <char>(width, height)
            {
                UnitHeight = 50,
                UnitWidth  = 50
            };

            Board.ItemMoved += OnMove;

            _generator = new TetrominoGenerator();
        }
Ejemplo n.º 18
0
        public static XDocument ToSvg <T>(this UniversalGrid <T> grid, Func <T, XNode> objectFormatter = null)
        {
            var doc = new XDocument();

            using (var output = doc.CreateWriter())
            {
                var htmlFormatter = new SvgFormatter <T>(output, objectFormatter ?? (x => x == null ? null : new XText(x.ToString())));
                var writer        = new GridWriter <T>(htmlFormatter);
                writer.Write(grid);
            }

            return(doc);
        }
Ejemplo n.º 19
0
        private void ExecutedStartCommand(object sender, ExecutedRoutedEventArgs e)
        {
            var chart = new SciChartSurface
            {
                ChartModifier = new ModifierGroup(
                    new RubberBandXyZoomModifier {
                    ExecuteOn = ExecuteOn.MouseLeftButton
                },
                    new ZoomExtentsModifier {
                    ExecuteOn = ExecuteOn.MouseDoubleClick
                }
                    )
            };

            ThemeManager.SetTheme(chart, "Chrome");
            ChartPanel.Content = chart;

            var grid = new UniversalGrid();

            GridPanel.Content = grid;

            try
            {
                _analyticStrategy = _scriptType.CreateInstance <BaseAnalyticsStrategy>();
                _analyticStrategy.ProcessStateChanged += s =>
                {
                    if (_analyticStrategy != null && _analyticStrategy.ProcessState == ProcessStates.Stopped)
                    {
                        //_isProgress = false;
                        _analyticStrategy = null;
                    }
                };

                //_isProgress = true;
                _analyticStrategy.Security = _parameters.Security;
                _analyticStrategy.From     = _parameters.From;
                _analyticStrategy.To       = _parameters.To;
                _analyticStrategy.Environment.SetValue("Drive", _parameters.Drive);
                _analyticStrategy.Environment.SetValue("StorageFormat", _parameters.StorageFormat);
                _analyticStrategy.Environment.SetValue("Chart", chart);
                _analyticStrategy.Environment.SetValue("Grid", grid);
                _analyticStrategy.Start();
            }
            catch (Exception ex)
            {
                ex.LogError();
                //_isProgress = false;
                _analyticStrategy = null;
            }
        }
Ejemplo n.º 20
0
        public void GetObjectsWithin_ReturnsCorrectObjects()
        {
            var grid = new UniversalGrid <string>(10, 20);

            var thing1 = "A".AsSpatialObject(1, 1);
            var thing2 = "B".AsSpatialObject(1, 2);

            grid.SetObjects(thing1, thing2);

            var objs = grid.GetObjectsWithin(new Rectangle(0, 0, 5, 5)).ToList();

            Assert.That(objs.First(), Is.EqualTo(thing1));
            Assert.That(objs.Skip(1).First(), Is.EqualTo(thing2));
            Assert.That(objs.Count, Is.EqualTo(2));
        }
Ejemplo n.º 21
0
        public void CreateInstance_InitialisesAsExpected()
        {
            var grid = new UniversalGrid <string>(10, 20);

            Assert.That(grid.Rows.Count(), Is.EqualTo(20));
            Assert.That(grid.Rows.First().First().X, Is.EqualTo(0));
            Assert.That(grid.Rows.Last().Last().X, Is.EqualTo(9));
            Assert.That(grid.Rows.First().First().Y, Is.EqualTo(0));
            Assert.That(grid.Rows.Last().Last().Y, Is.EqualTo(19));
            Assert.That(grid.Rows.All(r => r.Count() == 10));
            Assert.That(grid.Height, Is.EqualTo(20));
            Assert.That(grid.Width, Is.EqualTo(10));
            Assert.That(grid.Positions.Count(), Is.EqualTo(10 * 20));
            Assert.That(grid.AllObjects.Any(), Is.False);
        }
Ejemplo n.º 22
0
        public void GetObjectsOverlapping_ReturnsCorrectObject()
        {
            var grid = new UniversalGrid <string>(10, 20);

            var thing1 = "A".AsSpatialObject(1, 1);
            var thing2 = "B".AsSpatialObject(1, 2);

            grid.SetObjects(thing1, thing2);

            var objs = grid.GetObjectsOverlapping(new Point2D()
            {
                X = 1, Y = 2
            }).ToList();

            Assert.That(objs.Single(), Is.EqualTo(thing2));
        }
Ejemplo n.º 23
0
        public void ToXml_ReturnsValidXmlDoc()
        {
            var grid = new UniversalGrid <string>(10, 15);

            grid.SetObject("X", 5, 5);

            var xmlDoc = grid.ToXml();

            Assert.That(xmlDoc.Root.Name.LocalName, Is.EqualTo("grid"));
            Assert.That(xmlDoc.Root.Attribute("width").Value, Is.EqualTo("10"));
            Assert.That(xmlDoc.Root.Attribute("height").Value, Is.EqualTo("15"));
            Assert.That(xmlDoc.Root.Attribute("viewport").Value, Is.EqualTo("0 0 9 14"));
            Assert.That(xmlDoc.Root.Elements().ElementAt(5).Elements().ElementAt(5).Value, Is.EqualTo("X"));

            Console.WriteLine(xmlDoc);
        }
Ejemplo n.º 24
0
        public void ToHtml_ReturnsValidXhtmlTable()
        {
            var grid = new UniversalGrid <string>(10, 10);

            grid.SetObject("X", 5, 5);

            var html = grid.ToHtml(tableClass: "tbl");

            var htmlDoc = XDocument.Parse(html);

            Assert.That(htmlDoc.Root.Name.LocalName, Is.EqualTo("table"));
            Assert.That(htmlDoc.Root.Attribute("class").Value, Is.EqualTo("tbl"));
            Assert.That(htmlDoc.Root.Elements().ElementAt(5).Elements().ElementAt(5).Value, Is.EqualTo("X"));

            Console.WriteLine(htmlDoc);
        }
Ejemplo n.º 25
0
        public void Move_CorrectlySetsTopLeftPosAndMovesContainingObjects()
        {
            var grid = new UniversalGrid <string>(10, 20);

            var thing1   = "A".AsSpatialObject(1, 1);
            var thing2   = "B".AsSpatialObject(1, 2);
            var moves    = 0;
            var modified = false;

            grid.ItemMoved += (s, e) =>
            {
                moves++;
            };

            grid.Modified += (s, e) =>
            {
                modified = true;
            };

            grid.SetObjects(thing1, thing2);

            grid.Move(new Point2D()
            {
                X = 2, Y = 1
            });

            Assert.That(modified);
            Assert.That(grid.TopLeft, Is.EqualTo(new Point2D()
            {
                X = 2, Y = 1
            }));
            Assert.That(grid.AllObjects.Count(), Is.EqualTo(2));
            Assert.That(thing1.TopLeft, Is.EqualTo(new Point2D()
            {
                X = 3, Y = 2
            }));
            Assert.That(thing2.TopLeft, Is.EqualTo(new Point2D()
            {
                X = 3, Y = 3
            }));
            Assert.That(moves, Is.EqualTo(2));
        }
Ejemplo n.º 26
0
        public void ToHtml_SetsColour()
        {
            var grid = new UniversalGrid <string>(10, 10);

            var obj = grid.SetObject("X", 5, 5);

            obj.Colour = new Drawing.Colour()
            {
                R = 255,
                A = 255
            };

            var html = grid.ToHtml();

            var htmlDoc = XDocument.Parse(html);

            Assert.That(htmlDoc.Root.Elements().ElementAt(5).Elements().ElementAt(5).Attribute("style").Value, Is.EqualTo("color: #ff0000"));

            Console.WriteLine(htmlDoc);
        }
Ejemplo n.º 27
0
        public void Render_Rotation_ToConsole()
        {
            var grid = new UniversalGrid <int>(10, 10);

            var item = (1).AsSpatialObject(2, 5, new Point2D()
            {
                X = 3, Y = 5
            });

            item.Label = "X";

            grid.SetObject(item);

            RenderToConsole(grid);

            item.Rotate();

            var cellCount = RenderToConsole(grid);

            Assert.That(cellCount, Is.EqualTo(100));
        }
Ejemplo n.º 28
0
        public void ToSvg_ReturnsValidSvgDoc()
        {
            var grid = new UniversalGrid <string>(10, 15)
            {
                UnitHeight = 50,
                UnitWidth  = 50
            };

            var obj = grid.SetObject("X", 5, 5);

            obj.Colour = new Colour()
            {
                R = 255, A = 255
            };

            var svgDoc = grid.ToSvg();

            Assert.That(svgDoc.Root.Name.LocalName, Is.EqualTo("svg"));

            Console.WriteLine(svgDoc);
        }
Ejemplo n.º 29
0
        public void Move_InvokesAction()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var thing1 = "A".AsSpatialObject(1, 1);

            bool actionInvoked = false;

            grid.AddAction((x, m) => m.Any(p => p.Y > 1), (g, x) => {
                actionInvoked = true;
            }); // Add a rule which prevents Y from exceeding 2

            grid.SetObject(thing1);

            thing1.Move(Direction.Right); // 2, 1

            Assert.That(actionInvoked, Is.False);

            thing1.Move(Direction.Down); // 2, 2

            Assert.That(actionInvoked, Is.True);
        }
Ejemplo n.º 30
0
        public void Clear_TwoItems_UsingPredicate_ReturnsTrue()
        {
            var grid = new UniversalGrid <string>(3, 3);

            var thing1 = "a".AsSpatialObject(1, 1);
            var thing2 = "b".AsSpatialObject(2, 1);

            grid.SetObject(thing1);
            grid.SetObject(thing2);

            bool removeFired = false;

            grid.ItemRemoved += (s, e) =>
            {
                Assert.That(e.Target.Data, Is.EqualTo("a"));
                removeFired = true;
            };

            var cleared = grid.Clear(x => x.Data == "a");

            Assert.That(cleared);
            Assert.That(removeFired);
        }
Ejemplo n.º 31
0
		private void SetGrid(UniversalGrid grid)
		{
			_strategy.Environment.SetValue("Grid", grid);
		}
Ejemplo n.º 32
0
		private void ExecutedStartCommand(object sender, ExecutedRoutedEventArgs e)
		{
			var chart = new UltrachartSurface
			{
				ChartModifier = new ModifierGroup(
					new RubberBandXyZoomModifier { ExecuteOn = ExecuteOn.MouseLeftButton },
					new ZoomExtentsModifier { ExecuteOn = ExecuteOn.MouseDoubleClick }
				)
			};
			ThemeManager.SetTheme(chart, "Chrome");
			ChartPanel.Content = chart;

			var grid = new UniversalGrid();
			GridPanel.Content = grid;

			try
			{
				_analyticStrategy = _scriptType.CreateInstance<BaseAnalyticsStrategy>();
				_analyticStrategy.ProcessStateChanged += s =>
				{
					if (_analyticStrategy != null && _analyticStrategy.ProcessState == ProcessStates.Stopped)
					{
						//_isProgress = false;
						_analyticStrategy = null;
					}
				};

				//_isProgress = true;
				_analyticStrategy.Security = _parameters.Security;
				_analyticStrategy.From = _parameters.From;
				_analyticStrategy.To = _parameters.To;
				_analyticStrategy.Environment.SetValue("Drive", _parameters.Drive);
				_analyticStrategy.Environment.SetValue("StorageFormat", _parameters.StorageFormat);
				_analyticStrategy.Environment.SetValue("Chart", chart);
				_analyticStrategy.Environment.SetValue("Grid", grid);
				_analyticStrategy.Start();
			}
			catch (Exception ex)
			{
				ex.LogError();
				//_isProgress = false;
				_analyticStrategy = null;
			}
		}