Inheritance: System.Windows.Controls.Control
コード例 #1
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void ArrangeAppliesTemplate()
        {
            ConcreteControl c = (ConcreteControl)XamlReader.Load(@"
<x:ConcreteControl	xmlns=""http://schemas.microsoft.com/client/2007""
					xmlns:x=""clr-namespace:MoonTest.System.Windows.Controls;assembly=moon-unit"">
	<x:ConcreteControl.Template>
		<ControlTemplate>
			<Grid />
		</ControlTemplate>
	</x:ConcreteControl.Template>
</x:ConcreteControl>");

            c.CallBaseArrangeOverride = false;
            c.CallBaseMeasureOverride = false;

            Assert.IsFalse(c.TemplateAppled, "#1");
            c.Methods.Clear();
            c.Arrange(new Rect(0, 0, 1000, 1000));
            Assert.IsTrue(c.TemplateAppled, "#2");

            Assert.AreEqual(3, c.Methods.Count, "#3");
            Assert.AreEqual(0, c.Methods.IndexOf("Template"), "No template");
            Assert.AreEqual(1, c.Methods.IndexOf("Measure"), "No measure");
            Assert.AreEqual(2, c.Methods.IndexOf("Arrange"), "No arrange");
        }
コード例 #2
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void OnNull()
        {
            ConcreteControl c = new ConcreteControl();

            Assert.Throws <ArgumentNullException> (delegate {
                c.OnGotFocus_(null);
            }, "OnGotFocus");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnLostFocus_(null);
            }, "LostFocus");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnKeyDown_(null);
            }, "OnKeyDown");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnKeyUp_(null);
            }, "OnKeyU");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnMouseEnter_(null);
            }, "OnMouseEnter");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnMouseLeave_(null);
            }, "OnMouseLeave");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnMouseMove_(null);
            }, "OnMouseMove");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnMouseLeftButtonDown_(null);
            }, "OnMouseLeftButtonDown");
            Assert.Throws <ArgumentNullException> (delegate {
                c.OnMouseLeftButtonUp_(null);
            }, "OnMouseLeftButtonUp");
        }
コード例 #3
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void DefaultStyleKeyTest_More()
        {
            ConcreteControl c = new ConcreteControl();

            Assert.IsNull(c.DefaultStyleKey_, "null");

            // and some working tests
            c.DefaultStyleKey_ = typeof(ConcreteControl);
            Assert.AreEqual(typeof(ConcreteControl), c.DefaultStyleKey_, "DefaultStyleKey");

            MoreConcreteControl mc = new MoreConcreteControl();

            mc.DefaultStyleKey_ = typeof(ConcreteControl);
            Assert.AreEqual(typeof(ConcreteControl), mc.DefaultStyleKey_, "DefaultStyleKey-Base");

            c = new ConcreteControl();
            c.DefaultStyleKey_ = typeof(MoreConcreteControl);
            Assert.AreEqual(typeof(MoreConcreteControl), c.DefaultStyleKey_, "DefaultStyleKey-Inherited");

            mc = new MoreConcreteControl();
            mc.DefaultStyleKey_ = typeof(SiblingControl);
            Assert.AreEqual(typeof(SiblingControl), mc.DefaultStyleKey_, "DefaultStyleKey-Sibling");

            mc = new MoreConcreteControl();
            Assert.Throws <ArgumentException> (delegate {
                mc.DefaultStyleKey_ = typeof(Control);
            }, "Control");
        }
コード例 #4
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void DefaultMethods()
        {
            ConcreteControl c = new ConcreteControl();

            CheckDefaultMethods(c);
            // Focus returns false and does not trigger [Get|Lost]Focus
            Assert.IsFalse(c.GotFocusCalled, "GotFocusCalled");
            Assert.IsFalse(c.LostFocusCalled, "LostFocusCalled");
        }
コード例 #5
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void GetTemplateChildTest()
        {
            ConcreteControl c = new ConcreteControl();

            Assert.Throws <ArgumentException> (delegate {
                c.GetTemplateChild_(null);
            }, "null");
            Assert.IsNull(c.GetTemplateChild_(String.Empty), "Empty");
        }
コード例 #6
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void ApplyTemplate()
        {
            ConcreteControl poker = new ConcreteControl();

            Assert.IsNull(poker.Template, "#1");
            Assert.IsNull(poker.Style);
            Assert.IsFalse(poker.ApplyTemplate(), "#2");
            Assert.IsNull(poker.Template, "#3");
            Assert.IsNull(poker.Style, "#4");
        }
コード例 #7
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void MeasureAppliesTemplate()
        {
            ConcreteControl c = new ConcreteControl {
                CallBaseArrangeOverride = false, CallBaseMeasureOverride = false
            };

            Assert.IsFalse(c.TemplateAppled, "#1");
            c.Measure(new Size(100, 100));
            Assert.IsFalse(c.TemplateAppled, "#2");
            c.ApplyTemplate();
            Assert.IsFalse(c.TemplateAppled, "#3");
        }
コード例 #8
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void DefaultStyleKeyTest_Null()
        {
            ConcreteControl c = new ConcreteControl();

            Assert.IsNull(c.DefaultStyleKey_, "null");

            // issue here is that we can't assign the current (null) value without an exception
            // but the PropertyChange logic is "smart" enough not to allow this...
            Assert.Throws <ArgumentException> (delegate {
                c.DefaultStyleKey_ = null;
            }, "null");

            // ... and guess what it's not part of the PropertyChange validation!
            c.SetValue(ConcreteControl.DefaultStyleKeyProperty_, null);
        }
コード例 #9
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void Events()
        {
            bool            changed = false;
            ConcreteControl c       = new ConcreteControl();

            c.IsEnabledChanged += delegate(object sender, DependencyPropertyChangedEventArgs e) {
                Assert.AreSame(c, sender, "sender");
                Assert.AreEqual(Control.IsEnabledProperty, e.Property, "IsEnabledProperty");
                Assert.IsFalse((bool)e.NewValue, "NewValue");
                Assert.IsTrue((bool)e.OldValue, "OldValue");
                changed = true;
            };
            c.IsEnabled = false;
            Assert.IsFalse(c.IsEnabled, "IsEnabled");
            Assert.IsFalse(changed, "Should be async");
        }
コード例 #10
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void InvalidValues()
        {
            ConcreteControl c = new ConcreteControl();

            Assert.Throws <ArgumentException>(() => {
                c.FontSize = -1;
            }, "#1");
            Assert.Throws <ArgumentException>(() => {
                c.FontSize = 0;
            }, "#2");
            c.FontSize = 1000000;

            c.Foreground = null;
            Assert.Throws <ArgumentException>(() => {
                c.FontFamily = null;
            }, "#3");
        }
コード例 #11
0
ファイル: ControlTest.cs プロジェクト: ynkbt/moon
        public void MeasureAppliesTemplate3()
        {
            ConcreteControl c = (ConcreteControl)XamlReader.Load(@"
<x:ConcreteControl	xmlns=""http://schemas.microsoft.com/client/2007""
					xmlns:x=""clr-namespace:MoonTest.System.Windows.Controls;assembly=moon-unit"">
	<x:ConcreteControl.Template>
		<ControlTemplate>
			<Grid />
		</ControlTemplate>
	</x:ConcreteControl.Template>
</x:ConcreteControl>");

            c.CallBaseArrangeOverride = false;
            c.CallBaseMeasureOverride = false;

            Assert.IsFalse(c.TemplateAppled, "#1");
            c.Measure(new Size(100, 100));
            Assert.IsTrue(c.TemplateAppled, "#3");
        }
コード例 #12
0
        public void MultipleTemplatesInsideTemplates()
        {
            var template = (ControlTemplate)XamlReader.Load(@"
<ControlTemplate x:Name=""OuterTemplate""
  xmlns='http://schemas.microsoft.com/client/2007'
  xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
    <ContentControl x:Name=""InnerControl"">
        <ContentControl.Resources>
            <DataTemplate x:Name=""dataTemplate"">
                <Rectangle/>
            </DataTemplate>
            <ControlTemplate x:Name=""controlTemplate"">
                <ContentControl ContentTemplate=""{StaticResource dataTemplate}""/>
            </ControlTemplate>
        </ContentControl.Resources>
        <ContentControl.Template>
            <StaticResource ResourceKey=""controlTemplate""/>
        </ContentControl.Template>
    </ContentControl>
</ControlTemplate>
");
            var control  = new ConcreteControl();

            TestPanel.Children.Add(control);
            control.Template = template;
            control.UpdateLayout();

            Assert.VisualChildren(control, "#1",
                                  new VisualNode <ContentControl>("#1a",
                                                                  new VisualNode <ContentControl>("#1b",
                                                                                                  new VisualNode <ContentPresenter> ("#1c",
                                                                                                                                     new VisualNode <Rectangle> ("#1d")
                                                                                                                                     )
                                                                                                  )
                                                                  )
                                  );
        }
コード例 #13
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void Events ()
		{
			bool changed = false;
			ConcreteControl c = new ConcreteControl ();
			c.IsEnabledChanged += delegate (object sender, DependencyPropertyChangedEventArgs e) {
				Assert.AreSame (c, sender, "sender");
				Assert.AreEqual (Control.IsEnabledProperty, e.Property, "IsEnabledProperty");
				Assert.IsFalse ((bool) e.NewValue, "NewValue");
				Assert.IsTrue ((bool) e.OldValue, "OldValue");
				changed = true;
			};
			c.IsEnabled = false;
			Assert.IsFalse (c.IsEnabled, "IsEnabled");
			Assert.IsFalse (changed, "Should be async");
		}
コード例 #14
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void DefaultMethods ()
		{
			ConcreteControl c = new ConcreteControl ();
			CheckDefaultMethods (c);
			// Focus returns false and does not trigger [Get|Lost]Focus
			Assert.IsFalse (c.GotFocusCalled, "GotFocusCalled");
			Assert.IsFalse (c.LostFocusCalled, "LostFocusCalled");
		}
コード例 #15
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void InvalidValues()
		{
			ConcreteControl c = new ConcreteControl();
			Assert.Throws<ArgumentException>(() => {
				c.FontSize = -1;
			}, "#1");
			Assert.Throws<ArgumentException>(() => {
				c.FontSize = 0;
			}, "#2");
			c.FontSize = 1000000;

			c.Foreground = null;
			Assert.Throws<ArgumentException>(() => {
				c.FontFamily = null;
			}, "#3");
		}
コード例 #16
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void GetTemplateChildTest ()
		{
			ConcreteControl c = new ConcreteControl ();
			Assert.Throws<ArgumentException> (delegate {
				c.GetTemplateChild_ (null);
			}, "null");
			Assert.IsNull (c.GetTemplateChild_ (String.Empty), "Empty");
		}
コード例 #17
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void DefaultStyleKeyTest_More ()
		{
			ConcreteControl c = new ConcreteControl ();
			Assert.IsNull (c.DefaultStyleKey_, "null");

			// and some working tests
			c.DefaultStyleKey_ = typeof (ConcreteControl);
			Assert.AreEqual (typeof (ConcreteControl), c.DefaultStyleKey_, "DefaultStyleKey");

			MoreConcreteControl mc = new MoreConcreteControl ();
			mc.DefaultStyleKey_ = typeof (ConcreteControl);
			Assert.AreEqual (typeof (ConcreteControl), mc.DefaultStyleKey_, "DefaultStyleKey-Base");

			c = new ConcreteControl ();
			c.DefaultStyleKey_ = typeof (MoreConcreteControl);
			Assert.AreEqual (typeof (MoreConcreteControl), c.DefaultStyleKey_, "DefaultStyleKey-Inherited");

			mc = new MoreConcreteControl ();
			mc.DefaultStyleKey_ = typeof (SiblingControl);
			Assert.AreEqual (typeof (SiblingControl), mc.DefaultStyleKey_, "DefaultStyleKey-Sibling");

			mc = new MoreConcreteControl ();
			Assert.Throws<ArgumentException> (delegate {
				mc.DefaultStyleKey_ = typeof (Control);
			}, "Control");
		}
コード例 #18
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void DefaultStyleKeyTest_Null ()
		{
			ConcreteControl c = new ConcreteControl ();
			Assert.IsNull (c.DefaultStyleKey_, "null");

			// issue here is that we can't assign the current (null) value without an exception
			// but the PropertyChange logic is "smart" enough not to allow this...
			Assert.Throws<ArgumentException> (delegate {
				c.DefaultStyleKey_ = null;
			}, "null");

			// ... and guess what it's not part of the PropertyChange validation!
			c.SetValue (ConcreteControl.DefaultStyleKeyProperty_, null);
		}
コード例 #19
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void ApplyTemplate ()
		{
			ConcreteControl poker = new ConcreteControl ();
			Assert.IsNull (poker.Template, "#1");
			Assert.IsNull (poker.Style);
			Assert.IsFalse (poker.ApplyTemplate (), "#2");
			Assert.IsNull (poker.Template, "#3");
			Assert.IsNull (poker.Style, "#4");
		}
コード例 #20
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void OnNull ()
		{
			ConcreteControl c = new ConcreteControl ();
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnGotFocus_ (null);
			}, "OnGotFocus");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnLostFocus_ (null);
			}, "LostFocus");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnKeyDown_ (null);
			}, "OnKeyDown");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnKeyUp_ (null);
			}, "OnKeyU");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnMouseEnter_ (null);
			}, "OnMouseEnter");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnMouseLeave_ (null);
			}, "OnMouseLeave");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnMouseMove_ (null);
			}, "OnMouseMove");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnMouseLeftButtonDown_ (null);
			}, "OnMouseLeftButtonDown");
			Assert.Throws<ArgumentNullException> (delegate {
				c.OnMouseLeftButtonUp_ (null);
			}, "OnMouseLeftButtonUp");
		}
コード例 #21
0
ファイル: ControlTest.cs プロジェクト: dfr0/moon
		public void MeasureAppliesTemplate ()
		{
			ConcreteControl c = new ConcreteControl { CallBaseArrangeOverride = false, CallBaseMeasureOverride = false };
			Assert.IsFalse (c.TemplateAppled, "#1");
			c.Measure (new Size (100, 100));
			Assert.IsFalse (c.TemplateAppled, "#2");
			c.ApplyTemplate ();
			Assert.IsFalse (c.TemplateAppled, "#3");
		}
コード例 #22
0
ファイル: ContentControlTest.cs プロジェクト: kangaroo/moon
		public void MultipleTemplatesInsideTemplates ()
		{
			var template = (ControlTemplate)XamlReader.Load(@"
<ControlTemplate x:Name=""OuterTemplate""
  xmlns='http://schemas.microsoft.com/client/2007'
  xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
    <ContentControl x:Name=""InnerControl"">
        <ContentControl.Resources>
            <DataTemplate x:Name=""dataTemplate"">
                <Rectangle/>
            </DataTemplate>
            <ControlTemplate x:Name=""controlTemplate"">
                <ContentControl ContentTemplate=""{StaticResource dataTemplate}""/>
            </ControlTemplate>
        </ContentControl.Resources>
        <ContentControl.Template>
            <StaticResource ResourceKey=""controlTemplate""/>
        </ContentControl.Template>
    </ContentControl>
</ControlTemplate>
");
			var control = new ConcreteControl();
			TestPanel.Children.Add(control);
			control.Template = template;
			control.UpdateLayout();

			Assert.VisualChildren(control, "#1",
				new VisualNode<ContentControl>("#1a",
					new VisualNode<ContentControl>("#1b",
						new VisualNode<ContentPresenter> ("#1c",
							new VisualNode<Rectangle> ("#1d")
						)
					)
				)
			);
		}