Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Conversation

@Anipik
Copy link

@Anipik Anipik commented Feb 12, 2018

Related to dotnet/corefx#395
Implementation PR- dotnet/coreclr#16334

AssertExtensions.Throws<ArgumentException>("comparisonType", () => StringComparer.FromComparison(maxInvalid));
}
}
new object[] { StringComparison.CurrentCultureIgnoreCase, StringComparer.CurrentCultureIgnoreCase },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

irregular indentation. please use multiples of 4 spaces.

{ "abcd", "ab$cd", "en-US", CompareOptions.IgnoreSymbols, true },
};

public static TheoryData<string, string, string, CompareOptions, bool> CreateFromCultureAndOptionsOridinalData => new TheoryData<string, string, string, CompareOptions, bool>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo Ordinal

{ "keyx", "valuex" }
};
yield return new object[] { listDictionary, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXICAAAACQMAAAACAAAAAgAAAAkEAAAABQMAAAA8U3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5K0RpY3Rpb25hcnlOb2RlAwAAAANrZXkFdmFsdWUEbmV4dAICBDxTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuTGlzdERpY3Rpb25hcnkrRGljdGlvbmFyeU5vZGUCAAAAAgAAAAYFAAAABGtleTEGBgAAAAZ2YWx1ZTEJBwAAAAQEAAAAG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcgIAAAAMX2NvbXBhcmVJbmZvC19pZ25vcmVDYXNlAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BCQgAAAAAAQcAAAADAAAABgkAAAAEa2V5eAYKAAAABnZhbHVleAoECAAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGCwAAAAAKfwAAAAs=", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXICAAAACQMAAAACAAAAAgAAAAkEAAAABQMAAAA8U3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5K0RpY3Rpb25hcnlOb2RlAwAAAANrZXkFdmFsdWUEbmV4dAICBDxTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuTGlzdERpY3Rpb25hcnkrRGljdGlvbmFyeU5vZGUCAAAAAgAAAAYFAAAABGtleTEGBgAAAAZ2YWx1ZTEJBwAAAAQEAAAAG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcgMAAAAMX2NvbXBhcmVJbmZvC19pZ25vcmVDYXNlCF9vcHRpb25zAwADIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvASNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwkIAAAAAAT3////I1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zAQAAAAd2YWx1ZV9fAAgAAAAAAQcAAAADAAAABgoAAAAEa2V5eAYLAAAABnZhbHVleAoECAAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GDAAAAAAAAAAAfwAAAAoL" : "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXICAAAACQMAAAACAAAAAgAAAAkEAAAABQMAAAA8U3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5K0RpY3Rpb25hcnlOb2RlAwAAAANrZXkFdmFsdWUEbmV4dAICBDxTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuTGlzdERpY3Rpb25hcnkrRGljdGlvbmFyeU5vZGUCAAAAAgAAAAYFAAAABGtleTEGBgAAAAZ2YWx1ZTEJBwAAAAQEAAAAG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcgIAAAAMX2NvbXBhcmVJbmZvC19pZ25vcmVDYXNlAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BCQgAAAAAAQcAAAADAAAABgkAAAAEa2V5eAYKAAAABnZhbHVleAoECAAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GCwAAAAAAAAAAfwAAAAoL" } };
yield return new object[] { listDictionary, new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXICAAAACQMAAAACAAAAAgAAAAkEAAAABQMAAAA8U3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5K0RpY3Rpb25hcnlOb2RlAwAAAANrZXkFdmFsdWUEbmV4dAICBDxTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuTGlzdERpY3Rpb25hcnkrRGljdGlvbmFyeU5vZGUCAAAAAgAAAAYFAAAABGtleTEGBgAAAAZ2YWx1ZTEJBwAAAAQEAAAAG1N5c3RlbS5DdWx0dXJlQXdhcmVDb21wYXJlcgMAAAAMX2NvbXBhcmVJbmZvCF9vcHRpb25zC19pZ25vcmVDYXNlAwMAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvI1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zAQkIAAAABPf///8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAAAAAAAAQcAAAADAAAABgoAAAAEa2V5eAYLAAAABnZhbHVleAoECAAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGDAAAAAAKfwAAAAs=" } };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to test round tripping with NETFX and with .NET Core 2.0. Doesn't that mean we need at least 2 blobs here, one for each of those? I was also expecting to see an update to where this data is consumed, as previously it only was testing roundtripping with NETFX.

@Anipik Anipik requested a review from ViktorHofer February 13, 2018 21:43
@ViktorHofer
Copy link
Member

ViktorHofer commented Feb 13, 2018

I see that we are testing serialization of some of the StringComparers through other types like Hashtable but it seems we are not testing all and not directly.

Please add some yields to tests all the StringComparers:

  • CurrentCulture
  • CurrentCultureIgnoreCase
  • InvariantCulture
  • InvariantCultureIgnoreCase
  • Ordinal
  • OrdinalIgnoreCase

You will need to condition the CurrentCulture ones. I recommend to create the blobs with Culture en-US (maybe by setting your machine culture to en-us for that, or by overriding your current culture) and then condition to only return these yields if the CurrentCulture is en-US so that the culture stored in the blob aligns with the current executing culture.

As Dan already commented earlier, for the the first 4 ones (which you changed in your coreclr PR) you will need to add blobs for

  1. master/netcoreapp2.1 <-- the first index in the test data always contains the blobs that align with master
  2. netfx
  3. netcoreapp2.0

If we change the serialization process of a type again in a future process we can add more columns for future versions of .NET Core.

@ViktorHofer
Copy link
Member

With your latest change you're adding roundtripping tests which is nice but isn't necessary. I think it makes more sense to add a few yields in BinaryFormatterTestData in System.Runtime.Serialization.Formatters.Tests. If you add test data their you will get the following coverage for you:

  • roundtripping on current framework
  • roundtripping from another framework to your framework
  • serializing all the types into a stream
  • equality checks

In most cases we don't have serialization tests outside of S.R.Serialization.Formatters.Tests

@ViktorHofer
Copy link
Member

ViktorHofer commented Feb 14, 2018

Ok good approach but still not quite what I meant. I suggested to directly serialize the StringComparers without a HashTable e.g.

yield return new object[] { StringComparer.InvariantCultureIgnoreCase, new string[] { "...", "...", "..." } };

I think the yields you introduced are fine as they are testing the Hashtable more thoroughly 👍

yield return new object[] { new Hashtable(5), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AAAAAAoKBwAAAAkCAAAACQMAAAAQAgAAAAAAAAAQAwAAAAAAAAAL", "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AAAAAAoKBwAAAAkCAAAACQMAAAAQAgAAAAAAAAAQAwAAAAAAAAAL" } };
yield return new object[] { new Hashtable(new Dictionary<int, string>(), 0.77f), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcggp7Q0/AAAAAAoKAwAAAAkCAAAACQMAAAAQAgAAAAAAAAAQAwAAAAAAAAAL", "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcggp7Q0/AAAAAAoKAwAAAAkCAAAACQMAAAAQAgAAAAAAAAAQAwAAAAAAAAAL" } };
yield return new object[] { new Hashtable(StringComparer.InvariantCultureIgnoreCase), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAgAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEJBQAAAAEQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGBgAAAAAKfwAAAAs=", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UIX29wdGlvbnMDAAMgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BI1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zCQUAAAABBPr///8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAEAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBwAAAAAAAAAAfwAAAAoL" : "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAgAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEJBQAAAAEQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBgAAAAAAAAAAfwAAAAoL" } };
yield return new object[] { new Hashtable(StringComparer.InvariantCultureIgnoreCase), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8IX29wdGlvbnMLX2lnbm9yZUNhc2UDAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBCQUAAAAE+v///yNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwEAAAAHdmFsdWVfXwAIAQAAAAEQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGBwAAAAAKfwAAAAs=", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UIX29wdGlvbnMDAAMgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BI1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zCQUAAAABBPr///8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAEAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBwAAAAAAAAAAfwAAAAoL" : "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAgAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEJBQAAAAEQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBgAAAAAAAAAAfwAAAAoL" } };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you need the PlatformDetection.IsNetfx471OrNewer() here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know the exact reason but it was already present earlier https://github.com/dotnet/corefx/pull/27051/files#diff-98aad8dfb9b9f1ce25acec673abb7490L1092
Should I introduce new yields without the hashtable also ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok it might be that there were some changes to the serialization process of hashtables in netfx471. I think I was the one who added the condition.

Should I introduce new yields without the hashtable also ?

Yes please :) (you won't need the IsNetfx471 condition for that)

@ViktorHofer
Copy link
Member

ViktorHofer commented Feb 15, 2018

That's the right direction. Sorry to be so picky but what's about the both Ordinal StringComparers? Have you left them out intentionally? And with which culture did you create the CurrentCulture StringComparers? Will they work on another cultures machine? See one of my comments above.

@Anipik
Copy link
Author

Anipik commented Feb 15, 2018

Actually we don't get Ordinal StringComparers through Create function and this change does not effect the serialization of these two comparers. There are two indirect tests for this comparers

            yield return new object[] { new System.Collections.Specialized.ListDictionary(StringComparer.Ordinal), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyAgAAAAoAAAAAAAAAAAkDAAAABAMAAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQAL", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyAgAAAAoAAAAAAAAAAAkDAAAABAMAAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQAL" } };
            yield return new object[] { new System.Collections.Specialized.ListDictionary(StringComparer.OrdinalIgnoreCase), new string[] { "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyAgAAAAoAAAAAAAAAAAkDAAAABAMAAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQEL", "AAEAAAD/////AQAAAAAAAAAMAgAAAElTeXN0ZW0sIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQIAAAAICBZTeXN0ZW0uT3JkaW5hbENvbXBhcmVyAgAAAAoAAAAAAAAAAAkDAAAABAMAAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQEL" } };

The Culture used in the last 2 is "en-US". I am just checking if it will work on another culture machine by changing the culture of my machine. If it wont I will add the check for culture before running this test as you suggested.

@Anipik
Copy link
Author

Anipik commented Feb 15, 2018

@ViktorHofer if you want I can direct tests for ordinal Comparers too ?

@Anipik
Copy link
Author

Anipik commented Feb 15, 2018

Tests are passing even if we change the culture. I checked them by running

        public static IEnumerable<object[]> SerializableObjects_MemberData()
        {
            // Save old culture and set a fixed culture for object instantiation
            CultureInfo oldCulture = new CultureInfo("fr-FR");
            System.Threading.Thread.CurrentThread.CurrentCulture = oldCulture;
            Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentCulture);

            try
            {
                CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
                return SerializableObjects().ToArray();
            }
            finally
            {
                // Revert setting a fixed culture
                CultureInfo.CurrentCulture = oldCulture;
            }
        }

@ViktorHofer
Copy link
Member

@ViktorHofer if you want I can direct tests for ordinal Comparers too ?

that would be super helpful as it seems we aren't testing them anywhere.

{
// Save old culture and set a fixed culture for object instantiation
CultureInfo oldCulture = CultureInfo.CurrentCulture;
// Save old culture and set a fixed culture for object instantiation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: no tabs, spaces please

@Anipik
Copy link
Author

Anipik commented Feb 16, 2018

@dotnet-bot test this please

@ViktorHofer
Copy link
Member

after CI gets green please also check if tests are passing with TargetGroup uap & uapaot. Not just once I had to submit a second PR after changing some blobs because CI doesn't test for these targets but the daily builds in mc do...

@Anipik
Copy link
Author

Anipik commented Feb 21, 2018

@dotnet-bot test this please

@Anipik
Copy link
Author

Anipik commented Feb 22, 2018

@dotnet-bot test NETFX x86 Release Build

@Anipik
Copy link
Author

Anipik commented Feb 22, 2018

@dotnet-bot test NETFX x86 Release Build

@Anipik
Copy link
Author

Anipik commented Feb 23, 2018

@ViktorHofer @danmosemsft I am not able to build this or my master branch with build -framework:uap to test these changes against uap. I tried cleaning and syncing with upstream

@Anipik
Copy link
Author

Anipik commented Feb 23, 2018

c:\git\corefx\src\Common\src\Interop\Windows\kernel32\Interop.CreateFile2.cs(95,39): error CS0117: 'PathInternal' does
not contain a definition for 'EnsureExtendedPrefixOverMaxPath' [c:\git\corefx\src\System.IO.FileSystem\src\System.IO.Fi
leSystem.csproj]
System\Net\Http\HttpClientHandler.Core.cs(70,13): error CS0103: The name '_socketsHttpHandler' does not exist in the cu
rrent context [c:\git\corefx\src\System.Net.Http\src\System.Net.Http.csproj]
System\Net\Http\HttpClientHandler.Core.cs(70,46): error CS0103: The name '_socketsHttpHandler' does not exist in the cu
rrent context [c:\git\corefx\src\System.Net.Http\src\System.Net.Http.csproj]
c:\git\corefx\src\Common\src\Interop\Windows\kernel32\Interop.CreateFile2.cs(95,39): error CS0117: 'PathInternal' does
not contain a definition for 'EnsureExtendedPrefixOverMaxPath' [c:\git\corefx\src\System.IO.FileSystem.Watcher\src\Syst
em.IO.FileSystem.Watcher.csproj]
System\SpanHelpers.byte.cs(950,49): error CS0433: The type 'Vector<T>' exists in both 'System.Numerics.Vectors, Version
=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutr
al, PublicKeyToken=7cec85d7bea7798e' [c:\git\corefx\src\System.Memory\src\System.Memory.csproj]
System\SpanHelpers.byte.cs(1030,48): error CS0433: The type 'Vector<T>' exists in both 'System.Numerics.Vectors, Versio
n=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Private.CoreLib, Version=4.0.0.0, Culture=neut
ral, PublicKeyToken=7cec85d7bea7798e' [c:\git\corefx\src\System.Memory\src\System.Memory.csproj]
System\SpanHelpers.byte.cs(1081,24): error CS0433: The type 'Vector<T>' exists in both 'System.Numerics.Vectors, Versio
n=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' and 'System.Private.CoreLib, Version=4.0.0.0, Culture=neut
ral, PublicKeyToken=7cec85d7bea7798e' [c:\git\corefx\src\System.Memory\src\System.Memory.csproj]
c:\git\corefx\src\Common\src\Interop\Windows\Kernel32\Interop.LoadLibraryEx.cs(17,9): error BCL0015: kernel32.dll!LoadL
ibraryExW is not supported on one\more targeted platforms. [c:\git\corefx\src\System.Net.NameResolution\src\System.Net.
NameResolution.csproj]
    0 Warning(s)
    8 Error(s)

@Anipik
Copy link
Author

Anipik commented Feb 23, 2018

for uapaot error is

c:\git\corefx\Tools\partialfacades.task.targets(63,5): error : Errors were encountered when generating facade(s). [c:\git\corefx\src\System.Runtime.Extensions\src\Syst
em.Runtime.Extensions.csproj]
  System.Linq -> c:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Linq\uap\System.Linq.dll
  System.Private.Xml -> c:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Private.Xml\uapaot\System.Private.Xml.dll
  System.Xml.XmlSerializer -> c:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Xml.XmlSerializer\uapaot\System.Xml.XmlSerializer.dll
  System.ObjectModel -> c:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.ObjectModel\uap\System.ObjectModel.dll
  System.Data.Common -> c:\git\corefx\bin\Windows_NT.AnyCPU.Debug\System.Data.Common\uapaot\System.Data.Common.dll

Build FAILED.

c:\git\corefx\external\test-runtime\XUnit.Runtime.depproj(185,5): warning : Could not find the TestILC Tools at 'c:\git\corefx\packages\TestILC.amd64ret\1.0.0-beta-262
22-00\TestILC'. Please run sync.
c:\git\corefx\Tools\partialfacades.task.targets(63,5): error : Errors were encountered when generating facade(s). [c:\git\corefx\src\System.Runtime.Extensions\src\Syst
em.Runtime.Extensions.csproj]
    1 Warning(s)
    1 Error(s)

Time Elapsed 00:00:33.96
Command execution failed with exit code 1.

i tried sync.cmd

@danmoseley
Copy link
Member

@Anipik uap/uapaot runs are on hiatus so they may fail right now and if so ignore as long as you don't make it worse.

@Anipik
Copy link
Author

Anipik commented Feb 23, 2018

@ViktorHofer can you sign off ?

@ViktorHofer
Copy link
Member

It's unfortunate that we can't test it with uap/uapaot but ok

@Anipik
Copy link
Author

Anipik commented Feb 23, 2018

@ViktorHofer can you approve the changes ?

Copy link
Member

@ViktorHofer ViktorHofer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit minor indentation issues. you can decide for yourself if you want to fix that

public static readonly object[][] FromComparison_TestData =
{
// StringComparison StringComparer
new object[] { StringComparison.CurrentCulture, StringComparer.CurrentCulture },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: indentation is off here

yield return new object[] { new Hashtable(StringComparer.InvariantCulture), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8IX29wdGlvbnMLX2lnbm9yZUNhc2UDAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBCQUAAAAE+v///yNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwEAAAAHdmFsdWVfXwAIAAAAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGBwAAAAAKfwAAAAs=", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UIX29wdGlvbnMDAAMgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BI1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zCQUAAAAABPr///8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAAAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBwAAAAAAAAAAfwAAAAoL" : "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAgAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEJBQAAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBgAAAAAAAAAAfwAAAAoL" } };
yield return new object[] { new Hashtable(StringComparer.CurrentCulture), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8IX29wdGlvbnMLX2lnbm9yZUNhc2UDAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBCQUAAAAE+v///yNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwEAAAAHdmFsdWVfXwAIAAAAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGBwAAAAAKfwAAAAs=", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UIX29wdGlvbnMDAAMgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BI1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zCQUAAAAABPr///8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAAAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBwAAAAAAAAAAfwAAAAoL" : "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAgAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEJBQAAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBgAAAAAAAAAAfwAAAAoL" } };
yield return new object[] { new Hashtable(StringComparer.CurrentCultureIgnoreCase), new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8IX29wdGlvbnMLX2lnbm9yZUNhc2UDAwAgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBCQUAAAAE+v///yNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwEAAAAHdmFsdWVfXwAIAQAAAAEQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwMAAAAGbV9uYW1lDW1fU29ydFZlcnNpb24HY3VsdHVyZQEDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbggGBwAAAAAKfwAAAAs=", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAwAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UIX29wdGlvbnMDAAMgU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZUluZm8BI1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zCQUAAAABBPr///8jU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMBAAAAB3ZhbHVlX18ACAEAAAAQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBwAAAAAAAAAAfwAAAAoL" : "AAEAAAD/////AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBgAAAApMb2FkRmFjdG9yB1ZlcnNpb24LS2V5Q29tcGFyZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMABQULCBtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXII7FE4PwAAAAAJAgAAAAMAAAAJAwAAAAkEAAAABAIAAAAbU3lzdGVtLkN1bHR1cmVBd2FyZUNvbXBhcmVyAgAAAAxfY29tcGFyZUluZm8LX2lnbm9yZUNhc2UDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEJBQAAAAEQAwAAAAAAAAAQBAAAAAAAAAAEBQAAACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwQAAAAGbV9uYW1lCXdpbjMyTENJRAdjdWx0dXJlDW1fU29ydFZlcnNpb24BAAADCAggU3lzdGVtLkdsb2JhbGl6YXRpb24uU29ydFZlcnNpb24GBgAAAAAAAAAAfwAAAAoL" } };
yield return new object[] { StringComparer.InvariantCultureIgnoreCase, new string[] { "AAEAAAD/////AQAAAAAAAAAEAQAAABtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXIDAAAADF9jb21wYXJlSW5mbwhfb3B0aW9ucwtfaWdub3JlQ2FzZQMDACBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbyNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwEJAgAAAAT9////I1N5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVPcHRpb25zAQAAAAd2YWx1ZV9fAAgBAAAAAQQCAAAAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvAwAAAAZtX25hbWUNbV9Tb3J0VmVyc2lvbgdjdWx0dXJlAQMAIFN5c3RlbS5HbG9iYWxpemF0aW9uLlNvcnRWZXJzaW9uCAYEAAAAAAp/AAAACw==", PlatformDetection.IsNetfx471OrNewer ? "AAEAAAD/////AQAAAAAAAAAEAQAAABtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXIDAAAADF9jb21wYXJlSW5mbwtfaWdub3JlQ2FzZQhfb3B0aW9ucwMAAyBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlSW5mbwEjU3lzdGVtLkdsb2JhbGl6YXRpb24uQ29tcGFyZU9wdGlvbnMJAgAAAAEE/f///yNTeXN0ZW0uR2xvYmFsaXphdGlvbi5Db21wYXJlT3B0aW9ucwEAAAAHdmFsdWVfXwAIAQAAAAQCAAAAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvBAAAAAZtX25hbWUJd2luMzJMQ0lEB2N1bHR1cmUNbV9Tb3J0VmVyc2lvbgEAAAMICCBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbgYEAAAAAAAAAAB/AAAACgs=" : "AAEAAAD/////AQAAAAAAAAAEAQAAABtTeXN0ZW0uQ3VsdHVyZUF3YXJlQ29tcGFyZXICAAAADF9jb21wYXJlSW5mbwtfaWdub3JlQ2FzZQMAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvAQkCAAAAAQQCAAAAIFN5c3RlbS5HbG9iYWxpemF0aW9uLkNvbXBhcmVJbmZvBAAAAAZtX25hbWUJd2luMzJMQ0lEB2N1bHR1cmUNbV9Tb3J0VmVyc2lvbgEAAAMICCBTeXN0ZW0uR2xvYmFsaXphdGlvbi5Tb3J0VmVyc2lvbgYDAAAAAAAAAAB/AAAACgs=" } };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indentation is off here

@Anipik Anipik merged commit e2fc82a into dotnet:master Feb 23, 2018
@karelz karelz added this to the 2.1.0 milestone Mar 10, 2018
@Anipik Anipik deleted the stringComparerOptions branch March 24, 2018 01:34
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants