public void PrimaryKey()
{
DataTable dt = new DataTable();
DataColumn Col = new DataColumn();
Col.AllowDBNull = false;
Col.DataType = typeof(int);
dt.Columns.Add(Col);
dt.Columns.Add();
dt.Columns.Add();
dt.Columns.Add();
Assert.Equal(0, dt.PrimaryKey.Length);
dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };
Assert.Equal(1, dt.PrimaryKey.Length);
Assert.Equal("Column1", dt.PrimaryKey[0].ColumnName);
dt.PrimaryKey = null;
Assert.Equal(0, dt.PrimaryKey.Length);
Col = new DataColumn("failed");
try
{
dt.PrimaryKey = new DataColumn[] { Col };
Assert.False(true);
}
catch (ArgumentException e)
{
Assert.Equal(typeof(ArgumentException), e.GetType());
// Never expect English message
// Assert.Equal ("Column must belong to a table.", e.Message);
}
DataTable dt2 = new DataTable();
dt2.Columns.Add();
try
{
dt.PrimaryKey = new DataColumn[] { dt2.Columns[0] };
Assert.False(true);
}
catch (ArgumentException e)
{
Assert.Equal(typeof(ArgumentException), e.GetType());
// Never expect English message
// Assert.Equal ("PrimaryKey columns do not belong to this table.", e.Message);
}
Assert.Equal(0, dt.Constraints.Count);
dt.PrimaryKey = new DataColumn[] { dt.Columns[0], dt.Columns[1] };
Assert.Equal(2, dt.PrimaryKey.Length);
Assert.Equal(1, dt.Constraints.Count);
Assert.True(dt.Constraints[0] is UniqueConstraint);
Assert.Equal("Column1", dt.PrimaryKey[0].ColumnName);
Assert.Equal("Column2", dt.PrimaryKey[1].ColumnName);
}