public void GetString()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual("String", va.GetString("ValidString", "DefaultString"));
            Assert.AreEqual("DefaultString", va.GetString("NonExistingString", "DefaultString"));
        }
        public void GetDateTime()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual(TESTDATETIME, va.GetDateTime("ValidDateTime", null, TESTDATETIME_DEFAULT));
            Assert.AreEqual(TESTDATETIME.ToUniversalTime(), va.GetDateTime("ValidDateTimeUtcRoundtripFormatted", "u", TESTDATETIME_DEFAULT));
            Assert.AreEqual(TESTDATETIME_DEFAULT, va.GetDateTime("InvalidDateTime", null, TESTDATETIME_DEFAULT, false));
            Assert.Throws <FormatException>(() => va.GetDateTime("InvalidDateTime", null, TESTDATETIME_DEFAULT, true));
        }
        public void GetBoolean()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual(true, va.GetBoolean("ValidBoolean", false));
            Assert.AreEqual(true, va.GetBoolean("InvalidBoolean", true, false));
            try
            {
                va.GetBoolean("InvalidBoolean", true, true);
                Assert.Fail();
            }catch {}
        }
        public void GetChar()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual('c', va.GetChar("ValidChar", 'a'));
            Assert.AreEqual('a', va.GetChar("InvalidChar", 'a', false));
            try
            {
                va.GetChar("InvalidChar", 'a', true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetGuid()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual(TESTGUID, va.GetGuid("ValidGuid", TESTGUID_DEFAULT));
            Assert.AreEqual(TESTGUID_DEFAULT, va.GetGuid("InvalidGuid", TESTGUID_DEFAULT, false));
            try
            {
                va.GetGuid("InvalidGuid", TESTGUID_DEFAULT, true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetDecimal()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual((decimal)1, va.GetDecimal("ValidDecimal", 2.0m));
            Assert.AreEqual((decimal)2, va.GetDecimal("InvalidDecimal", 2.0m, false));
            try
            {
                va.GetDecimal("InvalidDecimal", 2, true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetDouble()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual((double)1, va.GetDouble("ValidDouble", 2.0));
            Assert.AreEqual((double)2, va.GetDouble("InvalidDouble", 2.0, false));
            try
            {
                va.GetDouble("InvalidDouble", 2, true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetFloat()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual((float)1, va.GetFloat("ValidFloat", 2.0f));
            Assert.AreEqual((float)2, va.GetFloat("InvalidFloat", 2.0f, false));
            try
            {
                va.GetFloat("InvalidFloat", 2, true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetInt64()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual((long)1, va.GetInt64("ValidInt64", 2));
            Assert.AreEqual((long)2, va.GetInt64("InvalidInt64", 2, false));
            try
            {
                va.GetInt64("InvalidInt64", 2, true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetByte()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual((byte)1, va.GetByte("ValidByte", 2));
            Assert.AreEqual((byte)2, va.GetByte("InvalidByte", 2, false));
            try
            {
                va.GetByte("InvalidByte", 2, true);
                Assert.Fail();
            }
            catch { }
        }
        public void GetStringIgnoresEmptyString()
        {
            VariableAccessor va = new VariableAccessor(_testVariableSource);

            Assert.AreEqual("DefaultString", va.GetString("EmptyString", "DefaultString"));
        }
        public void AcceptsNullVariableSource()
        {
            VariableAccessor va = new VariableAccessor(null);

            Assert.AreEqual("default", va.GetString("somekey", "default"));
        }