diff --git a/UnicodeCharacterInspector/CharacterInfoViewModel.cs b/UnicodeCharacterInspector/CharacterInfoViewModel.cs index 6b92310..973fd06 100644 --- a/UnicodeCharacterInspector/CharacterInfoViewModel.cs +++ b/UnicodeCharacterInspector/CharacterInfoViewModel.cs @@ -106,7 +106,7 @@ namespace UnicodeCharacterInspector public UnicodeNameAliasCollection NameAliases { - get { return character != null ? characterInfo.NameAliases : new UnicodeNameAliasCollection(); } + get { return character != null ? characterInfo.NameAliases : UnicodeNameAliasCollection.Empty; } } public string OldName @@ -176,12 +176,12 @@ namespace UnicodeCharacterInspector public UnicodeRadicalStrokeCountCollection RadicalStrokeCounts { - get { return character != null ? characterInfo.UnicodeRadicalStrokeCounts : new UnicodeRadicalStrokeCountCollection(); } + get { return character != null ? characterInfo.UnicodeRadicalStrokeCounts : UnicodeRadicalStrokeCountCollection.Empty; } } public UnicodeCrossReferenceCollection CrossReferences { - get { return character != null ? characterInfo.CrossRerefences : new UnicodeCrossReferenceCollection(); } + get { return character != null ? characterInfo.CrossRerefences : UnicodeCrossReferenceCollection.Empty; } } public string MandarinReading diff --git a/UnicodeInformation.Builder/Program.cs b/UnicodeInformation.Builder/Program.cs index 31e0359..392a2db 100644 --- a/UnicodeInformation.Builder/Program.cs +++ b/UnicodeInformation.Builder/Program.cs @@ -36,21 +36,19 @@ namespace System.Unicode.Builder "Unihan_IRGSources.txt", }; - private static HttpMessageHandler httpMessageHandler; + private static HttpClient httpClient; // The only purpose of this is for tests… - internal static HttpMessageHandler HttpMessageHandler + internal static void SetHttpMessageHandler(HttpMessageHandler handler) { - get { return httpMessageHandler ?? (httpMessageHandler = new HttpClientHandler()); } - set { httpMessageHandler = value != null ? value : new HttpClientHandler(); } - } + httpClient = new HttpClient(handler ?? new HttpClientHandler()); + } + + private static HttpClient HttpClient { get { return httpClient ?? (httpClient = new HttpClient()); } } private static byte[] DownloadDataArchive(string archiveName) { - using (var httpClient = new HttpClient(HttpMessageHandler)) - { - return httpClient.GetByteArrayAsync(HttpDataSource.UnicodeCharacterDataUri + archiveName).Result; - } + return HttpClient.GetByteArrayAsync(HttpDataSource.UnicodeCharacterDataUri + archiveName).Result; } internal static IDataSource GetDataSource(string archiveName, string directoryName, string[] requiredFiles, bool? shouldDownload, bool? shouldSaveArchive, bool? shouldExtract) diff --git a/UnicodeInformation.Builder/UnicodeInfoBuilder.cs b/UnicodeInformation.Builder/UnicodeInfoBuilder.cs index 6d4cf2b..595e2b7 100644 --- a/UnicodeInformation.Builder/UnicodeInfoBuilder.cs +++ b/UnicodeInformation.Builder/UnicodeInfoBuilder.cs @@ -120,7 +120,7 @@ namespace System.Unicode.Builder if (insertionPoint < 0) throw new InvalidOperationException("The specified range overlaps with pre-existing ranges."); - if (insertionPoint >= ucdEntries.Length) + if (ucdEntryCount == ucdEntries.Length) { Array.Resize(ref ucdEntries, ucdEntries.Length << 1); } @@ -140,7 +140,7 @@ namespace System.Unicode.Builder if (insertionPoint < 0) throw new InvalidOperationException("The specified range overlaps with pre-existing ranges."); - if (insertionPoint >= unihanEntries.Length) + if (unihanEntryCount == unihanEntries.Length) { Array.Resize(ref unihanEntries, unihanEntries.Length << 1); } diff --git a/UnicodeInformation.Tests/UnicodeInfoBuilderTests.cs b/UnicodeInformation.Tests/UnicodeInfoBuilderTests.cs index 0f904f7..f9bf8c8 100644 --- a/UnicodeInformation.Tests/UnicodeInfoBuilderTests.cs +++ b/UnicodeInformation.Tests/UnicodeInfoBuilderTests.cs @@ -70,7 +70,7 @@ namespace System.Unicode.Tests var ucdTask = RegisterAndDownloadFile(handler, httpCacheDirectory, HttpDataSource.UnicodeCharacterDataUri, Program.UcdArchiveName); var unihanTask = RegisterAndDownloadFile(handler, httpCacheDirectory, HttpDataSource.UnicodeCharacterDataUri, Program.UnihanArchiveName); - Program.HttpMessageHandler = handler; + Program.SetHttpMessageHandler(handler); if (Directory.Exists(Program.UcdDirectoryName)) Directory.Delete(Program.UcdDirectoryName, true); if (File.Exists(Program.UcdArchiveName)) File.Delete(Program.UcdArchiveName); diff --git a/UnicodeInformation/UnicodeCrossReferenceCollection.cs b/UnicodeInformation/UnicodeCrossReferenceCollection.cs index 7567d59..f14c3ce 100644 --- a/UnicodeInformation/UnicodeCrossReferenceCollection.cs +++ b/UnicodeInformation/UnicodeCrossReferenceCollection.cs @@ -41,10 +41,11 @@ namespace System.Unicode void IEnumerator.Reset() { this.index = -1; } } + /// Gets an empty struct. + public static readonly UnicodeCrossReferenceCollection Empty = new UnicodeCrossReferenceCollection(EmptyArray); + private readonly int[] items; - /// Initializes a new instance of the struct. - public UnicodeCrossReferenceCollection() { items = EmptyArray; } internal UnicodeCrossReferenceCollection(int[] items) { this.items = items ?? EmptyArray; } /// Gets the cross-referenced code point at the specified index. diff --git a/UnicodeInformation/UnicodeNameAliasCollection.cs b/UnicodeInformation/UnicodeNameAliasCollection.cs index 9dde6f4..fa53ebc 100644 --- a/UnicodeInformation/UnicodeNameAliasCollection.cs +++ b/UnicodeInformation/UnicodeNameAliasCollection.cs @@ -39,10 +39,11 @@ namespace System.Unicode void IEnumerator.Reset() { this.index = -1; } } + /// Gets an empty struct. + public static readonly UnicodeNameAliasCollection Empty = new UnicodeNameAliasCollection(UnicodeNameAlias.EmptyArray); + private readonly UnicodeNameAlias[] items; - /// Initializes a new instance of the struct. - public UnicodeNameAliasCollection() { items = UnicodeNameAlias.EmptyArray; } internal UnicodeNameAliasCollection(UnicodeNameAlias[] items) { this.items = items ?? UnicodeNameAlias.EmptyArray; } /// Gets the at the specified index. diff --git a/UnicodeInformation/UnicodeRadicalStrokeCountCollection.cs b/UnicodeInformation/UnicodeRadicalStrokeCountCollection.cs index b81fd4d..44b2617 100644 --- a/UnicodeInformation/UnicodeRadicalStrokeCountCollection.cs +++ b/UnicodeInformation/UnicodeRadicalStrokeCountCollection.cs @@ -39,10 +39,11 @@ namespace System.Unicode void IEnumerator.Reset() { this.index = -1; } } + /// Gets an empty struct. + public static readonly UnicodeRadicalStrokeCountCollection Empty = new UnicodeRadicalStrokeCountCollection(null); + private readonly UnicodeRadicalStrokeCount[] items; - /// Initializes a new instance of the struct. - public UnicodeRadicalStrokeCountCollection() { items = UnicodeRadicalStrokeCount.EmptyArray; } internal UnicodeRadicalStrokeCountCollection(UnicodeRadicalStrokeCount[] items) { this.items = items ?? UnicodeRadicalStrokeCount.EmptyArray; } /// Gets the at the specified index.