public void TypeConverterが取得できない型の場合エラーを出す()
        {
            var settings = new FishSettingsBase();
            Assert.Throws<ArgumentException>(() =>
            {
                settings.CreateNewItem("a", new AAA());
            });

            settings.CreateNewItem("b", "aaaa");
            Assert.AreEqual("aaaa", settings["b"]);
        }
        public void Test1()
        {
            using (var tempFile = new TempFile())
            {
                {
                    var settings = new FishSettingsBase();

                    Assert.Throws<ArgumentException>(() =>
                    {
                        settings.SetValue("a", 10);
                    });
                    Assert.Throws<ArgumentException>(() =>
                    {
                        settings.GetValue("a");
                    });
                    Assert.Throws<ArgumentException>(() =>
                    {
                        settings.CreateNewItem("", 9);
                    });
                    Assert.Throws<ArgumentException>(() =>
                    {
                        settings.CreateNewItem("  ", 9);
                    });
                    Assert.Throws<ArgumentException>(() =>
                    {
                        settings.CreateNewItem(null, 9);
                    });

                    settings.CreateNewItem("a", 10);
                    Assert.AreEqual(10, settings.GetValue("a"));

                    // 重複して項目が追加されたらスルー、デフォルト値は更新
                    settings.CreateNewItem("a", 100);
                    Assert.AreEqual(100, settings.GetDefaultValue("a"));
                    settings.CreateNewItem("a", 10);

                    settings.SetValue("a", 11);
                    Assert.AreEqual(11, settings.GetValue("a"));

                    Assert.AreEqual(11, settings["a"]);
                    settings["a"] = 12;
                    Assert.AreEqual(12, settings["a"]);

                    Assert.AreEqual(10, settings.GetDefaultValue("a"));

                    Assert.Throws<ArgumentException>(() =>
                    {
                        settings.SetValue("a", "v0");
                    });

                    settings.CreateNewItem("b", "v1");
                    Assert.AreEqual("v1", settings.GetValue("b"));
                    settings.SetValue("b", "v2");
                    Assert.AreEqual("v2", settings.GetValue("b"));

                    Assert.AreEqual("", settings.Name);
                    Assert.AreEqual("1", settings.Version);

                    settings.Name = "name0";
                    settings.Version = "1.1";

                    settings.Save(tempFile.Name);
                }
                {
                    var settings = FishSettingsBase.Load(tempFile.Name, "name0");

                    Assert.AreEqual(12, settings["a"]);
                    Assert.AreEqual(10, settings.GetDefaultValue("a"));

                    Assert.AreEqual("v2", settings["b"]);
                    Assert.AreEqual("v1", settings.GetDefaultValue("b"));
                }
            }
        }