Beispiel #1
0
        public void Equals_Rows_Deleted()
        {
            DataRowComparer <DataRow> c = DataRowComparer.Default;

            DataTable dtA = new DataTable("tableA");

            dtA.Columns.Add("col1", typeof(int));
            dtA.Columns.Add("col2", typeof(string));
            dtA.Columns.Add("col3", typeof(DateTime));
            DataRow r1 = dtA.Rows.Add(3, "bar", new DateTime(2008, 5, 7));
            DataRow r2 = dtA.Rows.Add(3, "bar", new DateTime(2008, 5, 7));

            r1.Delete();

            // left row deleted
            try
            {
                c.Equals(r1, r2);
                Assert.True(false, "#A1");
            }
            catch (RowNotInTableException ex)
            {
                Assert.Equal(typeof(RowNotInTableException), ex.GetType());
                Assert.Null(ex.InnerException);
                Assert.NotNull(ex.Message);
            }

            // right row deleted
            try
            {
                c.Equals(r2, r1);
                Assert.True(false, "#B1");
            }
            catch (RowNotInTableException ex)
            {
                Assert.Equal(typeof(RowNotInTableException), ex.GetType());
                Assert.Null(ex.InnerException);
                Assert.NotNull(ex.Message);
            }

            r2.Delete();

            // both rows deleted
            try
            {
                c.Equals(r2, r1);
                Assert.True(false, "#C1");
            }
            catch (RowNotInTableException ex)
            {
                Assert.Equal(typeof(RowNotInTableException), ex.GetType());
                Assert.Null(ex.InnerException);
                Assert.NotNull(ex.Message);
            }
        }
Beispiel #2
0
        public void Equals_Rows_Detached()
        {
            DataRowComparer <DataRow> c = DataRowComparer.Default;

            DataTable dt = new DataTable("tableA");

            dt.Columns.Add("col1", typeof(int));
            dt.Columns.Add("col2", typeof(string));
            dt.Columns.Add("col3", typeof(DateTime));
            DataRow r1 = dt.Rows.Add(3, "bar", new DateTime(2008, 5, 7));
            DataRow r2 = dt.NewRow();

            r2.ItemArray = new object[] { 3, "bar", new DateTime(2008, 5, 7) };
            DataRow r3 = dt.NewRow();

            r3.ItemArray = new object[] { 3, "bar", new DateTime(2008, 5, 7) };

            // left row detached
            Assert.True(c.Equals(r2, r1), "#A1");
            r1["col1"] = 4;
            Assert.False(c.Equals(r2, r1), "#A2");
            r1["col1"] = 3;
            Assert.True(c.Equals(r2, r1), "#A3");

            // right row detached
            Assert.True(c.Equals(r1, r2), "#B1");
            r1["col2"] = "baz";
            Assert.False(c.Equals(r1, r2), "#B2");
            r1["col2"] = "bar";
            Assert.True(c.Equals(r1, r2), "#B3");

            // both rows detached
            Assert.True(c.Equals(r2, r3), "#C1");
            r2["col3"] = new DateTime(2008, 6, 7);
            Assert.False(c.Equals(r2, r3), "#C2");
            r2["col3"] = new DateTime(2008, 5, 7);
            Assert.True(c.Equals(r2, r3), "#C3");
        }
Beispiel #3
0
        public void Equals()
        {
            DataRowComparer <DataRow> c = DataRowComparer.Default;

            DataTable dtA = new DataTable("tableA");

            dtA.Columns.Add("col1", typeof(int));
            dtA.Columns.Add("col2", typeof(string));
            dtA.Columns.Add("col3", typeof(DateTime));
            DataRow r1 = dtA.Rows.Add(3, "bar", new DateTime(2008, 5, 7));
            DataRow r2 = dtA.Rows.Add(3, "bar", new DateTime(2008, 5, 7));

            Assert.True(c.Equals(r1, r2), "#A1");
            r1["col1"] = 4;
            Assert.False(c.Equals(r1, r2), "#A2");
            r1["col1"] = 3;
            Assert.True(c.Equals(r1, r2), "#A3");

            r1["col2"] = null;
            Assert.False(c.Equals(r1, r2), "#B1");
            r2["col2"] = null;
            Assert.True(c.Equals(r1, r2), "#B2");
            r1["col2"] = "bar";
            Assert.False(c.Equals(r1, r2), "#B3");
            r2["col2"] = "bar";
            Assert.True(c.Equals(r1, r2), "#B4");

            r1["col3"] = DBNull.Value;
            Assert.False(c.Equals(r1, r2), "#C1");
            r2["col3"] = DBNull.Value;
            Assert.True(c.Equals(r1, r2), "#C2");
            r1["col3"] = new DateTime(2008, 5, 7);
            Assert.False(c.Equals(r1, r2), "#C3");
            r2["col3"] = new DateTime(2008, 5, 7);
            Assert.True(c.Equals(r1, r2), "#C4");

            Assert.False(c.Equals(r1, null), "#D1");
            Assert.False(c.Equals(null, r1), "#D2");
            Assert.True(c.Equals(null, null), "#D3");

            // rows do not have to share the same parent

            DataTable dtB = new DataTable("tableB");

            dtB.Columns.Add("colB1", typeof(int));
            dtB.Columns.Add("colB2", typeof(string));
            dtB.Columns.Add("colB3", typeof(DateTime));

            DataRow r3 = dtB.Rows.Add(3, "bar", new DateTime(2008, 5, 7));

            Assert.True(c.Equals(r1, r3), "#E1");
            r1["col1"] = 4;
            Assert.False(c.Equals(r1, r3), "#E2");
            r1["col1"] = 3;
            Assert.True(c.Equals(r1, r3), "#E3");

            // difference in rowstate is ignored

            r1.AcceptChanges();

            Assert.True(c.Equals(r1, r2), "#G1");
            r1["col1"] = 4;
            Assert.False(c.Equals(r1, r2), "#G2");
            r1["col1"] = 3;
            Assert.True(c.Equals(r1, r2), "#G3");

            // rows have different number of columns

            DataTable dtC = new DataTable("tableC");

            dtC.Columns.Add("colC1", typeof(int));
            dtC.Columns.Add("colC2", typeof(string));

            DataRow r4 = dtC.Rows.Add(3, "bar");

            Assert.False(c.Equals(r1, r4), "#H1");
            r1["col3"] = DBNull.Value;
            Assert.False(c.Equals(r1, r4), "#H2");
        }