private void AddRow( ScopedTable table, long ownerId, string date, long origin, double value ) { DataRow row = table.NewRow(); row[ table.Schema.OwnerIdColumn ] = ownerId; row.SetDate( table.Schema, DateTime.Parse( date ) ); row[ table.Schema.OriginColumn ] = origin; row[ "value" ] = value; table.AddOrUpdate( row ); }
public void AddOrUpdateWithDate() { TableSchema schema = new TableSchema( "test1", new DataColumn( "stock_id", typeof( long ) ), new DataColumn( "date", typeof( string ) ), new DataColumn( "value", typeof( double ) ) ); DataTable t = schema.NewTempTable(); ScopedTable table = new ScopedTable( schema, t, null ); // initial row { DataRow row = table.NewRow(); row[ "stock_id" ] = 1; row.SetDate( schema, DateTime.Parse( "2002-01-01 00:00" ) ); row[ "value" ] = 23.0d; table.AddOrUpdate( row ); } // same id, same date => update { DataRow row = table.NewRow(); row[ "stock_id" ] = 1; row.SetDate( schema, DateTime.Parse( "2002-01-01 00:00" ) ); row[ "value" ] = 42.0d; table.AddOrUpdate( row ); } // same id, new date => add { DataRow row = table.NewRow(); row[ "stock_id" ] = 1; row.SetDate( schema, DateTime.Parse( "2002-01-02 00:00" ) ); row[ "value" ] = 25.0d; table.AddOrUpdate( row ); } // new stock_id, same date => add { DataRow row = table.NewRow(); row[ "stock_id" ] = 2; row.SetDate( schema, DateTime.Parse( "2002-01-02 00:00" ) ); row[ "value" ] = 37.0d; table.AddOrUpdate( row ); } var rows = table.Rows.ToList(); Assert.AreEqual( 3, rows.Count ); Assert.AreEqual( 1, rows[ 0 ][ schema.OwnerIdColumn ] ); Assert.AreEqual( 42.0d, rows[ 0 ][ "value" ] ); Assert.AreEqual( 1, rows[ 1 ][ schema.OwnerIdColumn ] ); Assert.AreEqual( 25.0d, rows[ 1 ][ "value" ] ); Assert.AreEqual( 2, rows[ 2 ][ schema.OwnerIdColumn ] ); Assert.AreEqual( 37.0d, rows[ 2 ][ "value" ] ); }