System.Data.Tests.UniqueConstraintTest2.ctor_DataColumn C# (CSharp) Method

ctor_DataColumn() private method

private ctor_DataColumn ( ) : void
return void
        public void ctor_DataColumn()
        {
            Exception tmpEx = new Exception();

            var ds = new DataSet();
            DataTable dtParent = DataProvider.CreateParentDataTable();
            ds.Tables.Add(dtParent);
            ds.EnforceConstraints = true;

            UniqueConstraint uc = null;

            // DataColumn.Unique - without constraint
            Assert.Equal(false, dtParent.Columns[0].Unique);

            uc = new UniqueConstraint(dtParent.Columns[0]);

            // Ctor
            Assert.Equal(false, uc == null);

            // DataColumn.Unique - with constraint
            Assert.Equal(false, dtParent.Columns[0].Unique);

            // Ctor - add exisiting column
            dtParent.Rows.Add(new object[] { 99, "str1", "str2" });
            dtParent.Constraints.Add(uc);
            Assert.Throws<ConstraintException>(() => dtParent.Rows.Add(new object[] { 99, "str1", "str2" }));

            DataTable dtChild = DataProvider.CreateChildDataTable();
            uc = new UniqueConstraint(dtChild.Columns[1]);

            //Column[1] is not unique, will throw exception
            // ArgumentException 
            Assert.Throws<ArgumentException>(() => dtChild.Constraints.Add(uc));

            //reset the table
            dtParent = DataProvider.CreateParentDataTable();

            // DataColumn.Unique = true, will add UniqueConstraint
            dtParent.Columns[0].Unique = true;
            Assert.Equal(1, dtParent.Constraints.Count);

            // Check the created UniqueConstraint
            dtParent.Columns[0].Unique = true;
            Assert.Equal(typeof(UniqueConstraint).FullName, dtParent.Constraints[0].GetType().FullName);

            // add UniqueConstarint that don't belong to the table
            Assert.Throws<ArgumentException>(() =>
            {
                dtParent.Constraints.Add(uc);
            });
        }