public void GetPropertyCallDoesNotAffectAccessedOrGottenStatus()
        {
            var pd = new ParameterDatabase();

            // Nothing in the database yet
            Assert.AreEqual(pd.Count, 0);

            var key = "Hi there";
            var val = "Whatever";

            // Set single parameter
            var p1 = new Parameter(key);

            pd.SetParameter(p1, val);
            Assert.AreEqual(pd.Count, 1);

            // Neither Accessed nor Gotten
            Assert.IsFalse(pd.Accessed.ContainsKey(key));
            Assert.IsFalse(pd.Gotten.ContainsKey(key));

            var propValue = pd.GetProperty(key);

            // Neither Accessed nor Gotten
            Assert.IsFalse(pd.Accessed.ContainsKey(key));
            Assert.IsFalse(pd.Gotten.ContainsKey(key));
        }
        public void OneLayerAdHocParametersTest()
        {
            var pd = new ParameterDatabase();

            Assert.AreEqual(pd.Count, 0);

            // Add some miscellaneous parameters, some valid, some not
            pd.SetParameter(new Parameter("Hi there"), "Whatever");
            pd.SetParameter(new Parameter(new[] { "1", "2", "3" }), "    Whatever ");            // extra whitespace is trimmed
            pd.SetParameter(new Parameter(new[] { "a", "b", "c" }).Pop().Push("d"), "Whatever"); // This becomes a.b.d
            Assert.AreEqual(pd.Count, 3);

            foreach (var k in pd.Keys)
            {
                Assert.AreEqual(pd.GetProperty(k.ToString()), "Whatever");
                context.WriteLine("{0} = {1}", k, pd[k]);
            }

            context.WriteLine("");
            context.WriteLine("\n\n PRINTING ALL PARAMETERS \n\n");

            using (var memStream = new MemoryStream())
            {
                var temp_writer = new StreamWriter(memStream, Encoding.Default)
                {
                    AutoFlush = true
                };
                // let the database write to our stream
                pd.List(temp_writer, false); // No shadowed parameters here
                memStream.Position = 0;
                // now write those out for diagnostics
                context.WriteLine(new StreamReader(memStream).ReadToEnd());
            }
        }