System.Data.Tests.DataRelationTest2.ctor_ByNameDataColumnsArrays C# (CSharp) Method

ctor_ByNameDataColumnsArrays() private method

private ctor_ByNameDataColumnsArrays ( ) : void
return void
        public void ctor_ByNameDataColumnsArrays()
        {
            var ds = new DataSet();
            DataTable dtChild = DataProvider.CreateChildDataTable();
            DataTable dtParent = DataProvider.CreateParentDataTable();
            ds.Tables.Add(dtParent);
            ds.Tables.Add(dtChild);

            DataRelation dRel;

            //check some exception 
            // DataRelation - CTor ArgumentException, two columns child
            Assert.Throws<ArgumentException>(() =>
            {
                dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0] }, new DataColumn[] { dtChild.Columns[0], dtChild.Columns[2] });
            });

            dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0], dtParent.Columns[1] }, new DataColumn[] { dtChild.Columns[0], dtChild.Columns[2] });
            // DataRelation - Add Relation ArgumentException, fail on creating child Constraints
            Assert.Throws<ArgumentException>(() =>
            {
                ds.Relations.Add(dRel);
            });

            // DataRelation ArgumentException - parent Constraints
            Assert.Equal(1, dtParent.Constraints.Count);

            // DataRelation ArgumentException - child Constraints
            Assert.Equal(0, dtChild.Constraints.Count);

            // DataRelation ArgumentException - DataSet.Relation count
            Assert.Equal(1, ds.Relations.Count);

            //begin to check the relation ctor
            dtParent.Constraints.Clear();
            dtChild.Constraints.Clear();
            ds.Relations.Clear();
            dRel = new DataRelation("MyRelation", new DataColumn[] { dtParent.Columns[0] }, new DataColumn[] { dtChild.Columns[0] });
            ds.Relations.Add(dRel);

            // DataSet DataRelation count
            Assert.Equal(1, ds.Relations.Count);

            // DataRelation - CTor
            Assert.Equal(false, dRel == null);

            // DataRelation - parent Constraints
            Assert.Equal(1, dtParent.Constraints.Count);

            // DataRelation - child Constraints
            Assert.Equal(1, dtChild.Constraints.Count);

            // DataRelation - child relations
            Assert.Equal(dRel, dtParent.ChildRelations[0]);

            // DataRelation - parent relations
            Assert.Equal(dRel, dtChild.ParentRelations[0]);

            // DataRelation - name
            Assert.Equal("MyRelation", dRel.RelationName);
        }