From 1d5a375459c33bb22ee04ad39a3cd8532f4afdd8 Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Wed, 31 Aug 2011 17:49:36 -0700 Subject: [PATCH] DiffLoader didn't handle encoded name and caused mismatch between .NET. --- .../System.Data/System.Data/XmlDiffLoader.cs | 1 + .../Test/System.Data/DataSetTest.cs | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/mcs/class/System.Data/System.Data/XmlDiffLoader.cs b/mcs/class/System.Data/System.Data/XmlDiffLoader.cs index 00c19bec659..7f91d8a8939 100644 --- a/mcs/class/System.Data/System.Data/XmlDiffLoader.cs +++ b/mcs/class/System.Data/System.Data/XmlDiffLoader.cs @@ -351,6 +351,7 @@ namespace System.Data { DataTable GetTable (string name) { + name = XmlConvert.DecodeName (name); if (DSet != null) return DSet.Tables [name]; else if (name == table.TableName) diff --git a/mcs/class/System.Data/Test/System.Data/DataSetTest.cs b/mcs/class/System.Data/Test/System.Data/DataSetTest.cs index 3ea16fd7b37..1d96305e35b 100644 --- a/mcs/class/System.Data/Test/System.Data/DataSetTest.cs +++ b/mcs/class/System.Data/Test/System.Data/DataSetTest.cs @@ -2571,6 +2571,30 @@ namespace MonoTests.System.Data Assert.AreEqual (2, dsLoad.Tables[2].Columns.Count, "T3-Columns"); } + [Test] + public void ReadDiff () + { + DataSet dsTest = new DataSet ("MonoTouchTest"); + var dt = new DataTable ("123"); + dt.Columns.Add (new DataColumn ("Value1")); + dt.Columns.Add (new DataColumn ("Value2")); + dsTest.Tables.Add (dt); + dsTest.ReadXml (new StringReader (@" + + + <_x0031_23 diffgr:id='1231' msdata:rowOrder='0'> + Row1Value1 + Row1Value2 + + + +")); + Assert.AreEqual ("123", dsTest.Tables [0].TableName, "#1"); + Assert.AreEqual (1, dsTest.Tables [0].Rows.Count, "#2"); + } + private void CompareTables (DataSet dsLoad) { Assert.AreEqual (ds.Tables.Count, dsLoad.Tables.Count, "NumTables"); for (int tc = 0; tc < dsLoad.Tables.Count; tc++) { -- 2.25.1