From 03ada146e526761ad3169969c3574bc7823af171 Mon Sep 17 00:00:00 2001 From: Markus Ewald Date: Mon, 21 Jul 2014 12:03:22 +0000 Subject: [PATCH] Simplified the parsing code; all code paths of the configuration file store are now covered by tests git-svn-id: file:///srv/devel/repo-conversion/nusu@307 d2e56fa2-650e-0410-a79f-9358c0239efd --- .../Settings/ConfigurationFileStore.Parsing.cs | 17 +++++++---------- Source/Settings/ConfigurationFileStore.Test.cs | 3 +++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Source/Settings/ConfigurationFileStore.Parsing.cs b/Source/Settings/ConfigurationFileStore.Parsing.cs index 491e3fa..ed8b6cc 100644 --- a/Source/Settings/ConfigurationFileStore.Parsing.cs +++ b/Source/Settings/ConfigurationFileStore.Parsing.cs @@ -239,18 +239,15 @@ namespace Nuclex.Support.Settings { if(value.Count >= 2) { int index = value.Offset; if(ParserHelper.SkipInteger(value.Text, ref index)) { - if(index < value.Offset + value.Count) { - if(value.Text[index] == '.') { - return typeof(float); - } + if(index >= value.Offset + value.Count) { + return typeof(int); + } + if(value.Text[index] == '.') { + return typeof(float); } - - return typeof(int); } - } else if(value.Count >= 1) { // If it's at least one character, it may be a number - int index = value.Offset; - ParserHelper.SkipNumericals(value.Text, ref index); - if(index > value.Offset) { + } else { // If it's just a single character, it may be a number + if(char.IsNumber(value.Text, value.Offset)) { return typeof(int); } } diff --git a/Source/Settings/ConfigurationFileStore.Test.cs b/Source/Settings/ConfigurationFileStore.Test.cs index e5333d5..b1ae6a5 100644 --- a/Source/Settings/ConfigurationFileStore.Test.cs +++ b/Source/Settings/ConfigurationFileStore.Test.cs @@ -356,10 +356,13 @@ namespace Nuclex.Support.Settings { /// [ Test, + TestCase("nothing=", typeof(string)), TestCase("text = world", typeof(string)), TestCase("short=9", typeof(int)), TestCase("integer = 123", typeof(int)), TestCase("integer = 123 ", typeof(int)), + TestCase("string=x", typeof(string)), + TestCase("string = 123s", typeof(string)), TestCase("float = 123.45", typeof(float)), TestCase("float = 123.45 ", typeof(float)), TestCase("boolean = true", typeof(bool)),