From 42bc9ed385541c8cb44d8d4c7c435ed493008b42 Mon Sep 17 00:00:00 2001 From: Aaron Yarborough Date: Wed, 9 Sep 2020 15:49:07 +0200 Subject: [PATCH] Tests, refactoring --- GraalGmapGenerator/GmapContentGenerator.cs | 10 +-- .../GmapPropertyValidators.cs | 4 +- GraalGmapGenerator/GmapWriter.cs | 7 +- GraalGmapGenerator/Helpers.cs | 2 +- GraalGmapGenerator/Program.cs | 7 +- .../GmapPropertyValidatorsTests.cs | 78 +++++++++++++++++++ 6 files changed, 89 insertions(+), 19 deletions(-) rename GraalGmapGenerator/{Validators => }/GmapPropertyValidators.cs (89%) create mode 100644 GraalGmapGeneratorTests/GmapPropertyValidatorsTests.cs diff --git a/GraalGmapGenerator/GmapContentGenerator.cs b/GraalGmapGenerator/GmapContentGenerator.cs index 983c687..ac3e9bd 100644 --- a/GraalGmapGenerator/GmapContentGenerator.cs +++ b/GraalGmapGenerator/GmapContentGenerator.cs @@ -34,7 +34,7 @@ namespace GraalGmapGenerator stringBuilder.AppendLine("LEVELNAMES"); - var levelNames = GetLevelNames(gmap).ToList(); + List levelNames = GetLevelNames(gmap).ToList(); for (var i = 0; i < levelNames.Count; i++) { // Start a new line once the current line has hit the width of the gmap @@ -59,14 +59,10 @@ namespace GraalGmapGenerator public IEnumerable GetLevelNames(Gmap gmap) { - var levelNames = new List(); - - for (var i = 0; i < (gmap.Width * gmap.Height); i++) + for (int i = 0; i < (gmap.Width * gmap.Height); i++) { - levelNames.Add(GetLevelName(i, gmap.Name, _levelType)); + yield return GetLevelName(i, gmap.Name, _levelType); } - - return levelNames; } private string GetLevelName(int index, string name, LevelType levelType) diff --git a/GraalGmapGenerator/Validators/GmapPropertyValidators.cs b/GraalGmapGenerator/GmapPropertyValidators.cs similarity index 89% rename from GraalGmapGenerator/Validators/GmapPropertyValidators.cs rename to GraalGmapGenerator/GmapPropertyValidators.cs index 611c300..40faa50 100644 --- a/GraalGmapGenerator/Validators/GmapPropertyValidators.cs +++ b/GraalGmapGenerator/GmapPropertyValidators.cs @@ -2,13 +2,13 @@ using System; using System.IO; using System.Linq; -namespace GraalGmapGenerator.Validators +namespace GraalGmapGenerator { public static class GmapPropertyValidators { public static bool IsValidDimension(string input) { - return int.TryParse(input, out int width) && width > 0; + return int.TryParse(input, out int dimension) && dimension > 0; } public static bool IsValidYesNoInput(string input) diff --git a/GraalGmapGenerator/GmapWriter.cs b/GraalGmapGenerator/GmapWriter.cs index 8d718ec..8ab6c28 100644 --- a/GraalGmapGenerator/GmapWriter.cs +++ b/GraalGmapGenerator/GmapWriter.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.IO; using GraalGmapGenerator.Enums; @@ -16,15 +17,13 @@ namespace GraalGmapGenerator var gmapContentGen = new GmapContentGenerator(LevelType.Nw); - // Create a new level file for each level - var levelNames = gmapContentGen.GetLevelNames(gmap); + IEnumerable levelNames = gmapContentGen.GetLevelNames(gmap); foreach (string levelName in levelNames) { File.Copy(TemplateFile, $"{destinationPath}/{levelName}"); } - // Create the gmap file - var gmapContent = gmapContentGen.Generate(gmap); + string gmapContent = gmapContentGen.Generate(gmap); File.AppendAllText($"{destinationPath}/{gmap.Name}.gmap", gmapContent); } } diff --git a/GraalGmapGenerator/Helpers.cs b/GraalGmapGenerator/Helpers.cs index 086a45f..e39d9d5 100644 --- a/GraalGmapGenerator/Helpers.cs +++ b/GraalGmapGenerator/Helpers.cs @@ -6,7 +6,7 @@ namespace GraalGmapGenerator { public static bool YesNoToBool(string input) { - var inputLowered = input.ToLower(); + string inputLowered = input.ToLower(); if (input == "y" || input == "yes") return true; if (input == "n" || input == "no") diff --git a/GraalGmapGenerator/Program.cs b/GraalGmapGenerator/Program.cs index d4f0ce5..8215ff3 100644 --- a/GraalGmapGenerator/Program.cs +++ b/GraalGmapGenerator/Program.cs @@ -1,10 +1,8 @@ using System; -using System.IO; -using GraalGmapGenerator.Validators; namespace GraalGmapGenerator { - class Programfg + class Program { static void Main(string[] args) { @@ -15,7 +13,7 @@ namespace GraalGmapGenerator ); Console.WriteLine(); Console.WriteLine( - "If you run into any problems with the tool, drop me an email at me@aaronjy.me and I " + + "If you run into any problems, drop me an email at me@aaronjy.me and I " + "\nwill endeavour to respond as soon as possible. " + "\nThanks for using my software! - Aaron Yarborough" ); @@ -120,7 +118,6 @@ namespace GraalGmapGenerator if (saveDirectory == "") { - saveDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "gmaps", gmapName); } Console.WriteLine("Generating gmap..."); diff --git a/GraalGmapGeneratorTests/GmapPropertyValidatorsTests.cs b/GraalGmapGeneratorTests/GmapPropertyValidatorsTests.cs new file mode 100644 index 0000000..7926785 --- /dev/null +++ b/GraalGmapGeneratorTests/GmapPropertyValidatorsTests.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GraalGmapGenerator; +using NUnit.Framework; + +namespace GraalGmapGeneratorTests +{ + [TestFixture] + public class GmapPropertyValidatorsTests + { + internal static IEnumerable GetInvalidPaths() + { + const string dummyPath = "dir/"; + char[] invalidChars = System.IO.Path.GetInvalidPathChars(); + foreach (char invalidChar in invalidChars) + { + yield return dummyPath + invalidChar; + } + } + + [TestCase("-1")] + [TestCase("0")] + [TestCase("abc")] + [TestCase("£$%^&*")] + [TestCase("123a")] + public void IsValidDimension_IfInvalidDimension_ReturnsFalse(string invalidDimension) + { + Assert.False(GmapPropertyValidators.IsValidDimension(invalidDimension)); + } + + [TestCase("1")] + [TestCase("12345")] + [TestCase("10")] + [TestCase("2147483647")] + public void IsValidDimension_IfValidDimension_ReturnsTrue(string validDimension) + { + Assert.True(GmapPropertyValidators.IsValidDimension(validDimension)); + } + + [TestCase("")] + [TestCase("oopsie")] + [TestCase("ye")] + [TestCase("yess")] + [TestCase("noo")] + [TestCase("12345")] + public void IsValidYesNoInput_IfIsInvalidValidInput_ReturnsFalse(string invalidInput) + { + Assert.False(GmapPropertyValidators.IsValidYesNoInput(invalidInput)); + } + + [TestCase("y")] + [TestCase("yes")] + [TestCase("n")] + [TestCase("no")] + public void IsValidYesNoInput_IfIsValidInput_ReturnsTrue(string validInput) + { + Assert.True(GmapPropertyValidators.IsValidYesNoInput(validInput)); + } + + [TestCaseSource(nameof(GetInvalidPaths))] + public void IsValidDirectory_IfIsInvalidDirectory_ReturnsFalse(string invalidPath) + { + Assert.False(GmapPropertyValidators.IsValidDirectory(invalidPath)); + } + + [TestCase("my/path")] + [TestCase("my/path/")] + [TestCase("directory")] + [TestCase("C:/users/Aaron/gmaps")] + public void IsValidDirectory_IfIsValidDirectory_ReturnsTrue(string validPath) + { + Assert.True(GmapPropertyValidators.IsValidDirectory(validPath)); + } + + + } +} \ No newline at end of file