Beispiel #1
0
        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 );
        }
Beispiel #2
0
        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" ] );
        }