Skip to content

Commit

Permalink
Add Test Project for XmlSerializer ReflectionOnly (dotnet/corefx#14261)
Browse files Browse the repository at this point in the history
Add Test Project for Running XmlSerializer Tests in ReflectionOnly Mode.

Fix dotnet/corefx#14253

Commit migrated from dotnet/corefx@ea99208
  • Loading branch information
shmao committed Dec 9, 2016
1 parent d99f4cd commit dff7161
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,16 +113,16 @@ public abstract class XmlSerializerImplementation
/// </devdoc>
public class XmlSerializer
{
private enum SerializationMode
public enum SerializationMode
{
CodeGenOnly,
ReflectionOnly,
ReflectionAsBackup
}

private SerializationMode Mode { get; set; } = SerializationMode.ReflectionAsBackup;
public static SerializationMode Mode { get; set; } = SerializationMode.ReflectionAsBackup;

private bool ReflectionMethodEnabled
private static bool ReflectionMethodEnabled
{
get
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
<Project Include="XmlSchema\XmlSchemaSet\System.Xml.XmlSchemaSet.Tests.csproj" />
<Project Include="XmlSchema\XmlSchemaValidatorApi\System.Xml.XmlSchema.XmlSchemaValidatorApi.Tests.csproj" />
<Project Include="XmlSerializer\System.Xml.XmlSerializer.Tests.csproj" />
<Project Include="XmlSerializer\ReflectionOnly\System.Xml.XmlSerializer.ReflectionOnly.Tests.csproj" />
<Project Include="XmlWriter\System.Xml.RW.XmlWriter.Tests.csproj" />
<Project Include="XmlWriter\System.Xml.RW.XmlWriter.Tests.csproj">
<TargetGroup>netstandard1.3</TargetGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
<DefineConstants>$(DefineConstants);ReflectionOnly</DefineConstants>
<RootNamespace>System.Xml.XmlSerializer.ReflectionOnly.Tests</RootNamespace>
<AssemblyName>System.Xml.XmlSerializer.ReflectionOnly.Tests</AssemblyName>
<ProjectGuid>{4050F1D1-1DD2-4B48-A17B-E3F955518C4B}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(TestSourceFolder)..\..\..\System.Runtime.Serialization.Xml\tests\Utils.cs" />
<Compile Include="$(TestSourceFolder)..\..\..\System.Runtime.Serialization.Xml\tests\SerializationTypes.cs" />
<Compile Include="$(TestSourceFolder)..\..\..\System.Runtime.Serialization.Xml\tests\Performance\PerformanceTestsCommon.cs" />
<Compile Include="$(TestSourceFolder)XmlSerializerTests.cs" />
<Compile Include="$(TestSourceFolder)Performance\XsPerformanceTest.cs" />
</ItemGroup>
<ItemGroup Condition="'$(TargetGroup)' != 'netcore50' AND '$(TargetGroup)' != 'netcore50aot'">
<Compile Include="$(TestSourceFolder)XmlSerializerTests.Internal.cs" Condition="'$(UseContractReferences)' == ''" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), System.Xml.XmlSerializer.Tests.settings.targets))\System.Xml.XmlSerializer.Tests.settings.targets" />
</Project>
Original file line number Diff line number Diff line change
@@ -1,36 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
<PropertyGroup>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<PropertyGroup>
<RootNamespace>System.Xml.XmlSerializer.Tests</RootNamespace>
<AssemblyName>System.Xml.XmlSerializer.Tests</AssemblyName>
<ProjectGuid>{4050F1D1-1DD2-4B48-A17B-E3F90DD18C4B}</ProjectGuid>
<DefineConstants Condition="'$(TargetGroup)' == 'netcore50' OR '$(TargetGroup)' == 'netcore50aot'">$(DefineConstants);NET_NATIVE</DefineConstants>
<NugetTargetMoniker Condition="'$(TargetGroup)' == ''">.NETStandard,Version=v1.7</NugetTargetMoniker>
<NugetTargetMoniker>.NETStandard,Version=v1.7</NugetTargetMoniker>
</PropertyGroup>
<PropertyGroup Condition="'$(UseContractReferences)' == 'true'">
<ProjectJson>Performance/project.json</ProjectJson>
<ProjectLockJson>Performance/project.lock.json</ProjectLockJson>
<ProjectGuid>{4050F1D1-1DD2-4B48-A17B-E3F90DD18C4B}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\..\..\System.Runtime.Serialization.Xml\tests\Utils.cs" />
<Compile Include="..\..\..\System.Runtime.Serialization.Xml\tests\SerializationTypes.cs" />
<Compile Include="..\..\..\System.Runtime.Serialization.Xml\tests\Performance\PerformanceTestsCommon.cs" />
<Compile Include="XmlSerializerTests.cs" />
<Compile Include="Performance\XsPerformanceTest.cs" />
<Compile Include="$(TestSourceFolder)..\..\..\System.Runtime.Serialization.Xml\tests\Utils.cs" />
<Compile Include="$(TestSourceFolder)..\..\..\System.Runtime.Serialization.Xml\tests\SerializationTypes.cs" />
<Compile Include="$(TestSourceFolder)..\..\..\System.Runtime.Serialization.Xml\tests\Performance\PerformanceTestsCommon.cs" />
<Compile Include="$(TestSourceFolder)XmlSerializerTests.cs" />
<Compile Include="$(TestSourceFolder)Performance\XsPerformanceTest.cs" />
</ItemGroup>
<ItemGroup Condition="'$(TargetGroup)' != 'netcore50' AND '$(TargetGroup)' != 'netcore50aot'">
<Compile Include="XmlSerializerTests.Internal.cs" Condition="'$(UseContractReferences)' == ''" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\System.Private.Xml\pkg\System.Private.Xml.pkgproj" />
<ProjectReference Include="..\..\..\System.Xml.XmlSerializer\pkg\System.Xml.XmlSerializer.pkgproj" />
<Compile Include="$(TestSourceFolder)XmlSerializerTests.Internal.cs" Condition="'$(UseContractReferences)' == ''" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), System.Xml.XmlSerializer.Tests.settings.targets))\System.Xml.XmlSerializer.Tests.settings.targets" />
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<DefineConstants Condition="'$(TargetGroup)' == 'netcore50' OR '$(TargetGroup)' == 'netcore50aot'">$(DefineConstants);NET_NATIVE</DefineConstants>
<NugetTargetMoniker Condition="'$(TargetGroup)' == ''">.NETStandard,Version=v1.7</NugetTargetMoniker>
<NugetTargetMoniker>.NETStandard,Version=v1.7</NugetTargetMoniker>
<TestSourceFolder>$(MSBuildThisFileDirectory)\</TestSourceFolder>
</PropertyGroup>
<PropertyGroup Condition="'$(UseContractReferences)' == 'true'">
<ProjectJson>Performance/project.json</ProjectJson>
<ProjectLockJson>Performance/project.lock.json</ProjectLockJson>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="$(TestSourceFolder)..\..\..\System.Private.Xml\pkg\System.Private.Xml.pkgproj" />
<ProjectReference Include="$(TestSourceFolder)..\..\..\System.Xml.XmlSerializer\pkg\System.Xml.XmlSerializer.pkgproj" />
</ItemGroup>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@

public static partial class XmlSerializerTests
{
#if ReflectionOnly
private static readonly string SerializationModeSetterName = "set_Mode";

static XmlSerializerTests()
{
var method = typeof(XmlSerializer).GetMethod(SerializationModeSetterName);
Assert.True(method != null, $"No method named {SerializationModeSetterName}");
method.Invoke(null, new object[] { 1 });
}

#endif
[Fact]
public static void Xml_BoolAsRoot()
{
Expand Down Expand Up @@ -2320,6 +2331,9 @@ public static void XML_TypeWithFieldsOrdered()
Assert.Equal(value.StringField2, actual.StringField2);
}

#if ReflectionOnly
[ActiveIssue(14260)]
#endif
[Fact]
public static void XmlSchemaTest()
{
Expand Down Expand Up @@ -2354,6 +2368,9 @@ public static void XmlSchemaTest()
Assert.Equal(originalmapping.XsdTypeNamespace, newmapping.XsdTypeNamespace);
}

#if ReflectionOnly
[ActiveIssue(11919)]
#endif
[Fact]
public static void XmlSerializerFactoryTest()
{
Expand All @@ -2367,6 +2384,9 @@ public static void XmlSerializerFactoryTest()
Assert.Equal(dog1.Breed, dog2.Breed);
}

#if ReflectionOnly
[ActiveIssue(14259)]
#endif
[Fact]
public static void XmlUnknownElementAndEventHandlerTest()
{
Expand Down Expand Up @@ -2397,6 +2417,9 @@ public static void XmlUnknownElementAndEventHandlerTest()
Assert.True(b);
}

#if ReflectionOnly
[ActiveIssue(14259)]
#endif
[Fact]
public static void XmlUnknownNodeAndEventHandlerTest()
{
Expand Down

0 comments on commit dff7161

Please sign in to comment.