private void WriteRow(HaystackGrid grid, HaystackRow row) { var first = true; foreach (var column in grid.Columns) { var value = row.ContainsKey(column.Name) ? row[column.Name] : null; if (first) { first = false; } else { _targetWriter.Write(','); } if (value == null) { _targetWriter.Write('N'); } else { WriteValue(value); } } }
void VerifyRowIterator(HaystackRow it, int iIndex, string name, HaystackValue val) { Assert.IsTrue(it.Count > iIndex); var strKeyValue = it.Keys.Skip(iIndex).First(); Assert.AreEqual(name, strKeyValue); Assert.IsTrue(it[strKeyValue].Equals(val)); }
public void TestSimple() { var grid = new HaystackGrid(); grid.AddColumn("id"); grid.AddColumn("dis"); grid.AddColumn("area"); grid.AddRow(new HaystackReference("a"), new HaystackString("Alpha"), new HaystackNumber(1200)); grid.AddRow(new HaystackReference("b"), null, new HaystackNumber(1400)); //.Meta Assert.AreEqual(grid.Meta.Count, 0); // cols //HCol c; Assert.AreEqual(grid.ColumnCount, 3); VerifyCol(grid, 0, "id"); VerifyCol(grid, 1, "dis"); VerifyCol(grid, 2, "area"); // rows Assert.AreEqual(grid.RowCount, 2); Assert.IsFalse(grid.IsEmpty()); var row = grid.Row(0); Assert.IsTrue(row.Get("id").Equals(new HaystackReference("a"))); Assert.IsTrue(row.Get("dis").Equals(new HaystackString("Alpha"))); Assert.IsTrue(row.Get("area").Equals(new HaystackNumber(1200))); row = grid.Row(1); Assert.IsTrue(row.Get("id").Equals(new HaystackReference("b"))); Assert.IsFalse(row.ContainsKey("dis")); Assert.IsTrue(row.Get("area").Equals(new HaystackNumber(1400))); Assert.ThrowsException <HaystackUnknownNameException>(() => row["dis"]); Assert.IsFalse(row.ContainsKey("fooBar")); Assert.ThrowsException <HaystackUnknownNameException>(() => row["fooBar"]); // HaystackRow no-nulls HaystackRow it = grid.Row(0); Assert.IsFalse(it.Count > 3); VerifyRowIterator(it, 0, "id", new HaystackReference("a")); VerifyRowIterator(it, 1, "dis", new HaystackString("Alpha")); VerifyRowIterator(it, 2, "area", new HaystackNumber(1200)); // HaystackRow with nulls it = grid.Row(1); Assert.IsFalse(it.Count > 3); VerifyRowIterator(it, 0, "id", new HaystackReference("b")); VerifyRowIterator(it, 2, "area", new HaystackNumber(1400)); // iterating VerifyGridIterator(grid); }