/// <summary> /// Adds a basic field to the structure layout. /// </summary> /// <param name="name">The name of the field.</param> /// <param name="type">The type of the field's value.</param> /// <param name="offset">The offset (in bytes) of the field from the beginning of the structure.</param> public void AddBasicField(string name, StructureValueType type, int offset) { var field = new BasicField(name, type, offset); _fields.Add(field); _fieldsByName[name] = field; }
/// <summary> /// Produces a SQL expression that, when used in the body of a <c>CREATE TABLE</c> statement, declares a /// <see cref="BasicField"/> as a member of the subject Table. /// </summary> /// <remarks> /// To keep the <see cref="IField"/> interface closed to assemblies outside of Kvasir, the /// <see cref="IField.GenerateDeclaration(IFieldDeclBuilder)"/> method is marked as <c>internal</c>; this /// requires that <see cref="BasicField"/> class implement the method explicitly. This extension method /// allows for natural invocation of the interface method, encapsulating the cast-to-interface required to /// invoke an explicit interface method. /// </remarks> /// <param name="self"> /// The <see cref="BasicField"/> on which the extension method is invoked. /// </param> /// <param name="builder"> /// The <see cref="IFieldDeclBuilder"/> to use to create the declaratory SQL expression. /// </param> /// <pre> /// <paramref name="self"/> is not <see langword="null"/> /// --and-- /// <paramref name="builder"/> is not <see langword="null"/> /// </pre> /// <returns> /// A <see cref="SqlSnippet"/> whose body declares <paramref name="self"/>. /// </returns> public static SqlSnippet GenerateSqlDeclaration(this BasicField self, IFieldDeclBuilder builder) { Debug.Assert(self is not null); Debug.Assert(builder is not null); return((self as IField).GenerateDeclaration(builder)); }
public void Cancel() { NidLoad.Text = ""; tf_Title.Text = ""; ta_Message.Text = ""; BasicField.Reset(); BasicField.Disabled = false; pnlAnnex.Disabled = true; btn_S.Disabled = false; pnlAnnex.Html = "请上传附件!"; }
[TestMethod] public void Construct() { // Arrange var name = new FieldName("Population"); var dbType = DBType.Int32; var nullability = IsNullable.No; var defaultValue = Option.Some(DBValue.Create(100)); // Act var field = new BasicField(name, dbType, nullability, defaultValue); // Assert field.Name.Should <FieldName>().Be(name); field.DataType.Should().Be(dbType); field.Nullability.Should().Be(nullability); field.DefaultValue.Should().Be(defaultValue); }
[TestMethod] public void GenerateDeclarationWithoutDefault() { // Arrange var name = new FieldName("CapitalCity"); var dbType = DBType.Text; var nullability = IsNullable.No; var field = new BasicField(name, dbType, nullability, Option.None <DBValue>()); var mockBuilder = new Mock <IFieldDeclBuilder>(); // Act _ = field.GenerateSqlDeclaration(mockBuilder.Object); // Assert mockBuilder.Verify(builder => builder.SetName(name)); mockBuilder.Verify(builder => builder.SetDataType(dbType)); mockBuilder.Verify(builder => builder.SetNullability(nullability)); mockBuilder.Verify(builder => builder.Build()); mockBuilder.VerifyNoOtherCalls(); }
[TestMethod] public void GenerateDeclarationWithDefault() { // Arrange var name = new FieldName("GDP"); var dbType = DBType.UInt32; var nullability = IsNullable.Yes; var defaultValue = DBValue.Create(2500000u); var field = new BasicField(name, dbType, nullability, Option.Some(defaultValue)); var mockBuilder = new Mock <IFieldDeclBuilder>(); // Act _ = field.GenerateSqlDeclaration(mockBuilder.Object); // Assert mockBuilder.Verify(builder => builder.SetName(name)); mockBuilder.Verify(builder => builder.SetDataType(dbType)); mockBuilder.Verify(builder => builder.SetNullability(nullability)); mockBuilder.Verify(builder => builder.SetDefaultValue(defaultValue)); mockBuilder.Verify(builder => builder.Build()); mockBuilder.VerifyNoOtherCalls(); }