Added test that covers bug 18482.
Fixed bug 18482. Reseting all private key values to null is required because a new import may not overwrite existing values.
Test that DeflateStream.Read does read an empty stream. Covers #19313.
Removed DeflateStream.UnmanagedRead Read loop. Fixes #19313.
If the base_stream was a NetworkStream UnmanagedRead loop would call base_stream.Read a second time and block until one byte was available to return. Without the loop UnmanagedRead will only read the base_stream once.
Added UriScheme name.
Added UriSchemeTelnet, UriSchemeLdap, UriSchemeUuid.
Added property IriParsing and field s_IriParsing.
The property IriParsing will be used to change between .NET 4.5 and .NET 4.0 default percentage encoding/decoding behavior.
A private field named s_IriParsing same as .NET was also added so it can be changed the same way through reflection in .NET and Mono.
Changed method HexUnescapeMultiByte to internal.
Created file UriHelper.cs.
UriHelper has the method Format that escapes or unescapes a string's characters depending on the Scheme, UriKind, UriComponent and UriFormat.
Changed UriElements query and fragment default values to null.
Default values are now null so UriParser.GetComponents can return an empty query or fragment..
Replaced UriParser.Format with UriHelper.Format.
UriParser.Format was deleted and UriParser.GetComponents is now using UriHelper.Format.
Changed ParsePath to only break on '?' if scheme supports queries.
Changed Uri.SupportsQuery to use UriHelper.SupportsQuery.
Improved UriHelper.Format '%' handling.
When a % was found HexUnescapeMultiByte output was always considered escaped.
Now a % that is not a percentage encoded character will be processed has a not escaped character.
Added UriPermutationsTest.
Created a new set of tests that create&store or that load&assert uri permutations.
Uris are created with permutations of schemes, components, characters then methods and properties output is asserted against expected values obtained on .NET.
Changed UriPermutationsTest createMode to false.
Added methods FormatAbsolute, FormatRelative, and enum FormatFlags.
Changed Format methods to receive FormatFlags.
Added FormatFlag.HasCharactersToNormalize, which improves character decoding.
The flag is set when Iriparsing is true and the Uri contains an encoded alpha numeric, non ASCII, '-', '.' , '_' and '~'.
When the flag is set some other encoded charcaters need also to be decoded.
Improved unescape testing.
With IriParsing the presencee of encoded alpha numeric, non ASCII, '-', '.', '_' and '~' characters trigger the decoding of some other characters.
Tested permutations now include tests with and tests without those characters.
Improved reduce tests.
Reduce tests now test sequences of 1 to 3 encoded or decoded dots inside paths with or without trailing character and encoded fowardslash and backslash.
UriHelper.Format now reduces paths.
Updated Fragment, Query, AbsoluteUri.
Fragment and Query are now processed with UriHelper.FormatAbsolute.
AbsoluteUri is using obtained from GetComponents.