Commit 7abcc74

mo <email@solidware.ca>
2011-03-20 03:24:19
add Settings class to adapt System.Configuration.AppSettings.
1 parent 6e7344c
Changed files (4)
product/testing/unit/utility/SettingsSpecs.cs
@@ -0,0 +1,32 @@
+using System.Collections.Specialized;
+using gorilla.utility;
+using Machine.Specifications;
+
+namespace specs.unit.utility
+{
+    public class SettingsSpecs
+    {
+        public abstract class concern
+        {
+            Establish context = () =>
+            {
+                settings = new NameValueCollection();
+                sut = new Settings(settings);
+            };
+
+            static protected Settings sut;
+            static protected NameValueCollection settings;
+        }
+
+        public class when_pulling_out_a_setting : concern
+        {
+            It should_return_the_correct_value = () => result.should_be_equal_to("blah");
+
+            Establish context = () => { settings["the.key"] = "blah"; };
+
+            Because of = () => { result = sut.named<string>("the.key"); };
+
+            static string result;
+        }
+    }
+}
\ No newline at end of file
product/testing/specs.csproj
@@ -82,6 +82,7 @@
     <Compile Include="unit\infrastructure\logging\LogSpecs.cs" />
     <Compile Include="unit\infrastructure\proxies\ProxyFactorySpecs.cs" />
     <Compile Include="unit\infrastructure\registries\DefaultRegistrySpecs.cs" />
+    <Compile Include="unit\utility\SettingsSpecs.cs" />
     <Compile Include="unit\utility\ConfigurationExtensionsSpecs.cs" />
     <Compile Include="unit\utility\DateSpecs.cs" />
     <Compile Include="unit\utility\EnumerableExtensionsSpecs.cs" />
product/utility/Settings.cs
@@ -0,0 +1,19 @@
+using System.Collections.Specialized;
+
+namespace gorilla.utility
+{
+    public class Settings
+    {
+        NameValueCollection settings;
+
+        public Settings(NameValueCollection settings)
+        {
+            this.settings = settings;
+        }
+
+        public T named<T>(string key)
+        {
+            return settings[key].downcast_to<T>();
+        }
+    }
+}
\ No newline at end of file
product/utility/utility.csproj
@@ -57,14 +57,6 @@
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Clock.cs" />
@@ -100,6 +92,7 @@
     <Compile Include="Parser.cs" />
     <Compile Include="Query.cs" />
     <Compile Include="Registry.cs" />
+    <Compile Include="Settings.cs" />
     <Compile Include="Specification.cs" />
     <Compile Include="State.cs" />
     <Compile Include="SubjectOf.cs" />