public void should_add_table_columns() { var tableName = "Temp" + Guid.NewGuid().ToString("N"); GribbleDatabase.CreateTable(tableName, new Column("Id", typeof(int), isIdentity: true, key: Column.KeyType.ClusteredPrimaryKey), new Column("Uid", typeof(Guid), isAutoGenerated: true), new Column("Created", typeof(DateTime), isAutoGenerated: true)); GribbleDatabase.AddColumns(tableName, new Column("Uid", typeof(Guid), isAutoGenerated: true), new Column("Name", typeof(string), isNullable: true, length: 500)); var columns = GribbleDatabase.GetColumns(tableName).ToList(); columns.Count.ShouldEqual(4); var column = columns[0]; column.Computation.ShouldBeNull(); column.ComputationPersisted.ShouldBeNull(); column.DefaultValue.ShouldBeNull(); column.IsAutoGenerated.ShouldBeFalse(); column.IsComputed.ShouldBeFalse(); column.IsIdentity.ShouldBeTrue(); column.IsNullable.ShouldBeFalse(); column.Key.ShouldEqual(Column.KeyType.ClusteredPrimaryKey); column.Length.ShouldEqual((short)4); column.Name.ShouldEqual("Id"); column.Precision.ShouldEqual((byte)10); column.Scale.ShouldEqual((byte)0); column.SqlType.ShouldEqual(SqlDbType.Int); column.Type.ShouldEqual(typeof(int)); column = columns[1]; column.Computation.ShouldBeNull(); column.ComputationPersisted.ShouldBeNull(); column.DefaultValue.ShouldBeNull(); column.IsAutoGenerated.ShouldBeTrue(); column.IsComputed.ShouldBeFalse(); column.IsIdentity.ShouldBeFalse(); column.IsNullable.ShouldBeFalse(); column.Key.ShouldEqual(Column.KeyType.None); column.Length.ShouldEqual((short)16); column.Name.ShouldEqual("Uid"); column.Precision.ShouldEqual((byte)0); column.Scale.ShouldEqual((byte)0); column.SqlType.ShouldEqual(SqlDbType.UniqueIdentifier); column.Type.ShouldEqual(typeof(Guid)); column = columns[2]; column.DefaultValue.ShouldBeNull(); column.IsAutoGenerated.ShouldBeTrue(); column.DefaultValue.ShouldBeNull(); column.IsAutoGenerated.ShouldBeTrue(); column.IsComputed.ShouldBeFalse(); column.IsIdentity.ShouldBeFalse(); column.IsNullable.ShouldBeFalse(); column.Key.ShouldEqual(Column.KeyType.None); column.Length.ShouldEqual((short)8); column.Name.ShouldEqual("Created"); column.Precision.ShouldEqual((byte)23); column.Scale.ShouldEqual((byte)3); column.SqlType.ShouldEqual(SqlDbType.DateTime); column.Type.ShouldEqual(typeof(DateTime)); column = columns[3]; column.Computation.ShouldBeNull(); column.ComputationPersisted.ShouldBeNull(); column.DefaultValue.ShouldBeNull(); column.IsAutoGenerated.ShouldBeFalse(); column.IsComputed.ShouldBeFalse(); column.IsIdentity.ShouldBeFalse(); column.IsNullable.ShouldBeTrue(); column.Key.ShouldEqual(Column.KeyType.None); column.Length.ShouldEqual((short)500); column.Name.ShouldEqual("Name"); column.Precision.ShouldEqual((byte)0); column.Scale.ShouldEqual((byte)0); column.SqlType.ShouldEqual(SqlDbType.NVarChar); column.Type.ShouldEqual(typeof(string)); }