public void HiddenItems()
        {
            DefaultContext parent = new DefaultContext();
            parent.Put( "test", "test" );
            parent.MakeReadOnly();
            DefaultContext child = new DefaultContext( parent );
            child.Put( "check", "check" );
            IContext context = (IContext) child;

            Assertion.Assert ( "check".Equals( context["check"] ) );
            Assertion.Assert ( "test".Equals( context["test"] ) );

            child.Hide( "test" );
            try
            {
                object o = context["test"];
                Assertion.Fail( "The item \"test\" was hidden in the child context, but could still be retrieved via Get()." );
            }
            catch (ContextException)
            {
                // Supposed to be thrown.
            }

            child.MakeReadOnly();

            try
            {
                child.Hide( "test" );
                Assertion.Fail( "Hide() did not throw an exception, even though the context is supposed to be read-only." );
            }
            catch (ContextException)
            {
                // Supposed to be thrown.
            }
        }
        public void CascadingContext()
        {
            DefaultContext parent = new DefaultContext();
            parent.Put( "test", "ok test" );
            parent.MakeReadOnly();
            DefaultContext child = new DefaultContext( parent );
            child.Put( "check", new ResolvableString("This is an ${test}.") );
            child.MakeReadOnly();
            IContext context = (IContext) child;

            Assertion.Assert ( "ok test".Equals( context["test"] ) );
            Assertion.Assert ( ! "This is an ${test}.".Equals( context["check"] ) );
            Assertion.Assert ( "This is an ok test.".Equals( context["check"] ) );
        }
        protected IContext CreateDefaultContext(AvalonEntryAttribute[] entries)
        {
            DefaultContext context = new DefaultContext();

            /*
            foreach(AvalonEntryAttribute entry in entries)
            {

            }*/

            context.MakeReadOnly();

            return context;
        }
        public void AddContext()
        {
            DefaultContext context = new DefaultContext();
            context.Put( "key1", "value1" );
            Assertion.Assert( "value1".Equals( context["key1"] ) );
            context.Put( "key1", String.Empty );
            Assertion.Assert( String.Empty.Equals( context["key1"] ) );

            context.Put( "key1", "value1" );
            context.MakeReadOnly();

            try
            {
                context.Put( "key1", String.Empty );
                Assertion.Fail( "You are not allowed to change a value after it has been made read only" );
            }
            catch ( ContextException )
            {
                Assertion.Assert( "Value is null", "value1".Equals( context["key1"] ) );
            }
        }
 protected DefaultComponentModel()
 {
     Context = new DefaultContext();
 }
        public void ResolveableObject()
        {
            DefaultContext context = new DefaultContext();
            context.Put( "key1", new ResolvableString() );
            context.Put( "test", "Cool Test" );
            context.MakeReadOnly();

            IContext newContext = (IContext) context;
            Assertion.Assert( "Cool Test".Equals( newContext["test"] ) );
            Assertion.Assert( ! "This is a ${test}.".Equals( newContext["key1"] ) );
            Assertion.Assert( "This is a Cool Test.".Equals( newContext["key1"] ) );
        }