Update dependencies from dotnet/coreclr (dotnet/corefx#35051)
authordotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Sun, 3 Feb 2019 16:38:37 +0000 (16:38 +0000)
committerGitHub <noreply@github.com>
Sun, 3 Feb 2019 16:38:37 +0000 (16:38 +0000)
* Update dependencies from https://github.com/dotnet/coreclr build 20190201.72

This change updates the following dependencies
- Microsoft.NET.Sdk.IL - 3.0.0-preview-27401-72
- Microsoft.NETCore.ILAsm - 3.0.0-preview-27401-72
- Microsoft.NETCore.Runtime.CoreCLR - 3.0.0-preview-27401-72

* Update dependencies from https://github.com/dotnet/coreclr build 20190202.72

This change updates the following dependencies
- Microsoft.NET.Sdk.IL - 3.0.0-preview-27402-72
- Microsoft.NETCore.ILAsm - 3.0.0-preview-27402-72
- Microsoft.NETCore.Runtime.CoreCLR - 3.0.0-preview-27402-72

* Fixing various tests that have new behavior due to the string formatting changes for double/float.

Commit migrated from https://github.com/dotnet/corefx/commit/ebf1c9753ab5624c967b0dbd352b1e73805b1fe5

15 files changed:
src/libraries/Microsoft.VisualBasic.Core/tests/ConversionsTests.cs
src/libraries/System.ComponentModel.TypeConverter/tests/Drawing/SizeFConverterTests.cs
src/libraries/System.Data.Common/tests/System/Data/DataColumnTest.cs
src/libraries/System.Json/tests/JsonValueTests.cs
src/libraries/System.Linq.Expressions/tests/StackSpillerTests.cs
src/libraries/System.Private.Xml/tests/Writers/XmlWriterApi/TCFullEndElement.cs
src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.RuntimeOnly.cs
src/libraries/System.Runtime.Extensions/tests/System/Convert.ToDouble.cs
src/libraries/System.Runtime.Extensions/tests/System/Convert.ToString.cs
src/libraries/System.Runtime.Serialization.Json/tests/DataContractJsonSerializer.cs
src/libraries/System.Runtime.Serialization.Xml/tests/DataContractSerializer.cs
src/libraries/System.Runtime/tests/System/DoubleTests.cs
src/libraries/System.Runtime/tests/System/DoubleTests.netcoreapp.cs
src/libraries/System.Runtime/tests/System/SingleTests.cs
src/libraries/System.Runtime/tests/System/TimeSpanTests.cs

index a2f5ca1..a1a21f4 100644 (file)
@@ -1586,7 +1586,7 @@ namespace Microsoft.VisualBasic.Tests
             yield return new object[] { " &o5", (float)5 };
             yield return new object[] { "&o0", (float)0 };
             yield return new object[] { 1.1.ToString(), (float)1.1 };
-            yield return new object[] { "18446744073709551616", float.Parse("1.844674E+19", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { "18446744073709551616", 18446744073709551616.0f };
             yield return new object[] { double.PositiveInfinity.ToString(), float.PositiveInfinity };
             yield return new object[] { double.NegativeInfinity.ToString(), float.NegativeInfinity };
             yield return new object[] { double.NaN.ToString(), float.NaN };
@@ -1663,42 +1663,42 @@ namespace Microsoft.VisualBasic.Tests
             // uint.
             yield return new object[] { uint.MinValue, (float)0 };
             yield return new object[] { (uint)1, (float)1 };
-            yield return new object[] { uint.MaxValue, float.Parse("4.294967E+09", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { uint.MaxValue, (float)uint.MaxValue };
             yield return new object[] { (UIntEnum)uint.MinValue, (float)0 };
             yield return new object[] { (UIntEnum)1, (float)1 };
-            yield return new object[] { (UIntEnum)uint.MaxValue, float.Parse("4.294967E+09", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { (UIntEnum)uint.MaxValue, (float)uint.MaxValue };
 
             // int.
-            yield return new object[] { int.MinValue, float.Parse("-2.147484E+09", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { int.MinValue, (float)int.MinValue };
             yield return new object[] { -1, (float)(-1) };
             yield return new object[] { 0, (float)0 };
             yield return new object[] { 1, (float)1 };
-            yield return new object[] { int.MaxValue, float.Parse("2.147484E+09", NumberStyles.Any, CultureInfo.InvariantCulture) };
-            yield return new object[] { (IntEnum)int.MinValue, float.Parse("-2.147484E+09", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { int.MaxValue, (float)int.MaxValue };
+            yield return new object[] { (IntEnum)int.MinValue, (float)int.MinValue };
             yield return new object[] { (IntEnum)(-1), (float)(-1) };
             yield return new object[] { (IntEnum)0, (float)0 };
             yield return new object[] { (IntEnum)1, (float)1 };
-            yield return new object[] { (IntEnum)int.MaxValue, float.Parse("2.147484E+09", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { (IntEnum)int.MaxValue, (float)int.MaxValue };
 
             // ulong.
             yield return new object[] { ulong.MinValue, (float)0 };
             yield return new object[] { (ulong)1, (float)1 };
-            yield return new object[] { ulong.MaxValue, float.Parse("1.844674E+19", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { ulong.MaxValue, (float)ulong.MaxValue };
             yield return new object[] { (ULongEnum)ulong.MinValue, (float)0 };
             yield return new object[] { (ULongEnum)1, (float)1 };
-            yield return new object[] { (ULongEnum)ulong.MaxValue, float.Parse("1.844674E+19", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { (ULongEnum)ulong.MaxValue, (float)ulong.MaxValue };
 
             // long.
-            yield return new object[] { long.MinValue, float.Parse("-9.223372E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { long.MinValue, (float)long.MinValue };
             yield return new object[] { (long)(-1), (float)(-1) };
             yield return new object[] { (long)0, (float)0 };
             yield return new object[] { (long)1, (float)1 };
-            yield return new object[] { long.MaxValue, float.Parse("9.223372E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
-            yield return new object[] { (LongEnum)long.MinValue, float.Parse("-9.223372E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { long.MaxValue, (float)long.MaxValue };
+            yield return new object[] { (LongEnum)long.MinValue, (float)long.MinValue };
             yield return new object[] { (LongEnum)(-1), (float)(-1) };
             yield return new object[] { (LongEnum)0, (float)0 };
             yield return new object[] { (LongEnum)1, (float)1 };
-            yield return new object[] { (LongEnum)long.MaxValue, float.Parse("9.223372E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { (LongEnum)long.MaxValue, (float)long.MaxValue };
 
             // float.
             yield return new object[] { float.MinValue, float.MinValue };
@@ -1721,11 +1721,11 @@ namespace Microsoft.VisualBasic.Tests
             yield return new object[] { double.NaN, float.NaN };
 
             // decimal.
-            yield return new object[] { decimal.MinValue, float.Parse("-7.922816E+28", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { decimal.MinValue, (float)decimal.MinValue };
             yield return new object[] { (decimal)(-1), (float)(-1) };
             yield return new object[] { (decimal)0, (float)0 };
             yield return new object[] { (decimal)1, (float)1 };
-            yield return new object[] { decimal.MaxValue, float.Parse("7.922816E+28", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { decimal.MaxValue, (float)decimal.MaxValue };
 
             // bool.
             yield return new object[] { true, (float)(-1) };
@@ -1790,8 +1790,8 @@ namespace Microsoft.VisualBasic.Tests
             yield return new object[] { " &o5", (double)5 };
             yield return new object[] { "&o0", (double)0 };
             yield return new object[] { 1.1.ToString(), (double)1.1 };
-            yield return new object[] { "18446744073709551616", double.Parse("1.84467440737096E+19", NumberStyles.Any, CultureInfo.InvariantCulture) };
-            yield return new object[] { "1844674407370955161618446744073709551616", double.Parse("1.84467440737096E+39", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { "18446744073709551616", 18446744073709551616.0 };
+            yield return new object[] { "1844674407370955161618446744073709551616", 1844674407370955161618446744073709551616.0 };
             yield return new object[] { double.PositiveInfinity.ToString(), double.PositiveInfinity };
             yield return new object[] { double.NegativeInfinity.ToString(), double.NegativeInfinity };
             yield return new object[] { double.NaN.ToString(), double.NaN };
@@ -1876,29 +1876,29 @@ namespace Microsoft.VisualBasic.Tests
             // ulong.
             yield return new object[] { ulong.MinValue, (double)0 };
             yield return new object[] { (ulong)1, (double)1 };
-            yield return new object[] { ulong.MaxValue, double.Parse("1.84467440737096E+19", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { ulong.MaxValue, (double)ulong.MaxValue };
             yield return new object[] { (ULongEnum)ulong.MinValue, (double)0 };
             yield return new object[] { (ULongEnum)1, (double)1 };
-            yield return new object[] { (ULongEnum)ulong.MaxValue, double.Parse("1.84467440737096E+19", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { (ULongEnum)ulong.MaxValue, (double)ulong.MaxValue };
 
             // long.
-            yield return new object[] { long.MinValue, double.Parse("-9.22337203685478E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { long.MinValue, (double)long.MinValue };
             yield return new object[] { (long)(-1), (double)(-1) };
             yield return new object[] { (long)0, (double)0 };
             yield return new object[] { (long)1, (double)1 };
-            yield return new object[] { long.MaxValue, double.Parse("9.22337203685478E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
-            yield return new object[] { (LongEnum)long.MinValue, double.Parse("-9.22337203685478E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { long.MaxValue, (double)long.MaxValue };
+            yield return new object[] { (LongEnum)long.MinValue, (double)long.MinValue };
             yield return new object[] { (LongEnum)(-1), (double)(-1) };
             yield return new object[] { (LongEnum)0, (double)0 };
             yield return new object[] { (LongEnum)1, (double)1 };
-            yield return new object[] { (LongEnum)long.MaxValue, double.Parse("9.22337203685478E+18", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { (LongEnum)long.MaxValue, (double)long.MaxValue };
 
             // float.
-            yield return new object[] { float.MinValue, double.Parse("-3.40282346638529E+38", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { float.MinValue, (double)float.MinValue };
             yield return new object[] { (float)(-1), (double)(-1) };
             yield return new object[] { (float)0, (double)0 };
             yield return new object[] { (float)1, (double)1 };
-            yield return new object[] { float.MaxValue, double.Parse("3.40282346638529E+38", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { float.MaxValue, (double)float.MaxValue };
             yield return new object[] { float.PositiveInfinity, double.PositiveInfinity };
             yield return new object[] { float.NegativeInfinity, double.NegativeInfinity };
             yield return new object[] { float.NaN, double.NaN };
@@ -1914,11 +1914,11 @@ namespace Microsoft.VisualBasic.Tests
             yield return new object[] { double.NaN, double.NaN };
 
             // decimal.
-            yield return new object[] { decimal.MinValue, double.Parse("-7.92281625142643E+28", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { decimal.MinValue, (double)decimal.MinValue };
             yield return new object[] { (decimal)(-1), (double)(-1) };
             yield return new object[] { (decimal)0, (double)0 };
             yield return new object[] { (decimal)1, (double)1 };
-            yield return new object[] { decimal.MaxValue, double.Parse("7.92281625142643E+28", NumberStyles.Any, CultureInfo.InvariantCulture) };
+            yield return new object[] { decimal.MaxValue, (double)decimal.MaxValue };
 
             // bool.
             yield return new object[] { true, (double)(-1) };
@@ -1980,7 +1980,7 @@ namespace Microsoft.VisualBasic.Tests
             yield return new object[] { " &o5", (decimal)5 };
             yield return new object[] { "&o0", (decimal)0 };
             yield return new object[] { 1.1.ToString(), (decimal)1.1 };
-            yield return new object[] { "18446744073709551616", decimal.Parse("18446744073709551616", CultureInfo.InvariantCulture) };
+            yield return new object[] { "18446744073709551616", 18446744073709551616.0m };
         }
 
         [Theory]
@@ -2082,10 +2082,10 @@ namespace Microsoft.VisualBasic.Tests
             // ulong.
             yield return new object[] { ulong.MinValue, (decimal)0 };
             yield return new object[] { (ulong)1, (decimal)1 };
-            yield return new object[] { ulong.MaxValue, decimal.Parse("18446744073709551615", CultureInfo.InvariantCulture) };
+            yield return new object[] { ulong.MaxValue, (decimal)ulong.MaxValue };
             yield return new object[] { (ULongEnum)ulong.MinValue, (decimal)0 };
             yield return new object[] { (ULongEnum)1, (decimal)1 };
-            yield return new object[] { (ULongEnum)ulong.MaxValue, decimal.Parse("18446744073709551615", CultureInfo.InvariantCulture) };
+            yield return new object[] { (ULongEnum)ulong.MaxValue, (decimal)ulong.MaxValue };
 
             // long.
             yield return new object[] { long.MinValue, (decimal)(-9223372036854775808) };
index 7143211..a98388f 100644 (file)
@@ -134,11 +134,21 @@ namespace System.ComponentModel.TypeConverterTests
 
         [Theory]
         [MemberData(nameof(SizeFData))]
-        public void ConvertTo(float width, float height)
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public void ConvertTo_NetFramework(float width, float height)
         {
             TestConvertToString(new SizeF(width, height), FormattableString.Invariant($"{width:G9}, {height:G9}"));
         }
 
+
+        [Theory]
+        [MemberData(nameof(SizeFData))]
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public void ConvertTo_NotNetFramework(float width, float height)
+        {
+            TestConvertToString(new SizeF(width, height), FormattableString.Invariant($"{width}, {height}"));
+        }
+
         [Theory]
         [InlineData(typeof(Size))]
         [InlineData(typeof(SizeF))]
@@ -252,7 +262,8 @@ namespace System.ComponentModel.TypeConverterTests
 
         [Theory]
         [MemberData(nameof(SizeFData))]
-        public void ConvertToInvariantString(float width, float height)
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public void ConvertToInvariantString_NetFramework(float width, float height)
         {
             var str = Converter.ConvertToInvariantString(new SizeF(width, height));
             Assert.Equal(FormattableString.Invariant($"{width:G9}, {height:G9}"), str);
@@ -260,10 +271,29 @@ namespace System.ComponentModel.TypeConverterTests
 
         [Theory]
         [MemberData(nameof(SizeFData))]
-        public void ConvertToString(float width, float height)
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public void ConvertToInvariantString_NotNetFramework(float width, float height)
+        {
+            var str = Converter.ConvertToInvariantString(new SizeF(width, height));
+            Assert.Equal(FormattableString.Invariant($"{width}, {height}"), str);
+        }
+
+        [Theory]
+        [MemberData(nameof(SizeFData))]
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public void ConvertToString_NetFramework(float width, float height)
         {
             var str = Converter.ConvertToString(new SizeF(width, height));
             Assert.Equal(string.Format(CultureInfo.CurrentCulture, "{0:G9}{2} {1:G9}", width, height, CultureInfo.CurrentCulture.TextInfo.ListSeparator), str);
         }
+
+        [Theory]
+        [MemberData(nameof(SizeFData))]
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public void ConvertToString_NotNetFramework(float width, float height)
+        {
+            var str = Converter.ConvertToString(new SizeF(width, height));
+            Assert.Equal(string.Format(CultureInfo.CurrentCulture, "{0}{2} {1}", width, height, CultureInfo.CurrentCulture.TextInfo.ListSeparator), str);
+        }
     }
 }
index 1eb77c2..903ff99 100644 (file)
@@ -550,8 +550,8 @@ namespace System.Data.Tests
             Assert.Equal("60", T.Rows[60][3]);
 
             C.Expression = "stdev (Child.age)";
-            Assert.Equal((1.4142135623731).ToString(T.Locale), T.Rows[0][3]);
-            Assert.Equal((1.4142135623731).ToString(T.Locale), T.Rows[60][3]);
+            Assert.Equal((1.4142135623730951).ToString(T.Locale), T.Rows[0][3]);
+            Assert.Equal((1.4142135623730951).ToString(T.Locale), T.Rows[60][3]);
 
             C.Expression = "var (Child.age)";
             Assert.Equal("2", T.Rows[0][3]);
index ea64ddc..574cdeb 100644 (file)
@@ -56,9 +56,18 @@ namespace System.Json.Tests
             yield return new object[] { "4294967297", "4294967297" };
             yield return new object[] { "9223372036854775807", "9223372036854775807" };
             yield return new object[] { "18446744073709551615", "18446744073709551615" };
+        }
+
+        public static IEnumerable<object[]> ParseIntegralBoundaries_TestData_NetFramework()
+        {
             yield return new object[] { "79228162514264337593543950336", "7.9228162514264338E+28" };
         }
 
+        public static IEnumerable<object[]> ParseIntegralBoundaries_TestData_NotNetFramework()
+        {
+            yield return new object[] { "79228162514264337593543950336", "7.922816251426434E+28" };
+        }
+
         [Theory]
         [MemberData(nameof(ParseIntegralBoundaries_TestData))]
         public void Parse_IntegralBoundaries_LessThanMaxDouble_Works(string jsonString, string expectedToString)
@@ -70,6 +79,30 @@ namespace System.Json.Tests
             });
         }
 
+        [Theory]
+        [MemberData(nameof(ParseIntegralBoundaries_TestData_NetFramework))]
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public void Parse_IntegralBoundaries_LessThanMaxDouble_Works_NetFramework(string jsonString, string expectedToString)
+        {
+            Parse(jsonString, value =>
+            {
+                Assert.Equal(JsonType.Number, value.JsonType);
+                Assert.Equal(expectedToString, value.ToString());
+            });
+        }
+
+        [Theory]
+        [MemberData(nameof(ParseIntegralBoundaries_TestData_NotNetFramework))]
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public void Parse_IntegralBoundaries_LessThanMaxDouble_Works_NotNetFramework(string jsonString, string expectedToString)
+        {
+            Parse(jsonString, value =>
+            {
+                Assert.Equal(JsonType.Number, value.JsonType);
+                Assert.Equal(expectedToString, value.ToString());
+            });
+        }
+
         [Fact]
         public void Parse_TrueFalse()
         {
index c4e53e0..1f7249d 100644 (file)
@@ -1795,7 +1795,8 @@ namespace System.Linq.Expressions.Tests
         }
 
         [Fact]
-        public static void Spill_Optimizations_LiteralField()
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public static void Spill_Optimizations_LiteralField_NetFramework()
         {
             Expression<Func<double>> e =
                 Expression.Lambda<Func<double>>(
@@ -1843,6 +1844,55 @@ namespace System.Linq.Expressions.Tests
         }
 
         [Fact]
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public static void Spill_Optimizations_LiteralField_NotNetFramework()
+        {
+            Expression<Func<double>> e =
+                Expression.Lambda<Func<double>>(
+                    Expression.Add(
+                        Expression.Field(null, typeof(Math).GetField(nameof(Math.PI))),
+                        Spill(Expression.Constant(0.0))
+                    )
+                );
+
+            e.VerifyIL(@"
+                .method float64 ::lambda_method(class [System.Linq.Expressions]System.Runtime.CompilerServices.Closure)
+                {
+                  .maxstack 3
+                  .locals init (
+                    [0] float64,
+                    [1] float64
+                  )
+
+                  // Save rhs (`try { 0.0 } finally {}`) into V_0
+                  .try
+                  {
+                    IL_0000: ldc.r8     0
+                    IL_0009: stloc.1
+                    IL_000a: leave      IL_0010
+                  }
+                  finally
+                  {
+                    IL_000f: endfinally
+                  }
+                  IL_0010: ldloc.1
+                  IL_0011: stloc.0
+
+                  // <OPTIMIZATION> Evaluate lhs (`Math.PI` gets inlined) </OPTIMIZATION>
+                  IL_0012: ldc.r8     3.141592653589793
+
+                  // Load rhs from V_0
+                  IL_001b: ldloc.0
+
+                  // Evaluate `lhs + rhs`
+                  IL_001c: add
+
+                  IL_001d: ret
+                }"
+            );
+        }
+
+        [Fact]
         public static void Spill_Optimizations_StaticReadOnlyField()
         {
             Expression<Func<string>> e =
index 1818eb0..3cdfe99 100644 (file)
@@ -3766,15 +3766,11 @@ namespace System.Xml.Tests
             [XmlWriterInlineData(1, "XmlQualifiedName", "Decimal", false, null )]
             [XmlWriterInlineData(1, "string", "Decimal", true, null )]
 
-            [XmlWriterInlineData(1, "UInt64", "float", true, 1.844674E+19F )]
-            [XmlWriterInlineData(1, "UInt32", "float", true, 4.294967E+09F )]
             [XmlWriterInlineData(1, "UInt16", "float", true, null )]
             [XmlWriterInlineData(1, "Int64", "float", true, 9.223372E+18F )]
-            [XmlWriterInlineData(1, "Int32", "float", true, 2.147484E+09F )]
             [XmlWriterInlineData(1, "Int16", "float", true, null )]
             [XmlWriterInlineData(1, "Byte", "float", true, null )]
             [XmlWriterInlineData(1, "SByte", "float", true, null )]
-            [XmlWriterInlineData(1, "Decimal", "float", true, 7.922816E+28F )]
             [XmlWriterInlineData(1, "float", "float", true, null )]
             [XmlWriterInlineData(1, "object", "float", true, null )]
             [XmlWriterInlineData(1, "bool", "float", false, null )]
@@ -3903,15 +3899,12 @@ namespace System.Xml.Tests
             [XmlWriterInlineData(1, "XmlQualifiedName", "Uri", true, null )]
             [XmlWriterInlineData(1, "string", "Uri", true, null )]
 
-            [XmlWriterInlineData(1, "UInt64", "Double", true, 1.84467440737096E+19D )]
             [XmlWriterInlineData(1, "UInt32", "Double", true, null )]
             [XmlWriterInlineData(1, "UInt16", "Double", true, null )]
-            [XmlWriterInlineData(1, "Int64", "Double", true, 9.22337203685478E+18D )]
             [XmlWriterInlineData(1, "Int32", "Double", true, null )]
             [XmlWriterInlineData(1, "Int16", "Double", true, null )]
             [XmlWriterInlineData(1, "Byte", "Double", true, null )]
             [XmlWriterInlineData(1, "SByte", "Double", true, null )]
-            [XmlWriterInlineData(1, "Decimal", "Double", true, 7.92281625142643E+28D )]
             [XmlWriterInlineData(1, "float", "Double", true, null )]
             [XmlWriterInlineData(1, "object", "Double", true, null )]
             [XmlWriterInlineData(1, "bool", "Double", false, null )]
@@ -3926,15 +3919,11 @@ namespace System.Xml.Tests
             [XmlWriterInlineData(1, "XmlQualifiedName", "Double", false, null )]
             [XmlWriterInlineData(1, "string", "Double", true, null )]
 
-            [XmlWriterInlineData(1, "UInt64", "Single", true, 1.844674E+19F )]
-            [XmlWriterInlineData(1, "UInt32", "Single", true, 4.294967E+09F )]
             [XmlWriterInlineData(1, "UInt16", "Single", true, null )]
             [XmlWriterInlineData(1, "Int64", "Single", true, 9.223372E+18F )]
-            [XmlWriterInlineData(1, "Int32", "Single", true, 2.147484E+09F )]
             [XmlWriterInlineData(1, "Int16", "Single", true, null )]
             [XmlWriterInlineData(1, "Byte", "Single", true, null )]
             [XmlWriterInlineData(1, "SByte", "Single", true, null )]
-            [XmlWriterInlineData(1, "Decimal", "Single", true, 7.922816E+28F )]
             [XmlWriterInlineData(1, "float", "Single", true, null )]
             [XmlWriterInlineData(1, "object", "Single", true, null )]
             [XmlWriterInlineData(1, "bool", "Single", false, null )]
@@ -4121,15 +4110,11 @@ namespace System.Xml.Tests
             [XmlWriterInlineData(21, "XmlQualifiedName", "Decimal", false, null )]
             [XmlWriterInlineData(2, "string", "Decimal", true, null )]
 
-            [XmlWriterInlineData(2, "UInt64", "float", true, 1.844674E+19F )]
-            [XmlWriterInlineData(2, "UInt32", "float", true, 4.294967E+09F )]
             [XmlWriterInlineData(2, "UInt16", "float", true, null )]
             [XmlWriterInlineData(2, "Int64", "float", true, 9.223372E+18F )]
-            [XmlWriterInlineData(2, "Int32", "float", true, 2.147484E+09F )]
             [XmlWriterInlineData(2, "Int16", "float", true, null )]
             [XmlWriterInlineData(2, "Byte", "float", true, null )]
             [XmlWriterInlineData(2, "SByte", "float", true, null )]
-            [XmlWriterInlineData(2, "Decimal", "float", true, 7.922816E+28F )]
             [XmlWriterInlineData(2, "float", "float", true, null )]
             [XmlWriterInlineData(2, "object", "float", true, null )]
             [XmlWriterInlineData(2, "bool", "float", false, null )]
@@ -4199,30 +4184,23 @@ namespace System.Xml.Tests
             [XmlWriterInlineData(2, "XmlQualifiedName", "Uri", true, null )]
             [XmlWriterInlineData(2, "string", "Uri", true, null )]
 
-            [XmlWriterInlineData(2, "UInt64", "Double", true, 1.84467440737096E+19D )]
             [XmlWriterInlineData(2, "UInt32", "Double", true, null )]
             [XmlWriterInlineData(2, "UInt16", "Double", true, null )]
-            [XmlWriterInlineData(2, "Int64", "Double", true, 9.22337203685478E+18D )]
             [XmlWriterInlineData(2, "Int32", "Double", true, null )]
             [XmlWriterInlineData(2, "Int16", "Double", true, null )]
             [XmlWriterInlineData(2, "Byte", "Double", true, null )]
             [XmlWriterInlineData(2, "SByte", "Double", true, null )]
-            [XmlWriterInlineData(2, "Decimal", "Double", true, 7.92281625142643E+28D )]
             [XmlWriterInlineData(2, "float", "Double", true, null )]
             [XmlWriterInlineData(2, "object", "Double", true, null )]
             [XmlWriterInlineData(2, "bool", "Double", false, null )]
             [XmlWriterInlineData(2, "Single", "Double", true, null )]
             [XmlWriterInlineData(2, "string", "Double", true, null )]
 
-            [XmlWriterInlineData(2, "UInt64", "Single", true, 1.844674E+19F )]
-            [XmlWriterInlineData(2, "UInt32", "Single", true, 4.294967E+09F )]
             [XmlWriterInlineData(2, "UInt16", "Single", true, null )]
             [XmlWriterInlineData(2, "Int64", "Single", true, 9.223372E+18F )]
-            [XmlWriterInlineData(2, "Int32", "Single", true, 2.147484E+09F )]
             [XmlWriterInlineData(2, "Int16", "Single", true, null )]
             [XmlWriterInlineData(2, "Byte", "Single", true, null )]
             [XmlWriterInlineData(2, "SByte", "Single", true, null )]
-            [XmlWriterInlineData(2, "Decimal", "Single", true, 7.922816E+28F )]
             [XmlWriterInlineData(2, "float", "Single", true, null )]
             [XmlWriterInlineData(2, "object", "Single", true, null )]
             [XmlWriterInlineData(2, "bool", "Single", false, null )]
@@ -4316,6 +4294,34 @@ namespace System.Xml.Tests
             [XmlWriterInlineData(1, "Double", "float", false, null)]
             [XmlWriterInlineData(1, "Double", "Single", false, null)]
             [XmlWriterInlineData(2, "Double", "Double", false, null)]
+
+            [XmlWriterInlineData(1, "UInt64", "float", true, 1.844674E+19F)]
+            [XmlWriterInlineData(1, "UInt32", "float", true, 4.294967E+09F)]
+            [XmlWriterInlineData(1, "Int32", "float", true, 2.147484E+09F)]
+            [XmlWriterInlineData(1, "Decimal", "float", true, 7.922816E+28F)]
+
+            [XmlWriterInlineData(1, "UInt64", "Double", true, 1.84467440737096E+19D)]
+            [XmlWriterInlineData(1, "Int64", "Double", true, 9.22337203685478E+18D)]
+            [XmlWriterInlineData(1, "Decimal", "Double", true, 7.92281625142643E+28D)]
+
+            [XmlWriterInlineData(1, "UInt64", "Single", true, 1.844674E+19F)]
+            [XmlWriterInlineData(1, "UInt32", "Single", true, 4.294967E+09F)]
+            [XmlWriterInlineData(1, "Int32", "Single", true, 2.147484E+09F)]
+            [XmlWriterInlineData(1, "Decimal", "Single", true, 7.922816E+28F)]
+
+            [XmlWriterInlineData(2, "UInt64", "float", true, 1.844674E+19F)]
+            [XmlWriterInlineData(2, "UInt32", "float", true, 4.294967E+09F)]
+            [XmlWriterInlineData(2, "Int32", "float", true, 2.147484E+09F)]
+            [XmlWriterInlineData(2, "Decimal", "float", true, 7.922816E+28F)]
+
+            [XmlWriterInlineData(2, "UInt64", "Double", true, 1.84467440737096E+19D)]
+            [XmlWriterInlineData(2, "Int64", "Double", true, 9.22337203685478E+18D)]
+            [XmlWriterInlineData(2, "Decimal", "Double", true, 7.92281625142643E+28D)]
+
+            [XmlWriterInlineData(2, "UInt64", "Single", true, 1.844674E+19F)]
+            [XmlWriterInlineData(2, "UInt32", "Single", true, 4.294967E+09F)]
+            [XmlWriterInlineData(2, "Int32", "Single", true, 2.147484E+09F)]
+            [XmlWriterInlineData(2, "Decimal", "Single", true, 7.922816E+28F)]
             [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
             public void writeValue_27_NetFramework(XmlWriterUtils utils, int param, string sourceStr, string destStr, bool isValid, object expVal)
             {
@@ -4325,7 +4331,34 @@ namespace System.Xml.Tests
             [Theory]
             [XmlWriterInlineData(1, "Double", "float", true, float.PositiveInfinity)]
             [XmlWriterInlineData(1, "Double", "Single", true, float.PositiveInfinity)]
-            [XmlWriterInlineData(2, "Double", "Double", true, double.PositiveInfinity)]
+            [XmlWriterInlineData(2, "Double", "Double", true, 1.7976931348623157E+308)]
+
+            [XmlWriterInlineData(1, "UInt64", "float", true, 1.8446744E+19F)]
+            [XmlWriterInlineData(1, "UInt32", "float", true, 4.2949673E+09F)]
+            [XmlWriterInlineData(1, "Int32", "float", true, 2.1474836E+09F)]
+            [XmlWriterInlineData(1, "Decimal", "float", true, 7.9228163E+28F)]
+
+            [XmlWriterInlineData(1, "UInt64", "Double", true, 1.8446744073709552E+19D)]
+            [XmlWriterInlineData(1, "Int64", "Double", true, 9.223372036854776E+18D)]
+            [XmlWriterInlineData(1, "Decimal", "Double", true, 7.922816251426434E+28D)]
+
+            [XmlWriterInlineData(1, "UInt64", "Single", true, 1.8446744E+19F)]
+            [XmlWriterInlineData(1, "UInt32", "Single", true, 4.2949673E+09F)]
+            [XmlWriterInlineData(1, "Int32", "Single", true, 2.1474836E+09F)]
+            [XmlWriterInlineData(1, "Decimal", "Single", true, 7.9228163E+28F)]
+
+            [XmlWriterInlineData(2, "UInt64", "float", true, 1.8446744E+19F)]
+            [XmlWriterInlineData(2, "UInt32", "float", true, 4.2949673E+09F)]
+            [XmlWriterInlineData(2, "Int32", "float", true, 2.1474836E+09F)]
+            [XmlWriterInlineData(2, "Decimal", "float", true, 7.9228163E+28F)]
+
+            [XmlWriterInlineData(2, "UInt64", "Double", true, 1.8446744073709552E+19D)]
+            [XmlWriterInlineData(2, "Int64", "Double", true, 9.223372036854776E+18D)]
+            [XmlWriterInlineData(2, "Decimal", "Double", true, 7.922816251426434E+28D)]
+            [XmlWriterInlineData(2, "UInt64", "Single", true, 1.8446744E+19F)]
+            [XmlWriterInlineData(2, "UInt32", "Single", true, 4.2949673E+09F)]
+            [XmlWriterInlineData(2, "Int32", "Single", true, 2.1474836E+09F)]
+            [XmlWriterInlineData(2, "Decimal", "Single", true, 7.9228163E+28F)]
             [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
             public void writeValue_27_NotNetFramework(XmlWriterUtils utils, int param, string sourceStr, string destStr, bool isValid, object expVal)
             {
index ba3f415..e6e5f74 100644 (file)
@@ -145,6 +145,12 @@ public static partial class XmlSerializerTests
         Assert.StrictEqual(SerializeAndDeserialize<float>((float)2.3,
 @"<?xml version=""1.0""?>
 <float>2.3</float>"), (float)2.3);
+    }
+
+    [Fact]
+    [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+    public static void Xml_FloatAsRoot_NetFramework()
+    {
         Assert.StrictEqual(SerializeAndDeserialize<float>(float.MinValue,
 @"<?xml version=""1.0""?>
 <float>-3.40282347E+38</float>"), float.MinValue);
@@ -154,6 +160,18 @@ public static partial class XmlSerializerTests
     }
 
     [Fact]
+    [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+    public static void Xml_FloatAsRoot_NotNetFramework()
+    {
+        Assert.StrictEqual(SerializeAndDeserialize<float>(float.MinValue,
+@"<?xml version=""1.0""?>
+<float>-3.4028235E+38</float>"), float.MinValue);
+        Assert.StrictEqual(SerializeAndDeserialize<float>(float.MaxValue,
+@"<?xml version=""1.0""?>
+<float>3.4028235E+38</float>"), float.MaxValue);
+    }
+
+    [Fact]
     public static void Xml_GuidAsRoot()
     {
         Xml_GuidAsRoot(new XmlSerializer(typeof(Guid)));
index 30f6114..9fc9fb6 100644 (file)
@@ -115,7 +115,7 @@ namespace System.Tests
         public void FromString_NotNetFramework()
         {
             string[] overflowValues = { Double.MaxValue.ToString(), Double.MinValue.ToString() };
-            VerifyFromString(Convert.ToDouble, Convert.ToDouble, overflowValues, new double[] { double.PositiveInfinity, double.NegativeInfinity });
+            VerifyFromString(Convert.ToDouble, Convert.ToDouble, overflowValues, new double[] { 1.7976931348623157E+308, -1.7976931348623157E+308 });
         }
 
         [Fact]
index b6fc12b..b3a9c53 100644 (file)
@@ -35,7 +35,6 @@ namespace System.Tests
 
             // Double
             -12.2364,
-            -12.236465923406483,
             -1.7753E-83,
             +12.345e+234,
             +12e+1,
@@ -65,7 +64,6 @@ namespace System.Tests
 
             // Single
             -12.2364f,
-            -12.2364659234064826243f,
             (float)+12.345e+234,
             +12e+1f,
             float.NegativeInfinity,
@@ -118,7 +116,6 @@ namespace System.Tests
 
             // Double
             "-12.2364",
-            "-12.2364659234065",
             "-1.7753E-83",
             "1.2345E+235",
             "120",
@@ -148,7 +145,6 @@ namespace System.Tests
 
             // Single
             "-12.2364",
-            "-12.23647",
             "Infinity",
             "120",
             "-Infinity",
@@ -190,14 +186,22 @@ namespace System.Tests
         {
             object[] testValues =
             {
+                // Double
+                -12.236465923406483,
+
                 // Single
                 -1.7753e-83f,
+                -12.2364659234064826243f,
             };
 
             string[] expectedValues =
             {
+                // Double
+                "-12.236465923406483",
+
                 // Single
                 "-0",
+                "-12.236465",
             };
 
             for (int i = 0; i < testValues.Length; i++)
@@ -212,14 +216,22 @@ namespace System.Tests
         {
             object[] testValues =
             {
+                // Double
+                -12.236465923406483,
+
                 // Single
                 -1.7753e-83f,
+                -12.2364659234064826243f,
             };
 
             string[] expectedValues =
             {
+                // Double
+                "-12.2364659234065",
+
                 // Single
                 "0",
+                "-12.23647",
             };
 
             for (int i = 0; i < testValues.Length; i++)
index f8536e5..f515f81 100644 (file)
@@ -156,11 +156,25 @@ public static partial class DataContractJsonSerializerTests
         Assert.StrictEqual(SerializeAndDeserialize<float>((float)-1.2, "-1.2"), (float)-1.2);
         Assert.StrictEqual(SerializeAndDeserialize<float>((float)0, "0"), (float)0);
         Assert.StrictEqual(SerializeAndDeserialize<float>((float)2.3, "2.3"), (float)2.3);
+    }
+
+    [Fact]
+    [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+    public static void DCJS_FloatAsRoot_NetFramework()
+    {
         Assert.StrictEqual(SerializeAndDeserialize<float>(float.MinValue, "-3.40282347E+38"), float.MinValue);
         Assert.StrictEqual(SerializeAndDeserialize<float>(float.MaxValue, "3.40282347E+38"), float.MaxValue);
     }
 
     [Fact]
+    [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+    public static void DCJS_FloatAsRoot_NotNetFramework()
+    {
+        Assert.StrictEqual(SerializeAndDeserialize<float>(float.MinValue, "-3.4028235E+38"), float.MinValue);
+        Assert.StrictEqual(SerializeAndDeserialize<float>(float.MaxValue, "3.4028235E+38"), float.MaxValue);
+    }
+
+    [Fact]
     public static void DCJS_GuidAsRoot()
     {
         foreach (Guid value in new Guid[] { Guid.NewGuid(), Guid.Empty })
index 3a0dbe9..d802178 100644 (file)
@@ -140,11 +140,25 @@ public static partial class DataContractSerializerTests
         Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>((float)-1.2, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">-1.2</float>"), (float)-1.2);
         Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>((float)0, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">0</float>"), (float)0);
         Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>((float)2.3, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">2.3</float>"), (float)2.3);
+    }
+
+    [Fact]
+    [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+    public static void DCS_FloatAsRoot_NetFramework()
+    {
         Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>(float.MinValue, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">-3.40282347E+38</float>"), float.MinValue);
         Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>(float.MaxValue, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">3.40282347E+38</float>"), float.MaxValue);
     }
 
     [Fact]
+    [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+    public static void DCS_FloatAsRoot_NotNetFramework()
+    {
+        Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>(float.MinValue, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">-3.4028235E+38</float>"), float.MinValue);
+        Assert.StrictEqual(DataContractSerializerHelper.SerializeAndDeserialize<float>(float.MaxValue, @"<float xmlns=""http://schemas.microsoft.com/2003/10/Serialization/"">3.4028235E+38</float>"), float.MaxValue);
+    }
+
+    [Fact]
     public static void DCS_GuidAsRoot()
     {
         foreach (Guid value in new Guid[] { Guid.NewGuid(), Guid.Empty })
@@ -2811,8 +2825,7 @@ public static partial class DataContractSerializerTests
     /// Roundtrips a Datacontract type  which contains Primitive types assigned to member of type object. 
     /// Resolver is plugged in and resolves the primitive types. Verify resolver called during ser and deser
     /// </summary>
-    [Fact]
-    public static void DCS_BasicRoundTripResolvePrimitiveTypes()
+    private static void DCS_BasicRoundTripResolvePrimitiveTypes(string baseline)
     {
         var dataContractSerializerSettings = new DataContractSerializerSettings()
         {
@@ -2823,7 +2836,6 @@ public static partial class DataContractSerializerTests
             PreserveObjectReferences = false
         };
 
-        string baseline = @"<ObjectContainer xmlns=""http://schemas.datacontract.org/2004/07/SerializationTestTypes"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><_data i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com""><a i:type=""a:Boolean_foo"">false</a><array1><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/></array1><b i:type=""a:Byte_foo"">255</b><c i:type=""a:Byte_foo"">0</c><d i:type=""a:Char_foo"">65535</d><e i:type=""a:Decimal_foo"">79228162514264337593543950335</e><f i:type=""a:Decimal_foo"">-1</f><f5 i:type=""a:DateTime_foo"">9999-12-31T23:59:59.9999999</f5><g i:type=""a:Decimal_foo"">-79228162514264337593543950335</g><guidData i:type=""a:Guid_foo"">4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56</guidData><h i:type=""a:Decimal_foo"">1</h><i i:type=""a:Decimal_foo"">0</i><j i:type=""a:Decimal_foo"">0</j><k i:type=""a:Double_foo"">0</k><l i:type=""a:Double_foo"">4.94065645841247E-324</l><lDTO xmlns:b=""http://schemas.datacontract.org/2004/07/System""/><m i:type=""a:Double_foo"">1.7976931348623157E+308</m><n i:type=""a:Double_foo"">-1.7976931348623157E+308</n><nDTO i:type=""a:DateTimeOffset_foo""><DateTime xmlns=""http://schemas.datacontract.org/2004/07/System"">9999-12-31T23:59:59.9999999Z</DateTime><OffsetMinutes xmlns=""http://schemas.datacontract.org/2004/07/System"">0</OffsetMinutes></nDTO><o i:type=""a:Double_foo"">NaN</o><obj/><p i:type=""a:Double_foo"">-INF</p><q i:type=""a:Double_foo"">INF</q><r i:type=""a:Single_foo"">0</r><s i:type=""a:Single_foo"">1.401298E-45</s><strData i:nil=""true""/><t i:type=""a:Single_foo"">-3.40282347E+38</t><timeSpan i:type=""a:TimeSpan_foo"">P10675199DT2H48M5.4775807S</timeSpan><u i:type=""a:Single_foo"">3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v i:type=""a:Single_foo"">NaN</v><w i:type=""a:Single_foo"">-INF</w><x i:type=""a:Single_foo"">INF</x><xmlQualifiedName i:type=""a:XmlQualifiedName_foo"" xmlns:b=""http://www.microsoft.com"">b:WCF</xmlQualifiedName><y i:type=""a:Int32_foo"">0</y><z i:type=""a:Int32_foo"">2147483647</z><z1 i:type=""a:Int32_foo"">-2147483648</z1><z2 i:type=""a:Int64_foo"">0</z2><z3 i:type=""a:Int64_foo"">9223372036854775807</z3><z4 i:type=""a:Int64_foo"">-9223372036854775808</z4><z5/><z6 i:type=""a:SByte_foo"">0</z6><z7 i:type=""a:SByte_foo"">127</z7><z8 i:type=""a:SByte_foo"">-128</z8><z9 i:type=""a:Int16_foo"">0</z9><z91 i:type=""a:Int16_foo"">32767</z91><z92 i:type=""a:Int16_foo"">-32768</z92><z93 i:type=""a:String_foo"">abc</z93><z94 i:type=""a:UInt16_foo"">0</z94><z95 i:type=""a:UInt16_foo"">65535</z95><z96 i:type=""a:UInt16_foo"">0</z96><z97 i:type=""a:UInt32_foo"">0</z97><z98 i:type=""a:UInt32_foo"">4294967295</z98><z99 i:type=""a:UInt32_foo"">0</z99><z990 i:type=""a:UInt64_foo"">0</z990><z991 i:type=""a:UInt64_foo"">18446744073709551615</z991><z992 i:type=""a:UInt64_foo"">0</z992><z993>AQIDBA==</z993></_data><_data2 i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com""><a i:type=""a:Boolean_foo"">false</a><array1><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/></array1><b i:type=""a:Byte_foo"">255</b><c i:type=""a:Byte_foo"">0</c><d i:type=""a:Char_foo"">65535</d><e i:type=""a:Decimal_foo"">79228162514264337593543950335</e><f i:type=""a:Decimal_foo"">-1</f><f5 i:type=""a:DateTime_foo"">9999-12-31T23:59:59.9999999</f5><g i:type=""a:Decimal_foo"">-79228162514264337593543950335</g><guidData i:type=""a:Guid_foo"">4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56</guidData><h i:type=""a:Decimal_foo"">1</h><i i:type=""a:Decimal_foo"">0</i><j i:type=""a:Decimal_foo"">0</j><k i:type=""a:Double_foo"">0</k><l i:type=""a:Double_foo"">4.94065645841247E-324</l><lDTO xmlns:b=""http://schemas.datacontract.org/2004/07/System""/><m i:type=""a:Double_foo"">1.7976931348623157E+308</m><n i:type=""a:Double_foo"">-1.7976931348623157E+308</n><nDTO i:type=""a:DateTimeOffset_foo""><DateTime xmlns=""http://schemas.datacontract.org/2004/07/System"">9999-12-31T23:59:59.9999999Z</DateTime><OffsetMinutes xmlns=""http://schemas.datacontract.org/2004/07/System"">0</OffsetMinutes></nDTO><o i:type=""a:Double_foo"">NaN</o><obj/><p i:type=""a:Double_foo"">-INF</p><q i:type=""a:Double_foo"">INF</q><r i:type=""a:Single_foo"">0</r><s i:type=""a:Single_foo"">1.401298E-45</s><strData i:nil=""true""/><t i:type=""a:Single_foo"">-3.40282347E+38</t><timeSpan i:type=""a:TimeSpan_foo"">P10675199DT2H48M5.4775807S</timeSpan><u i:type=""a:Single_foo"">3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v i:type=""a:Single_foo"">NaN</v><w i:type=""a:Single_foo"">-INF</w><x i:type=""a:Single_foo"">INF</x><xmlQualifiedName i:type=""a:XmlQualifiedName_foo"" xmlns:b=""http://www.microsoft.com"">b:WCF</xmlQualifiedName><y i:type=""a:Int32_foo"">0</y><z i:type=""a:Int32_foo"">2147483647</z><z1 i:type=""a:Int32_foo"">-2147483648</z1><z2 i:type=""a:Int64_foo"">0</z2><z3 i:type=""a:Int64_foo"">9223372036854775807</z3><z4 i:type=""a:Int64_foo"">-9223372036854775808</z4><z5/><z6 i:type=""a:SByte_foo"">0</z6><z7 i:type=""a:SByte_foo"">127</z7><z8 i:type=""a:SByte_foo"">-128</z8><z9 i:type=""a:Int16_foo"">0</z9><z91 i:type=""a:Int16_foo"">32767</z91><z92 i:type=""a:Int16_foo"">-32768</z92><z93 i:type=""a:String_foo"">abc</z93><z94 i:type=""a:UInt16_foo"">0</z94><z95 i:type=""a:UInt16_foo"">65535</z95><z96 i:type=""a:UInt16_foo"">0</z96><z97 i:type=""a:UInt32_foo"">0</z97><z98 i:type=""a:UInt32_foo"">4294967295</z98><z99 i:type=""a:UInt32_foo"">0</z99><z990 i:type=""a:UInt64_foo"">0</z990><z991 i:type=""a:UInt64_foo"">18446744073709551615</z991><z992 i:type=""a:UInt64_foo"">0</z992><z993>AQIDBA==</z993></_data2></ObjectContainer>";
         var value = new SerializationTestTypes.ObjectContainer(new SerializationTestTypes.PrimitiveContainer());
 
         var actual = DataContractSerializerHelper.SerializeAndDeserialize(value, baseline, dataContractSerializerSettings);
@@ -2831,6 +2843,26 @@ public static partial class DataContractSerializerTests
         SerializationTestTypes.ComparisonHelper.CompareRecursively(value, actual);
     }
 
+    [Fact]
+    [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+    public static void DCS_BasicRoundTripResolvePrimitiveTypes_NetFramework()
+    {
+        string baseline = @"<ObjectContainer xmlns=""http://schemas.datacontract.org/2004/07/SerializationTestTypes"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><_data i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com""><a i:type=""a:Boolean_foo"">false</a><array1><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/></array1><b i:type=""a:Byte_foo"">255</b><c i:type=""a:Byte_foo"">0</c><d i:type=""a:Char_foo"">65535</d><e i:type=""a:Decimal_foo"">79228162514264337593543950335</e><f i:type=""a:Decimal_foo"">-1</f><f5 i:type=""a:DateTime_foo"">9999-12-31T23:59:59.9999999</f5><g i:type=""a:Decimal_foo"">-79228162514264337593543950335</g><guidData i:type=""a:Guid_foo"">4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56</guidData><h i:type=""a:Decimal_foo"">1</h><i i:type=""a:Decimal_foo"">0</i><j i:type=""a:Decimal_foo"">0</j><k i:type=""a:Double_foo"">0</k><l i:type=""a:Double_foo"">4.94065645841247E-324</l><lDTO xmlns:b=""http://schemas.datacontract.org/2004/07/System""/><m i:type=""a:Double_foo"">1.7976931348623157E+308</m><n i:type=""a:Double_foo"">-1.7976931348623157E+308</n><nDTO i:type=""a:DateTimeOffset_foo""><DateTime xmlns=""http://schemas.datacontract.org/2004/07/System"">9999-12-31T23:59:59.9999999Z</DateTime><OffsetMinutes xmlns=""http://schemas.datacontract.org/2004/07/System"">0</OffsetMinutes></nDTO><o i:type=""a:Double_foo"">NaN</o><obj/><p i:type=""a:Double_foo"">-INF</p><q i:type=""a:Double_foo"">INF</q><r i:type=""a:Single_foo"">0</r><s i:type=""a:Single_foo"">1.401298E-45</s><strData i:nil=""true""/><t i:type=""a:Single_foo"">-3.40282347E+38</t><timeSpan i:type=""a:TimeSpan_foo"">P10675199DT2H48M5.4775807S</timeSpan><u i:type=""a:Single_foo"">3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v i:type=""a:Single_foo"">NaN</v><w i:type=""a:Single_foo"">-INF</w><x i:type=""a:Single_foo"">INF</x><xmlQualifiedName i:type=""a:XmlQualifiedName_foo"" xmlns:b=""http://www.microsoft.com"">b:WCF</xmlQualifiedName><y i:type=""a:Int32_foo"">0</y><z i:type=""a:Int32_foo"">2147483647</z><z1 i:type=""a:Int32_foo"">-2147483648</z1><z2 i:type=""a:Int64_foo"">0</z2><z3 i:type=""a:Int64_foo"">9223372036854775807</z3><z4 i:type=""a:Int64_foo"">-9223372036854775808</z4><z5/><z6 i:type=""a:SByte_foo"">0</z6><z7 i:type=""a:SByte_foo"">127</z7><z8 i:type=""a:SByte_foo"">-128</z8><z9 i:type=""a:Int16_foo"">0</z9><z91 i:type=""a:Int16_foo"">32767</z91><z92 i:type=""a:Int16_foo"">-32768</z92><z93 i:type=""a:String_foo"">abc</z93><z94 i:type=""a:UInt16_foo"">0</z94><z95 i:type=""a:UInt16_foo"">65535</z95><z96 i:type=""a:UInt16_foo"">0</z96><z97 i:type=""a:UInt32_foo"">0</z97><z98 i:type=""a:UInt32_foo"">4294967295</z98><z99 i:type=""a:UInt32_foo"">0</z99><z990 i:type=""a:UInt64_foo"">0</z990><z991 i:type=""a:UInt64_foo"">18446744073709551615</z991><z992 i:type=""a:UInt64_foo"">0</z992><z993>AQIDBA==</z993></_data><_data2 i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com""><a i:type=""a:Boolean_foo"">false</a><array1><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/></array1><b i:type=""a:Byte_foo"">255</b><c i:type=""a:Byte_foo"">0</c><d i:type=""a:Char_foo"">65535</d><e i:type=""a:Decimal_foo"">79228162514264337593543950335</e><f i:type=""a:Decimal_foo"">-1</f><f5 i:type=""a:DateTime_foo"">9999-12-31T23:59:59.9999999</f5><g i:type=""a:Decimal_foo"">-79228162514264337593543950335</g><guidData i:type=""a:Guid_foo"">4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56</guidData><h i:type=""a:Decimal_foo"">1</h><i i:type=""a:Decimal_foo"">0</i><j i:type=""a:Decimal_foo"">0</j><k i:type=""a:Double_foo"">0</k><l i:type=""a:Double_foo"">4.94065645841247E-324</l><lDTO xmlns:b=""http://schemas.datacontract.org/2004/07/System""/><m i:type=""a:Double_foo"">1.7976931348623157E+308</m><n i:type=""a:Double_foo"">-1.7976931348623157E+308</n><nDTO i:type=""a:DateTimeOffset_foo""><DateTime xmlns=""http://schemas.datacontract.org/2004/07/System"">9999-12-31T23:59:59.9999999Z</DateTime><OffsetMinutes xmlns=""http://schemas.datacontract.org/2004/07/System"">0</OffsetMinutes></nDTO><o i:type=""a:Double_foo"">NaN</o><obj/><p i:type=""a:Double_foo"">-INF</p><q i:type=""a:Double_foo"">INF</q><r i:type=""a:Single_foo"">0</r><s i:type=""a:Single_foo"">1.401298E-45</s><strData i:nil=""true""/><t i:type=""a:Single_foo"">-3.40282347E+38</t><timeSpan i:type=""a:TimeSpan_foo"">P10675199DT2H48M5.4775807S</timeSpan><u i:type=""a:Single_foo"">3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v i:type=""a:Single_foo"">NaN</v><w i:type=""a:Single_foo"">-INF</w><x i:type=""a:Single_foo"">INF</x><xmlQualifiedName i:type=""a:XmlQualifiedName_foo"" xmlns:b=""http://www.microsoft.com"">b:WCF</xmlQualifiedName><y i:type=""a:Int32_foo"">0</y><z i:type=""a:Int32_foo"">2147483647</z><z1 i:type=""a:Int32_foo"">-2147483648</z1><z2 i:type=""a:Int64_foo"">0</z2><z3 i:type=""a:Int64_foo"">9223372036854775807</z3><z4 i:type=""a:Int64_foo"">-9223372036854775808</z4><z5/><z6 i:type=""a:SByte_foo"">0</z6><z7 i:type=""a:SByte_foo"">127</z7><z8 i:type=""a:SByte_foo"">-128</z8><z9 i:type=""a:Int16_foo"">0</z9><z91 i:type=""a:Int16_foo"">32767</z91><z92 i:type=""a:Int16_foo"">-32768</z92><z93 i:type=""a:String_foo"">abc</z93><z94 i:type=""a:UInt16_foo"">0</z94><z95 i:type=""a:UInt16_foo"">65535</z95><z96 i:type=""a:UInt16_foo"">0</z96><z97 i:type=""a:UInt32_foo"">0</z97><z98 i:type=""a:UInt32_foo"">4294967295</z98><z99 i:type=""a:UInt32_foo"">0</z99><z990 i:type=""a:UInt64_foo"">0</z990><z991 i:type=""a:UInt64_foo"">18446744073709551615</z991><z992 i:type=""a:UInt64_foo"">0</z992><z993>AQIDBA==</z993></_data2></ObjectContainer>";
+        DCS_BasicRoundTripResolvePrimitiveTypes(baseline);
+    }
+
+    /// <summary>
+    /// Roundtrips a Datacontract type  which contains Primitive types assigned to member of type object. 
+    /// Resolver is plugged in and resolves the primitive types. Verify resolver called during ser and deser
+    /// </summary>
+    [Fact]
+    [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+    public static void DCS_BasicRoundTripResolvePrimitiveTypes_NotNetFramework()
+    {
+        string baseline = @"<ObjectContainer xmlns=""http://schemas.datacontract.org/2004/07/SerializationTestTypes"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><_data i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com""><a i:type=""a:Boolean_foo"">false</a><array1><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/></array1><b i:type=""a:Byte_foo"">255</b><c i:type=""a:Byte_foo"">0</c><d i:type=""a:Char_foo"">65535</d><e i:type=""a:Decimal_foo"">79228162514264337593543950335</e><f i:type=""a:Decimal_foo"">-1</f><f5 i:type=""a:DateTime_foo"">9999-12-31T23:59:59.9999999</f5><g i:type=""a:Decimal_foo"">-79228162514264337593543950335</g><guidData i:type=""a:Guid_foo"">4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56</guidData><h i:type=""a:Decimal_foo"">1</h><i i:type=""a:Decimal_foo"">0</i><j i:type=""a:Decimal_foo"">0</j><k i:type=""a:Double_foo"">0</k><l i:type=""a:Double_foo"">5E-324</l><lDTO xmlns:b=""http://schemas.datacontract.org/2004/07/System""/><m i:type=""a:Double_foo"">1.7976931348623157E+308</m><n i:type=""a:Double_foo"">-1.7976931348623157E+308</n><nDTO i:type=""a:DateTimeOffset_foo""><DateTime xmlns=""http://schemas.datacontract.org/2004/07/System"">9999-12-31T23:59:59.9999999Z</DateTime><OffsetMinutes xmlns=""http://schemas.datacontract.org/2004/07/System"">0</OffsetMinutes></nDTO><o i:type=""a:Double_foo"">NaN</o><obj/><p i:type=""a:Double_foo"">-INF</p><q i:type=""a:Double_foo"">INF</q><r i:type=""a:Single_foo"">0</r><s i:type=""a:Single_foo"">1E-45</s><strData i:nil=""true""/><t i:type=""a:Single_foo"">-3.4028235E+38</t><timeSpan i:type=""a:TimeSpan_foo"">P10675199DT2H48M5.4775807S</timeSpan><u i:type=""a:Single_foo"">3.4028235E+38</u><uri>http://www.microsoft.com/</uri><v i:type=""a:Single_foo"">NaN</v><w i:type=""a:Single_foo"">-INF</w><x i:type=""a:Single_foo"">INF</x><xmlQualifiedName i:type=""a:XmlQualifiedName_foo"" xmlns:b=""http://www.microsoft.com"">b:WCF</xmlQualifiedName><y i:type=""a:Int32_foo"">0</y><z i:type=""a:Int32_foo"">2147483647</z><z1 i:type=""a:Int32_foo"">-2147483648</z1><z2 i:type=""a:Int64_foo"">0</z2><z3 i:type=""a:Int64_foo"">9223372036854775807</z3><z4 i:type=""a:Int64_foo"">-9223372036854775808</z4><z5/><z6 i:type=""a:SByte_foo"">0</z6><z7 i:type=""a:SByte_foo"">127</z7><z8 i:type=""a:SByte_foo"">-128</z8><z9 i:type=""a:Int16_foo"">0</z9><z91 i:type=""a:Int16_foo"">32767</z91><z92 i:type=""a:Int16_foo"">-32768</z92><z93 i:type=""a:String_foo"">abc</z93><z94 i:type=""a:UInt16_foo"">0</z94><z95 i:type=""a:UInt16_foo"">65535</z95><z96 i:type=""a:UInt16_foo"">0</z96><z97 i:type=""a:UInt32_foo"">0</z97><z98 i:type=""a:UInt32_foo"">4294967295</z98><z99 i:type=""a:UInt32_foo"">0</z99><z990 i:type=""a:UInt64_foo"">0</z990><z991 i:type=""a:UInt64_foo"">18446744073709551615</z991><z992 i:type=""a:UInt64_foo"">0</z992><z993>AQIDBA==</z993></_data><_data2 i:type=""a:PrimitiveContainer_foo"" xmlns:a=""http://www.default.com""><a i:type=""a:Boolean_foo"">false</a><array1><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/><anyType xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""/></array1><b i:type=""a:Byte_foo"">255</b><c i:type=""a:Byte_foo"">0</c><d i:type=""a:Char_foo"">65535</d><e i:type=""a:Decimal_foo"">79228162514264337593543950335</e><f i:type=""a:Decimal_foo"">-1</f><f5 i:type=""a:DateTime_foo"">9999-12-31T23:59:59.9999999</f5><g i:type=""a:Decimal_foo"">-79228162514264337593543950335</g><guidData i:type=""a:Guid_foo"">4bc848b1-a541-40bf-8aa9-dd6ccb6d0e56</guidData><h i:type=""a:Decimal_foo"">1</h><i i:type=""a:Decimal_foo"">0</i><j i:type=""a:Decimal_foo"">0</j><k i:type=""a:Double_foo"">0</k><l i:type=""a:Double_foo"">5E-324</l><lDTO xmlns:b=""http://schemas.datacontract.org/2004/07/System""/><m i:type=""a:Double_foo"">1.7976931348623157E+308</m><n i:type=""a:Double_foo"">-1.7976931348623157E+308</n><nDTO i:type=""a:DateTimeOffset_foo""><DateTime xmlns=""http://schemas.datacontract.org/2004/07/System"">9999-12-31T23:59:59.9999999Z</DateTime><OffsetMinutes xmlns=""http://schemas.datacontract.org/2004/07/System"">0</OffsetMinutes></nDTO><o i:type=""a:Double_foo"">NaN</o><obj/><p i:type=""a:Double_foo"">-INF</p><q i:type=""a:Double_foo"">INF</q><r i:type=""a:Single_foo"">0</r><s i:type=""a:Single_foo"">1E-45</s><strData i:nil=""true""/><t i:type=""a:Single_foo"">-3.4028235E+38</t><timeSpan i:type=""a:TimeSpan_foo"">P10675199DT2H48M5.4775807S</timeSpan><u i:type=""a:Single_foo"">3.4028235E+38</u><uri>http://www.microsoft.com/</uri><v i:type=""a:Single_foo"">NaN</v><w i:type=""a:Single_foo"">-INF</w><x i:type=""a:Single_foo"">INF</x><xmlQualifiedName i:type=""a:XmlQualifiedName_foo"" xmlns:b=""http://www.microsoft.com"">b:WCF</xmlQualifiedName><y i:type=""a:Int32_foo"">0</y><z i:type=""a:Int32_foo"">2147483647</z><z1 i:type=""a:Int32_foo"">-2147483648</z1><z2 i:type=""a:Int64_foo"">0</z2><z3 i:type=""a:Int64_foo"">9223372036854775807</z3><z4 i:type=""a:Int64_foo"">-9223372036854775808</z4><z5/><z6 i:type=""a:SByte_foo"">0</z6><z7 i:type=""a:SByte_foo"">127</z7><z8 i:type=""a:SByte_foo"">-128</z8><z9 i:type=""a:Int16_foo"">0</z9><z91 i:type=""a:Int16_foo"">32767</z91><z92 i:type=""a:Int16_foo"">-32768</z92><z93 i:type=""a:String_foo"">abc</z93><z94 i:type=""a:UInt16_foo"">0</z94><z95 i:type=""a:UInt16_foo"">65535</z95><z96 i:type=""a:UInt16_foo"">0</z96><z97 i:type=""a:UInt32_foo"">0</z97><z98 i:type=""a:UInt32_foo"">4294967295</z98><z99 i:type=""a:UInt32_foo"">0</z99><z990 i:type=""a:UInt64_foo"">0</z990><z991 i:type=""a:UInt64_foo"">18446744073709551615</z991><z992 i:type=""a:UInt64_foo"">0</z992><z993>AQIDBA==</z993></_data2></ObjectContainer>";
+        DCS_BasicRoundTripResolvePrimitiveTypes(baseline);
+    }
+
     /// <summary>
     /// Roundtrip Datacontract types  which contains members of type enum and struct.
     /// Some enums are resolved by Resolver and others by the KT attribute.
@@ -3746,10 +3778,6 @@ public static partial class DataContractSerializerTests
 
         TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.CharClass(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.CharClass***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.CharClass***\"><c>0</c><c1>65535</c1><c2>0</c2><c3>99</c3></_data><_data2 i:type=\"a:SerializationTestTypes.CharClass***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.CharClass***\"><c>0</c><c1>65535</c1><c2>0</c2><c3>99</c3></_data2></ObjectContainer>");
 
-        TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.AllTypes(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.AllTypes***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>5642b5d2-87c3-a724-2390-997062f3f7a2</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><lDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"/><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan i:type=\"b:duration\" xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/\">P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data><_data2 i:type=\"a:SerializationTestTypes.AllTypes***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>5642b5d2-87c3-a724-2390-997062f3f7a2</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><lDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"/><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan i:type=\"b:duration\" xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/\">P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data2></ObjectContainer>");
-
-        TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.AllTypes2(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.AllTypes2***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes2***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>cac76333-577f-7e1f-0389-789b0d97f395</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan>P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data><_data2 i:type=\"a:SerializationTestTypes.AllTypes2***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes2***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>cac76333-577f-7e1f-0389-789b0d97f395</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan>P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data2></ObjectContainer>");
-
         TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.DictContainer(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.DictContainer***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.DictContainer***\"><dictionaryData xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"><b:KeyValueOfbase64Binarybase64Binary><b:Key>S3sf7NHCbkyVtgYKERsK/Q==</b:Key><b:Value>kNwxmEzKsk2TNVihAl7PKQ==</b:Value></b:KeyValueOfbase64Binarybase64Binary><b:KeyValueOfbase64Binarybase64Binary><b:Key>R5hoXhAack+qrhmyR80IeA==</b:Key><b:Value>kYav59VD50mHdRsBJr2UPA==</b:Value></b:KeyValueOfbase64Binarybase64Binary><b:KeyValueOfbase64Binarybase64Binary><b:Key>3WgRcQBK5U2fPjjd+9oBRA==</b:Key><b:Value>r7SFJrYJVkqB25UjGj0Cdg==</b:Value></b:KeyValueOfbase64Binarybase64Binary></dictionaryData></_data><_data2 i:type=\"a:SerializationTestTypes.DictContainer***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.DictContainer***\"><dictionaryData xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"><b:KeyValueOfbase64Binarybase64Binary><b:Key>S3sf7NHCbkyVtgYKERsK/Q==</b:Key><b:Value>kNwxmEzKsk2TNVihAl7PKQ==</b:Value></b:KeyValueOfbase64Binarybase64Binary><b:KeyValueOfbase64Binarybase64Binary><b:Key>R5hoXhAack+qrhmyR80IeA==</b:Key><b:Value>kYav59VD50mHdRsBJr2UPA==</b:Value></b:KeyValueOfbase64Binarybase64Binary><b:KeyValueOfbase64Binarybase64Binary><b:Key>3WgRcQBK5U2fPjjd+9oBRA==</b:Key><b:Value>r7SFJrYJVkqB25UjGj0Cdg==</b:Value></b:KeyValueOfbase64Binarybase64Binary></dictionaryData></_data2></ObjectContainer>");
 
         TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.ListContainer(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.ListContainer***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.ListContainer***\"><listData xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"><b:string>TestData</b:string></listData></_data><_data2 i:type=\"a:SerializationTestTypes.ListContainer***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.ListContainer***\"><listData xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"><b:string>TestData</b:string></listData></_data2></ObjectContainer>");
@@ -3822,6 +3850,25 @@ public static partial class DataContractSerializerTests
         }
     }
 
+    [Fact]
+    [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+    public static void DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct_NetFramework()
+    {
+        TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.AllTypes(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.AllTypes***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>5642b5d2-87c3-a724-2390-997062f3f7a2</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><lDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"/><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan i:type=\"b:duration\" xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/\">P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data><_data2 i:type=\"a:SerializationTestTypes.AllTypes***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>5642b5d2-87c3-a724-2390-997062f3f7a2</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><lDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"/><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan i:type=\"b:duration\" xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/\">P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data2></ObjectContainer>");
+
+        TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.AllTypes2(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.AllTypes2***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes2***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>cac76333-577f-7e1f-0389-789b0d97f395</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan>P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data><_data2 i:type=\"a:SerializationTestTypes.AllTypes2***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes2***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>cac76333-577f-7e1f-0389-789b0d97f395</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>4.94065645841247E-324</l><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1.401298E-45</s><strData i:nil=\"true\"/><t>-3.40282347E+38</t><timeSpan>P10675199DT2H48M5.4775807S</timeSpan><u>3.40282347E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data2></ObjectContainer>");
+    }
+
+    [Fact]
+    [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+    public static void DCS_BasicPerSerializerRoundTripAndCompare_EnumStruct_NotNetFramework()
+    {
+        TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.AllTypes(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.AllTypes***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>5642b5d2-87c3-a724-2390-997062f3f7a2</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>5E-324</l><lDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"/><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1E-45</s><strData i:nil=\"true\"/><t>-3.4028235E+38</t><timeSpan i:type=\"b:duration\" xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/\">P10675199DT2H48M5.4775807S</timeSpan><u>3.4028235E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data><_data2 i:type=\"a:SerializationTestTypes.AllTypes***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>5642b5d2-87c3-a724-2390-997062f3f7a2</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>5E-324</l><lDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"/><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1E-45</s><strData i:nil=\"true\"/><t>-3.4028235E+38</t><timeSpan i:type=\"b:duration\" xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/\">P10675199DT2H48M5.4775807S</timeSpan><u>3.4028235E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data2></ObjectContainer>");
+
+        TestObjectInObjectContainerWithSimpleResolver(new SerializationTestTypes.AllTypes2(), "<ObjectContainer xmlns=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><_data i:type=\"a:SerializationTestTypes.AllTypes2***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes2***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>cac76333-577f-7e1f-0389-789b0d97f395</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>5E-324</l><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1E-45</s><strData i:nil=\"true\"/><t>-3.4028235E+38</t><timeSpan>P10675199DT2H48M5.4775807S</timeSpan><u>3.4028235E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data><_data2 i:type=\"a:SerializationTestTypes.AllTypes2***\" xmlns:a=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.AllTypes2***\"><a>false</a><array1><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/><anyType xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/></array1><b>255</b><c>0</c><d>65535</d><e>79228162514264337593543950335</e><enumArrayData><MyEnum1>red</MyEnum1></enumArrayData><enumBase1 i:type=\"b:SerializationTestTypes.MyEnum1***\" xmlns:b=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes.MyEnum1***\">red</enumBase1><f>-1</f><f5>0001-01-01T00:00:00</f5><g>-79228162514264337593543950335</g><guidData>cac76333-577f-7e1f-0389-789b0d97f395</guidData><h>1</h><i>0</i><j>0</j><k>0</k><l>5E-324</l><m>1.7976931348623157E+308</m><n>-1.7976931348623157E+308</n><nDTO xmlns:b=\"http://schemas.datacontract.org/2004/07/System\"><b:DateTime>9999-12-31T23:59:59.9999999Z</b:DateTime><b:OffsetMinutes>0</b:OffsetMinutes></nDTO><o>NaN</o><obj/><p>-INF</p><q>INF</q><r>0</r><s>1E-45</s><strData i:nil=\"true\"/><t>-3.4028235E+38</t><timeSpan>P10675199DT2H48M5.4775807S</timeSpan><u>3.4028235E+38</u><uri>http://www.microsoft.com/</uri><v>NaN</v><valType i:type=\"PublicDCStruct\"><Data>Data</Data></valType><w>-INF</w><x>INF</x><q:xmlQualifiedName xmlns:q=\"http://schemas.datacontract.org/2004/07/SerializationTestTypes\" xmlns:b=\"http://www.microsoft.com\">b:WCF</q:xmlQualifiedName><y>0</y><z>2147483647</z><z1>-2147483648</z1><z2>0</z2><z3>9223372036854775807</z3><z4>-9223372036854775808</z4><z5/><z6>0</z6><z7>127</z7><z8>-128</z8><z9>0</z9><z91>32767</z91><z92>-32768</z92><z93>abc</z93><z94>0</z94><z95>65535</z95><z96>0</z96><z97>0</z97><z98>4294967295</z98><z99>0</z99><z990>0</z990><z991>18446744073709551615</z991><z992>0</z992></_data2></ObjectContainer>");
+    }
+
+
 #endregion
 
     [Fact]
index e7c0339..5b06926 100644 (file)
@@ -395,17 +395,14 @@ namespace System.Tests
             Assert.Equal(0x7FF00000_00000000u, DoubleToUInt64Bits(double.PositiveInfinity));
         }
 
-        public static IEnumerable<object[]> ToString_TestData()
+        private static IEnumerable<object[]> ToString_TestData()
         {
-            yield return new object[] { double.MinValue, "G", null, "-1.79769313486232E+308" };
             yield return new object[] { -4567.0, "G", null, "-4567" };
             yield return new object[] { -4567.89101, "G", null, "-4567.89101" };
             yield return new object[] { 0.0, "G", null, "0" };
             yield return new object[] { 4567.0, "G", null, "4567" };
             yield return new object[] { 4567.89101, "G", null, "4567.89101" };
-            yield return new object[] { double.MaxValue, "G", null, "1.79769313486232E+308" };
 
-            yield return new object[] { double.Epsilon, "G", null, "4.94065645841247E-324" };
             yield return new object[] { double.NaN, "G", null, "NaN" };
 
             yield return new object[] { 2468.0, "N", null, "2,468.00" };
@@ -432,27 +429,75 @@ namespace System.Tests
             yield return new object[] { -2468.0, "N", customNegativeSignGroupSeparatorNegativePattern, "(2*468.00)" };
 
             NumberFormatInfo invariantFormat = NumberFormatInfo.InvariantInfo;
-            yield return new object[] { double.Epsilon, "G", invariantFormat, "4.94065645841247E-324" };
             yield return new object[] { double.NaN, "G", invariantFormat, "NaN" };
             yield return new object[] { double.PositiveInfinity, "G", invariantFormat, "Infinity" };
             yield return new object[] { double.NegativeInfinity, "G", invariantFormat, "-Infinity" };
         }
 
+        public static IEnumerable<object[]> ToString_TestData_NetFramework()
+        {
+            foreach (var testData in ToString_TestData())
+            {
+                yield return testData;
+            }
+
+            yield return new object[] { double.MinValue, "G", null, "-1.79769313486232E+308" };
+            yield return new object[] { double.MaxValue, "G", null, "1.79769313486232E+308" };
+
+            yield return new object[] { double.Epsilon, "G", null, "4.94065645841247E-324" };
+
+            NumberFormatInfo invariantFormat = NumberFormatInfo.InvariantInfo;
+            yield return new object[] { double.Epsilon, "G", invariantFormat, "4.94065645841247E-324" };
+        }
+
+        public static IEnumerable<object[]> ToString_TestData_NotNetFramework()
+        {
+            foreach (var testData in ToString_TestData())
+            {
+                yield return testData;
+            }
+
+            yield return new object[] { double.MinValue, "G", null, "-1.7976931348623157E+308" };
+            yield return new object[] { double.MaxValue, "G", null, "1.7976931348623157E+308" };
+
+            yield return new object[] { double.Epsilon, "G", null, "5E-324" };
+
+            NumberFormatInfo invariantFormat = NumberFormatInfo.InvariantInfo;
+            yield return new object[] { double.Epsilon, "G", invariantFormat, "5E-324" };
+        }
+
+        [Fact]
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public static void Test_ToString_NetFramework()
+        {
+            RemoteInvoke(() =>
+            {
+                CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
+
+                foreach (var testdata in ToString_TestData_NetFramework())
+                {
+                    ToString((double)testdata[0], (string)testdata[1], (IFormatProvider)testdata[2], (string)testdata[3]);
+                }
+                return SuccessExitCode;
+            }).Dispose();
+        }
+
         [Fact]
-        public static void Test_ToString()
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public static void Test_ToString_NotNetFramework()
         {
             RemoteInvoke(() =>
             {
                 CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
 
-                foreach (var testdata in ToString_TestData())
+                foreach (var testdata in ToString_TestData_NotNetFramework())
                 {
                     ToString((double)testdata[0], (string)testdata[1], (IFormatProvider)testdata[2], (string)testdata[3]);
                 }
                 return SuccessExitCode;
             }).Dispose();
         }
-        
+
         private static void ToString(double d, string format, IFormatProvider provider, string expected)
         {
             bool isDefaultProvider = (provider == null || provider == NumberFormatInfo.CurrentInfo);
index 16b5dc5..68b8556 100644 (file)
@@ -148,7 +148,7 @@ namespace System.Tests
             {
                 CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
 
-                foreach (var testdata in ToString_TestData())
+                foreach (var testdata in ToString_TestData_NotNetFramework())
                 {
                     double localI = (double)testdata[0];
                     string localFormat = (string)testdata[1];
index 08e4e68..204b66a 100644 (file)
@@ -393,17 +393,14 @@ namespace System.Tests
             Assert.Equal(0x7F800000u, SingleToUInt32Bits(float.PositiveInfinity));
         }
 
-        public static IEnumerable<object[]> ToString_TestData()
+        private static IEnumerable<object[]> ToString_TestData()
         {
-            yield return new object[] { float.MinValue, "G", null, "-3.402823E+38" };
             yield return new object[] { -4567.0f, "G", null, "-4567" };
             yield return new object[] { -4567.89101f, "G", null, "-4567.891" };
             yield return new object[] { 0.0f, "G", null, "0" };
             yield return new object[] { 4567.0f, "G", null, "4567" };
             yield return new object[] { 4567.89101f, "G", null, "4567.891" };
-            yield return new object[] { float.MaxValue, "G", null, "3.402823E+38" };
 
-            yield return new object[] { float.Epsilon, "G", null, "1.401298E-45" };
             yield return new object[] { float.NaN, "G", null, "NaN" };
 
             yield return new object[] { 2468.0f, "N", null, "2,468.00" };
@@ -430,27 +427,75 @@ namespace System.Tests
             yield return new object[] { -2468.0f, "N", customNegativeSignGroupSeparatorNegativePattern, "(2*468.00)" };
 
             NumberFormatInfo invariantFormat = NumberFormatInfo.InvariantInfo;
-            yield return new object[] { float.Epsilon, "G", invariantFormat, "1.401298E-45" };
             yield return new object[] { float.NaN, "G", invariantFormat, "NaN" };
             yield return new object[] { float.PositiveInfinity, "G", invariantFormat, "Infinity" };
             yield return new object[] { float.NegativeInfinity, "G", invariantFormat, "-Infinity" };
         }
 
+        public static IEnumerable<object[]> ToString_TestData_NetFramework()
+        {
+            foreach (var testData in ToString_TestData())
+            {
+                yield return testData;
+            }
+
+            yield return new object[] { float.MinValue, "G", null, "-3.402823E+38" };
+            yield return new object[] { float.MaxValue, "G", null, "3.402823E+38" };
+
+            yield return new object[] { float.Epsilon, "G", null, "1.401298E-45" };
+
+            NumberFormatInfo invariantFormat = NumberFormatInfo.InvariantInfo;
+            yield return new object[] { float.Epsilon, "G", invariantFormat, "1.401298E-45" };
+        }
+
+        public static IEnumerable<object[]> ToString_TestData_NotNetFramework()
+        {
+            foreach (var testData in ToString_TestData())
+            {
+                yield return testData;
+            }
+
+            yield return new object[] { float.MinValue, "G", null, "-3.4028235E+38" };
+            yield return new object[] { float.MaxValue, "G", null, "3.4028235E+38" };
+
+            yield return new object[] { float.Epsilon, "G", null, "1E-45" };
+
+            NumberFormatInfo invariantFormat = NumberFormatInfo.InvariantInfo;
+            yield return new object[] { float.Epsilon, "G", invariantFormat, "1E-45" };
+        }
+
+        [Fact]
+        [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework)]
+        public static void Test_ToString_NetFramework()
+        {
+            RemoteInvoke(() =>
+            {
+                CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
+
+                foreach (var testdata in ToString_TestData_NetFramework())
+                {
+                    ToString((float)testdata[0], (string)testdata[1], (IFormatProvider)testdata[2], (string)testdata[3]);
+                }
+                return SuccessExitCode;
+            }).Dispose();
+        }
+
         [Fact]
-        public static void Test_ToString()
+        [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)]
+        public static void Test_ToString_NotNetFramework()
         {
             RemoteInvoke(() =>
             {
                 CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
 
-                foreach (var testdata in ToString_TestData())
+                foreach (var testdata in ToString_TestData_NotNetFramework())
                 {
                     ToString((float)testdata[0], (string)testdata[1], (IFormatProvider)testdata[2], (string)testdata[3]);
                 }
                 return SuccessExitCode;
             }).Dispose();
         }
-        
+
         private static void ToString(float f, string format, IFormatProvider provider, string expected)
         {
             bool isDefaultProvider = provider == null;
index a81e4a0..783c239 100644 (file)
@@ -97,7 +97,7 @@ namespace System.Tests
         public static void Total_Days_Hours_Minutes_Seconds_Milliseconds(TimeSpan timeSpan, double expectedDays, double expectedHours, double expectedMinutes, double expectedSeconds, double expectedMilliseconds)
         {
             // Use ToString() to prevent any rounding errors when comparing
-            Assert.Equal(expectedDays.ToString(), timeSpan.TotalDays.ToString());
+            Assert.Equal(expectedDays.ToString("G15"), timeSpan.TotalDays.ToString("G15"));
             Assert.Equal(expectedHours, timeSpan.TotalHours);
             Assert.Equal(expectedMinutes, timeSpan.TotalMinutes);
             Assert.Equal(expectedSeconds, timeSpan.TotalSeconds);