public void TestError()
        {
            var cfg = YamlSimpleConfig.FromString(YamlString);

            Assert.Throws <ConfigOptionNotExistsException>(
                () => cfg.GetOption <int>("root.not_existing"));

            Assert.Throws <ConfigInvalidPathException>(
                () => cfg.GetOption <int>("root.num.a"));

            Assert.Throws <InvalidCastException>(
                () => cfg.GetOption <int>("root.txt"));

            Assert.Throws <InvalidOperationException>(
                () => cfg.GetOptionAsPath("root.path_abs"));
        }
        public void TestLoadString()
        {
            var cfg = (ISimpleConfig)YamlSimpleConfig.FromString(YamlString);

            var num                = cfg.GetOption <int>("root.num");
            var numS               = cfg.GetOption <string>("root.num");
            var txt                = cfg.GetOption <string>("root.txt");
            var arr                = cfg.GetOption <int[]>("root.arr");
            var obj                = cfg.GetOption <Dictionary <string, int> >("root.obj");
            var emptyString        = cfg.GetOption <string>("root.empty");
            var notExistingNull    = cfg.GetOption <string>("root.not_existing", null);
            var notExistingDefault = cfg.GetOption <string>("root.not_existing", "def");

            Assert.Equal(2, num);
            Assert.Equal("2", numS);
            Assert.Equal("A", txt);
            Assert.Equal(new[] { 1, 2 }, arr);
            Assert.Equal(1, obj["a"]);
            Assert.Equal(2, obj["b"]);
            Assert.Equal("", emptyString);
            Assert.Null(notExistingNull);
            Assert.Equal("def", notExistingDefault);
        }