public void CodePieceTest_Set() { CodePiece cp = new CodePiece(); cp[0, 0] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(1, cp.Width); Assert.AreEqual(1, cp.Height); cp[0, 2] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(1, cp.Width); Assert.AreEqual(3, cp.Height); cp[2, 0] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(3, cp.Width); Assert.AreEqual(3, cp.Height); cp[2, 2] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(3, cp.Width); Assert.AreEqual(3, cp.Height); cp[0, -2] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(3, cp.Width); Assert.AreEqual(5, cp.Height); cp[-2, 0] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(5, cp.Width); Assert.AreEqual(5, cp.Height); cp[-2, -2] = new BefungeCommand(BefungeCommandType.Add); Assert.AreEqual(5, cp.Width); Assert.AreEqual(5, cp.Height); }
public TagLocation(int px, int py, BefungeCommand cmd) { Tag = cmd.Tag; X = px; Y = py; Command = cmd; }
private CodePiece GenerateCode_DisplayValue(string dv) { CodePiece r = new CodePiece(); int w = dv.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None).Max(s => s.Length); int h = dv.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None).Length; if (dv == "") { w = 0; h = 0; } if (w > DisplayWidth || h > DisplayHeight) { throw new InitialDisplayValueTooBigException(DisplayWidth, DisplayHeight, w, h); } string[] split = dv.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); BefungeCommand def = BCHelper.Chr(CGO.DefaultDisplayValue); if (def.Type == BefungeCommandType.NOP) { def = BCHelper.Walkway; } for (int y = 0; y < DisplayHeight; y++) { for (int x = 0; x < DisplayWidth; x++) { r[x, y] = (y < split.Length && x < split[y].Length) ? BCHelper.Chr(split[y][x]) : def; } } return(r); }
public CodePieceReverseException(BefungeCommand p) : base("Cannot reverse Command " + p + ".") { }