public void RemoveOldRowsWhenWritingSimulationData() { // Write first report data. var data1 = new ReportData() { CheckpointName = "Current", SimulationName = "Sim1", TableName = "Report", ColumnNames = new string[] { "Col" }, ColumnUnits = new string[] { null } }; data1.Rows.Add(new List <object>() { 1 }); data1.Rows.Add(new List <object>() { 2 }); DataStoreWriter writer = new DataStoreWriter(database); writer.WriteTable(data1); writer.Stop(); // Now do it again this time writing different data for the same sim. var data2 = new ReportData() { CheckpointName = "Current", SimulationName = "Sim1", TableName = "Report", ColumnNames = new string[] { "Col" }, ColumnUnits = new string[] { null } }; data2.Rows.Add(new List <object>() { 3 }); writer = new DataStoreWriter(database); var cleanCommand = writer.Clean(new List <string>() { "Sim1" }); cleanCommand.Run(null); writer.WriteTable(data2); writer.Stop(); Assert.IsTrue( Utilities.CreateTable(new string[] { "CheckpointID", "SimulationID", "Col" }, new List <object[]> { new object[] { 1, 1, 3 } }) .IsSame(database.ExecuteQuery("SELECT * FROM [Report] ORDER BY [Col]"))); }
public void OverwriteExistingCheckpoint() { DataStoreReaderTests.CreateTable(database); // Write new rows for sim2. Should get rid of old sim2 data and replace // with these 2 new rows. // Write some new current data. var data1 = new ReportData() { CheckpointName = "Current", SimulationName = "Sim2", TableName = "Report", ColumnNames = new string[] { "Col1", "Col2" }, ColumnUnits = new string[] { null, "g" } }; data1.Rows.Add(new List <object>() { new DateTime(2017, 1, 1), 3.0 }); data1.Rows.Add(new List <object>() { new DateTime(2017, 1, 2), 4.0 }); var writer = new DataStoreWriter(database); var cleanCommand = writer.Clean(new List <string>() { "Sim2" }); cleanCommand.Run(null); writer.WriteTable(data1); // Add a checkpoint - overwrite existing one. writer.AddCheckpoint("Saved1"); writer.Stop(); Assert.IsTrue( Utilities.CreateTable(new string[] { "CheckpointID", "SimulationID", "Col1", "Col2" }, new List <object[]> { new object[] { 1, 1, new DateTime(2017, 01, 01), 1 }, new object[] { 1, 1, new DateTime(2017, 01, 02), 2 }, new object[] { 1, 2, new DateTime(2017, 01, 01), 3 }, new object[] { 1, 2, new DateTime(2017, 01, 02), 4 }, new object[] { 2, 1, new DateTime(2017, 01, 01), 1 }, new object[] { 2, 1, new DateTime(2017, 01, 02), 2 }, new object[] { 2, 2, new DateTime(2017, 01, 01), 3 }, new object[] { 2, 2, new DateTime(2017, 01, 02), 4 } }) .IsSame(Utilities.GetTableFromDatabase(database, "Report"))); }