public void ShouldProduceValuesForIdentityColumns() { ValueStore vs = new ValueStore(); DataProducer producer = new DataProducer(vs); DataRowEntity row = producer.ProduceRow(customerTable, 1); // check that the value of the identity column have not been generated Assert.That(vs.GetByKey(row.Fields[0].KeyValue), Is.Null); IDataConsumer consumer = GetImplementedType(); if (consumer.Init("", options)) { int counter = 0; consumer.ReportInsertionCallback = new Action(() => { counter++; }); consumer.Consume(new List <DataRowEntity> { row }, vs); // now assert that the identity value have been generated by the consumer Assert.That(row.Fields[0].FieldName, Is.EqualTo("CustomerId"), "Column should be customerID"); Assert.That(vs.GetByKey(row.Fields[0].KeyValue), Is.Not.Null, consumer.GetType().ToString()); } }
private static void AssertFieldsInRowHaveSomeValues(ValueStore valuestore, DataRowEntity row, int nullColumns) { var nullableFieldCounter = 0; foreach (var field in row.Fields) { var retreivedValue = valuestore.GetByKey(field.KeyValue); Console.WriteLine("{0}: {1}", field.KeyValue, retreivedValue); Assert.That(field.KeyValue, Is.Not.Null, field.FieldName); if (!field.ProducesValue) { Assert.That(retreivedValue, Is.Not.Null, field.FieldName); } else { Assert.That(retreivedValue, Is.Null, field.FieldName); } if (field.DataType.IsNullable) { nullableFieldCounter++; Assert.That(retreivedValue, Is.EqualTo(DBNull.Value)); } } Assert.That(nullableFieldCounter, Is.EqualTo(nullColumns)); }
public string GenerateValuesStatement(DataRowEntity row, ValueStore valueStore) { return("VALUES (" + string.Join(", ", row.Fields .Where(x => x.ProducesValue == false) .Select(x => formatValue(x, valueStore))) + ")"); }
public void ShouldAddFieldsToRow() { var table = new TableEntity("dbo", "Customer"); var row = new DataRowEntity(table); row.AddField("customerid", Guid.NewGuid(), new ColumnDataTypeDefinition("int", false), true); Assert.That(row.Fields.Count, Is.EqualTo(1)); }
public void ShouldEqualIfSameInstance() { var table = new TableEntity("dbo", "Customer"); var row2 = new DataRowEntity(table); var row = new DataRowEntity(table); Assert.That(row, Is.Not.EqualTo(row2)); Assert.That(row, Is.EqualTo(row)); }
public void ShouldInstanciate() { var table = new TableEntity("dbo", "Customer"); var row = new DataRowEntity(table); Assert.That(row.Table, Is.EqualTo(table)); Assert.That(row.Fields, Is.Not.Null); Assert.That(row.Fields.Count, Is.EqualTo(0)); }
public void shouldNotBeAbleToTakeValueFromColumnThatHaveNotGeneratedAnyValueYet() { ValueStore valuestore = new ValueStore(); var dp = new DataProducer(valuestore); Action a = new Action(() => { DataRowEntity row = dp.ProduceRow(orderTable, 1); }); ExpectedExceptionHappened <ArgumentNullException>(a, "shouldNotBeAbleToTakeValueFromColumnThatHaveNotGeneratedAnyValueYet"); }
public void shouldGenerateRowWithUniqueIdentifier() { ValueStore valuestore = new ValueStore(); var dp = new DataProducer(valuestore); dp.ProduceRow(customerTable, 1); DataRowEntity row = dp.ProduceRow(orderTable, 1); Assert.That(row.Fields[3].KeyValue, Is.Not.Null); Assert.That(valuestore.GetByKey(row.Fields[3].KeyValue), Is.Not.Null); }
public void ShouldBeAbleToAddSameFieldMultipleTimes_ForNow() { var table = new TableEntity("dbo", "Customer"); var row = new DataRowEntity(table); row.AddField("customerid", Guid.NewGuid(), new ColumnDataTypeDefinition("int", false), true); row.AddField("customerid", Guid.NewGuid(), new ColumnDataTypeDefinition("int", false), true); row.AddField("customerid", Guid.NewGuid(), new ColumnDataTypeDefinition("int", false), true); row.AddField("customerid", Guid.NewGuid(), new ColumnDataTypeDefinition("int", false), true); Assert.That(row.Fields.Count, Is.EqualTo(4)); foreach (var f in row.Fields) { Assert.That(f, Is.Not.Null); } }
public void ShouldBeAbleToIterateThroughTheFields() { var table = new TableEntity("dbo", "Customer"); var row = new DataRowEntity(table); row.AddField("customerid", Guid.NewGuid(), new ColumnDataTypeDefinition("int", false), true); row.AddField("name", Guid.NewGuid(), new ColumnDataTypeDefinition("varchar(100)", false), false); row.AddField("vip", Guid.NewGuid(), new ColumnDataTypeDefinition("bit", false), false); row.AddField("lastseen", Guid.NewGuid(), new ColumnDataTypeDefinition("datetime", false), false); Assert.That(row.Fields.Count, Is.EqualTo(4)); foreach (var f in row.Fields) { Assert.That(f, Is.Not.Null); } }
public string GenerateInsertStatement(DataRowEntity row, ValueStore valueStore) { var autoGeneratedFields = row.Fields .Where(f => f.ProducesValue); if (autoGeneratedFields.Count() > 0) { string outputList = String.Join(", ", autoGeneratedFields.Select(c => string.Format("INSERTED.{0} AS '{1}'", c.FieldName, c.KeyValue))); // Console.WriteLine(outputList); return(insertStatement + " OUTPUT " + outputList + " " + GenerateValuesStatement(row, valueStore)); } else { return(insertStatement + " " + GenerateValuesStatement(row, valueStore)); } }
public void ShouldProduceOneDataRow() { ValueStore valuestore = new ValueStore(); var dp = new DataProducer(valuestore); DataRowEntity row = dp.ProduceRow(customerTable, 1); Assert.That(row, Is.Not.Null); Assert.That(row.Fields, Is.Not.Null); Assert.That(row.Fields.Count, Is.EqualTo(4)); Assert.That(row.Fields[0].FieldName, Is.EqualTo(customerTable.Columns.First().ColumnName)); Assert.That(row.Fields[0].ProducesValue, Is.True); Assert.That(row.Fields[0].KeyValue, Is.Not.Null); AssertFieldsInRowHaveSomeValues(valuestore, row, 2); }
public DataRowEntity ProduceRow(ExecutionTable current) { ValidateUtil.ValidateNotNull(current, "table"); var row = new DataRowEntity(current.Table); foreach (var col in current.Table.Columns) { var value = col.GenerateValue(current.N); Guid key; if (col.Generator.IsTakingValueFromOtherColumn) { if (value.GetType().Equals(typeof(Guid))) { if (!columnLastKeyMap.TryGetValue((Guid)value, out key)) { throw new ArgumentNullException("Trying to take value from column that have not yet generated any value"); } } else { throw new InvalidCastException("The generator returned a non-GUID type as key when generating value from other column"); } } else if (col.IsIdentity) { key = col.ColumnIdentity; value = null; ValueStorage.Put(key, value); columnLastKeyMap[col.ColumnIdentity] = key; } else { key = Guid.NewGuid(); columnLastKeyMap[col.ColumnIdentity] = key; ValueStorage.Put(key, value); } row.AddField(col.ColumnName, key, col.ColumnDataType, col.IsIdentity); } return(row); }
private void Table_ItemRemoved(IDataTableEntity arg1, DataRowEntity[] arg2) { SendItemsAyscMsg(arg1, DatabaseEntityMessageType.ItemRemmoved, arg2, null); }
private void SendItemsAyscMsg(IDataTableEntity table, DatabaseEntityMessageType messageType, DataRowEntity[] rows, DataRowEntityPropertyChangedEventArg arg) { try { string ownerTypeID; dic_Type_Name.TryGetValue(GetType(), out ownerTypeID); ServerActivator.ServerInstance.SendTableChangedAyscMsg(GetUsers(), ownerTypeID, table, messageType, rows, arg); //ServerActivator.ServerInstance.GetType().InvokeMember("SendTableChangedAyscMsg", BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Instance, null, ServerActivator.ServerInstance, new object[] { this, table, messageType, rows, arg }); } catch (Exception e) { Debug.OutputException(e); } }
internal static byte[] SerializePropertyValue(BindableProperty property, DataRowEntity row) { using (var ms = new MemoryStream()) { using (var pw = ProtoBufExtention.CreateProtoWriterSimplely(ms)) { var o = property.GetValue(row); if (property.PropertyType == typeof(TimeSpan)) pw.WriteSimplely((TimeSpan)o); else { switch (Type.GetTypeCode(property.PropertyType)) { case TypeCode.Boolean: pw.WriteSimplely((bool)o); break; case TypeCode.Byte: pw.WriteSimplely((byte)o); break; case TypeCode.Char: pw.WriteSimplely((char)o); break; case TypeCode.DateTime: pw.WriteSimplely((DateTime)o); break; case TypeCode.Double: pw.WriteSimplely((double)o); break; case TypeCode.Int16: pw.WriteSimplely((short)o); break; case TypeCode.Int32: pw.WriteSimplely((int)o); break; case TypeCode.Int64: pw.WriteSimplely((long)o); break; case TypeCode.SByte: pw.WriteSimplely((sbyte)o); break; case TypeCode.Single: pw.WriteSimplely((float)o); break; case TypeCode.String: pw.WriteSimplely((string)o); break; case TypeCode.UInt16: pw.WriteSimplely((ushort)o); break; case TypeCode.UInt32: pw.WriteSimplely((uint)o); break; case TypeCode.UInt64: pw.WriteSimplely((ulong)o); break; } } } return ms.ToArray(); } }