Merge pull request #495 from nicolas-raoul/fix-for-issue2907-with-no-formatting-changes
[mono.git] / mcs / class / System / Test / System.Configuration / ApplicationSettingsBaseTest.cs
index 3d61ca7d0ede5b4076f95c83818bfb1c01aa94da..98d87d4ab9840017f1ff66ac8dd607330142258d 100644 (file)
@@ -5,7 +5,7 @@
 // Author:
 //     Chris Toshok  <toshok@ximian.com>
 //
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,7 +27,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#define SPEW
+//#define SPEW
 
 #if NET_2_0
 
@@ -145,6 +145,20 @@ namespace MonoTests.System.Configuration {
                }
        }
 
+       class TestSettings4 : ApplicationSettingsBase {
+
+               public TestSettings4 ()
+                       : base ("TestSettings4")
+               {
+               }
+
+               [ApplicationScopedSetting]
+               [DefaultSettingValue ("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<ArrayOfString xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <string>go</string>\r\n  <string>mono</string>\r\n  </ArrayOfString>")]
+               public StringCollection Values {
+                       get { return (StringCollection) this ["Values"]; }
+               }
+       }
+
        [TestFixture]
        public class ApplicationSettingsBaseTest
        {
@@ -269,9 +283,21 @@ namespace MonoTests.System.Configuration {
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestSettings2_Properties ()
                {
+                       // This test will fail when there are newer versions
+                       // of the test assemblies - so conditionalize it in
+                       // such cases.
+#if TARGET_JVM
+                       string expected = "MonoTests.System.Configuration.ProviderPoker, System.Test, Version=0.0.0.0";
+#elif NET_4_5
+                       string expected = "MonoTests.System.Configuration.ProviderPoker, System_test_net_4_5, Version=0.0.0.0";
+#elif NET_4_0
+                       string expected = "MonoTests.System.Configuration.ProviderPoker, System_test_net_4_0, Version=0.0.0.0";
+#else
+                       string expected = "MonoTests.System.Configuration.ProviderPoker, System_test_net_2_0, Version=0.0.0.0";
+#endif
+                       Assert.AreEqual (expected, new SettingsProviderAttribute (typeof (ProviderPoker)).ProviderTypeName.Substring (0, expected.Length), "#1");
                        TestSettings2 settings = new TestSettings2 ();
 
                        /* should throw ConfigurationException */
@@ -326,8 +352,125 @@ namespace MonoTests.System.Configuration {
                                get { return ((int)(this ["IntSetting"])); }
                        }
                }
-       }
 
+               [Test]
+               public void TestSettings4_StringCollection_DefaultSettingValue ()
+               {
+                       TestSettings4 settings = new TestSettings4 ();
+                       Assert.AreEqual (2, settings.Values.Count, "Count");
+                       Assert.AreEqual ("go", settings.Values[0], "0");
+                       Assert.AreEqual ("mono", settings.Values[1], "1");
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void Providers ()
+               {
+                       Assert.AreEqual (0, new TestSettings1 ().Providers.Count);
+               }
+
+                class Bug532180 : ApplicationSettingsBase {
+                        [UserScopedSetting]
+                        [DefaultSettingValue("10")]
+                        public int IntSetting {
+                                get { return (int)this["IntSetting"]; }
+                                set { this["IntSetting"] = value; }                               
+                        }
+                }
+
+                [Test] // bug #532180
+                public void DefaultSettingValueAsWithReload() 
+               {
+                        Bug532180 settings = new Bug532180();
+                        Assert.AreEqual (10, settings.IntSetting, "A1");
+                        settings.IntSetting = 1;
+                        Assert.AreEqual (1, settings.IntSetting, "A2");
+                        settings.Reload ();
+                        Assert.AreEqual (10, settings.IntSetting, "A3");
+                }                        
+               
+               class Bug8592ConfHolder : ApplicationSettingsBase {
+                       [UserScopedSetting]
+                       public string TestKey1OnHolder { 
+                               get { return (string) this ["TestKey1OnHolder"] ?? ""; }
+                               set { this ["TestKey1OnHolder"] = value; }
+                       }
+               }
+
+               [Test]
+               public void TestBug8592BasicOperations ()
+               {
+                       var holder = new Bug8592ConfHolder ();
+                       holder.Reset ();
+                       holder.Save ();
+                       Assert.AreEqual ("", holder.TestKey1OnHolder);
+                       holder.TestKey1OnHolder = "candy";
+                       Assert.AreEqual ("candy", holder.TestKey1OnHolder);
+                       holder.Reload ();
+                       Assert.AreEqual ("", holder.TestKey1OnHolder);
+                       holder.TestKey1OnHolder = "candy";
+                       Assert.AreEqual ("candy", holder.TestKey1OnHolder);
+                       holder.Save ();
+                       Assert.AreEqual ("candy", holder.TestKey1OnHolder);
+                       holder.Reload ();
+                       Assert.AreEqual ("candy", holder.TestKey1OnHolder);
+                       holder.Reset ();
+                       Assert.AreEqual ("", holder.TestKey1OnHolder);
+               }
+
+               class Bug8533ConfHolder1 : ApplicationSettingsBase {
+                       [UserScopedSetting]
+                       public string TestKey1OnHolder1 {
+                               get { return (string) this ["TestKey1OnHolder1"] ?? ""; }
+                               set { this ["TestKey1OnHolder1"] = value; }
+                       }
+
+                       [UserScopedSetting]
+                       public string TestKey1OnHolder2 {
+                               get { return (string) this ["TestKey1OnHolder2"] ?? ""; }
+                               set { this ["TestKey1OnHolder2"] = value; }
+                       }
+                       
+                       [UserScopedSetting]
+                       public string TestKey {
+                               get { return (string) this ["TestKey"] ?? ""; }
+                               set { this ["TestKey"] = value; }
+                       }
+               }
+
+               class Bug8533ConfHolder2 : ApplicationSettingsBase {
+                       [UserScopedSetting]
+                       public string TestKey1OnHolder2 {
+                               get { return (string) this ["TestKey1OnHolder2"] ?? ""; }
+                               set { this ["TestKey1OnHolder2"] = value; }
+                       }
+
+                       [UserScopedSetting]
+                       public string TestKey {
+                               get { return (string) this ["TestKey"] ?? ""; }
+                               set { this ["TestKey"] = value; }
+                       }
+               }
+
+               [Test]
+               public void TestBug8533ConfHandlerWronglyMixedUp ()
+               {
+                       var holder1 = new Bug8533ConfHolder1 ();
+                       var holder2 = new Bug8533ConfHolder2 ();
+                       holder1.TestKey1OnHolder1 = "candy";
+                       holder2.TestKey1OnHolder2 = "donut";
+                       holder1.TestKey = "eclair";
+                       holder1.Save ();
+                       holder2.Save ();
+                       holder1.Reload ();
+                       holder2.Reload();
+                       Assert.AreEqual ("", holder1.TestKey1OnHolder2);
+                       Assert.AreEqual ("candy", holder1.TestKey1OnHolder1);
+                       Assert.AreEqual ("donut", holder2.TestKey1OnHolder2);
+                       Assert.AreEqual ("eclair", holder1.TestKey);
+                       Assert.AreEqual ("", holder2.TestKey);
+               }
+       }
 }
 
 #endif