Skip to content

Commit

Permalink
Refactored resource reading to use a StreamReader to read lines from …
Browse files Browse the repository at this point in the history
…resource data.
  • Loading branch information
roryprimrose committed May 13, 2020
1 parent c173f8f commit 563a432
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 64 deletions.
47 changes: 27 additions & 20 deletions ModelBuilder/Data/TestData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.IO;
using System.Reflection;

/// <summary>
/// The <see cref="TestData" />
Expand All @@ -18,18 +19,18 @@ public static class TestData
"This is done in the constructor for the better performance of splitting males an females in a single iteration.")]
static TestData()
{
Companies = ParseValues(ResourceFile.Companies);
Locations = ParseLocations(ResourceFile.Locations);
FemaleNames = ParseValues(ResourceFile.FemaleNames);
MaleNames = ParseValues(ResourceFile.MaleNames);
LastNames = ParseValues(ResourceFile.LastNames);
TimeZones = ParseValues(ResourceFile.TimeZones);
Domains = ParseValues(ResourceFile.Domains);
Companies = ReadResource("Companies");
Locations = ParseLocations("Locations");
FemaleNames = ReadResource("FemaleNames");
MaleNames = ReadResource("MaleNames");
LastNames = ReadResource("LastNames");
TimeZones = ReadResource("TimeZones");
Domains = ReadResource("Domains");
}

private static List<Location> ParseLocations(string locations)
private static List<Location> ParseLocations(string name)
{
var lines = ParseValues(locations);
var lines = ReadResource(name);
var parsedLines = new List<Location>(lines.Count);
var index = 0;

Expand All @@ -56,18 +57,24 @@ private static List<Location> ParseLocations(string locations)
return parsedLines;
}

private static List<string> ParseValues(string values)
private static IReadOnlyList<string> ReadResource(string name)
{
var items = values.Split(
new[]
{
// The file uses CRLF to split the data across lines
// We shouldn't use Environment.NewLine as this may be different across platforms
"\r\n"
},
StringSplitOptions.RemoveEmptyEntries);
var assembly = typeof(TestData).GetTypeInfo().Assembly;
var resourceName = "ModelBuilder.Resources." + name + ".txt";

using var stream = assembly.GetManifestResourceStream(resourceName);
using var reader = new StreamReader(stream);

var values = new List<string>();

while (reader.EndOfStream == false)
{
var line = reader.ReadLine();

values.Add(line);
}

return items.ToList();
return values;
}

/// <summary>
Expand Down
44 changes: 0 additions & 44 deletions ModelBuilder/ResourceFile.cs

This file was deleted.

0 comments on commit 563a432

Please sign in to comment.