public void FrameTableDictionariesRoundtrip() { FrameTable frame = new FrameTable(); frame.AddColumn <string>("name"); frame.AddColumn <double>("height"); frame.AddColumn <bool?>("male"); frame.AddRow("a", 5.0, false); frame.AddRow("b", 6.0, true); frame.AddRow("c", 5.5, null); List <Dictionary <string, object> > dictionaries = frame.ToDictionaries().ToList(); Assert.IsTrue(dictionaries.Count == frame.Rows.Count); Assert.IsTrue(dictionaries[0].Count == frame.Columns.Count); FrameTable frame2 = FrameTable.FromDictionaries(dictionaries); Assert.IsTrue(frame2.Rows.Count == frame.Rows.Count); Assert.IsTrue(frame2.Columns.Count == frame.Columns.Count); Assert.IsTrue(frame2.Columns[0].Name == frame.Columns[0].Name); Assert.IsTrue(frame2.Columns[1].StorageType == frame.Columns[1].StorageType); Assert.IsTrue(frame2.Rows[2]["male"] == frame2.Rows[2]["male"]); }
public static void ConstructExampleData() { FrameTable table = new FrameTable(); table.AddColumn <int>("Id"); table.AddColumn <string>("Name"); table.AddColumn <string>("Sex"); table.AddColumn <DateTime>("Birthdate"); table.AddColumn <double>("Height"); table.AddColumns <double?>("Weight"); table.AddColumn <bool>("Result"); Random rng = new Random(1000001); string[] maleNames = new string[] { "Alex", "Chris", "David", "Eric", "Frederic", "George", "Hans", "Igor", "John", "Kevin", "Luke", "Mark", "Oscar", "Peter", "Richard", "Stephan", "Thomas", "Vincent" }; AddRows(table, maleNames, "M", 175.0, 12.0, 24.0, 3.0, 1, rng); string[] femaleNames = new string[] { "Anne", "Belle", "Dorothy", "Elizabeth", "Fiona", "Helen", "Julia", "Kate", "Louise", "Mary", "Natalie", "Olivia", "Ruth", "Sarah", "Theresa", "Viola" }; AddRows(table, femaleNames, "F", 160.0, 10.0, 24.0, 3.0, 0, rng); // add rows with nulls table.AddRow(table.Rows.Count, null, "M", DateTime.Parse("1970-07-27"), 183.0, 74.0, false); table.AddRow(table.Rows.Count, "Zoey", "F", DateTime.Parse("2007-09-17"), 138.0, null, false); string path = @"example.csv"; using (StreamWriter writer = new StreamWriter(File.OpenWrite(path))) { table.ToCsv(writer); } Console.WriteLine(File.Exists(path)); string json = JsonConvert.SerializeObject(table.ToDictionaries(), Formatting.Indented); File.WriteAllText("example.json", json); }