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.