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); }
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); }
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); }
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); }
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(); }
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(); }
public static string ToCsv <T>(this UniversalGrid <T> grid, char delimitter = '\t') { using (var output = new StringWriter()) { grid.ToCsv(output, delimitter); return(output.ToString()); } }
public void Clear_EmptyGrid_ReturnsFalse() { var grid = new UniversalGrid <string>(3, 3); var cleared = grid.Clear(); Assert.That(cleared, Is.False); }
public static string ToHtml <T>(this UniversalGrid <T> grid, string tableClass = null) { using (var output = new StringWriter()) { grid.ToHtml(output, tableClass); return(output.ToString()); } }
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)); }
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)); }
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)); }
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); }
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)); }
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); }
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 }
public Game(int width = 10, int height = 22) { Board = new UniversalGrid <char>(width, height) { UnitHeight = 50, UnitWidth = 50 }; Board.ItemMoved += OnMove; _generator = new TetrominoGenerator(); }
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); }
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; } }
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)); }
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); }
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)); }
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); }
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); }
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)); }
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); }
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)); }
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); }
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); }
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); }
private void SetGrid(UniversalGrid grid) { _strategy.Environment.SetValue("Grid", grid); }
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; } }