using UnitTestSharp; namespace Glass.UnitTests { public class PedigreeTests : TestFixture { public class OfTests : TestFixture { public void TargetAtTheRoot_IsJustItsName() { var root = new ControlContainer(); var window = root.Add(new Control("window")); CheckEqual("window", Pedigree.Of(root, window)); } public void NestedTarget_NamesEachAncestorDownToIt() { var root = new ControlContainer(); var toolbar = root.Add(new Control("window")).CanvasChildren.Add(new Control("toolbar")); var okButton = toolbar.CanvasChildren.Add(new Control("okButton")); CheckEqual("window.toolbar.okButton", Pedigree.Of(root, okButton)); } public void TargetInALaterBranch_LeavesEarlierBranchesOut() { var root = new ControlContainer(); root.Add(new Control("sidebar")).CanvasChildren.Add(new Control("logo")); var okButton = root.Add(new Control("dialog")).CanvasChildren.Add(new Control("okButton")); CheckEqual("dialog.okButton", Pedigree.Of(root, okButton)); } public void TargetInsideARedirectingComposite_NamesTheControlsTheWalkPassesThrough() { var root = new ControlContainer(); var okButton = root.Add(new ScrollView { DebugName = "scroll" }).CanvasChildren .Add(new Control("okButton")); string pedigree = Pedigree.Of(root, okButton); CheckTrue(pedigree.StartsWith("scroll.")); CheckTrue(pedigree.EndsWith(".okButton")); CheckNotEqual("scroll.okButton", pedigree); } public void TargetNotUnderTheRoot_IsJustItsName() { var root = new ControlContainer(); root.Add(new Control("window")); CheckEqual("okButton", Pedigree.Of(root, new Control("okButton"))); } public void NoRoot_IsJustItsName() { CheckEqual("okButton", Pedigree.Of(null, new Control("okButton"))); } public void ClientCodeBreakingTheSearch_GivesNoPedigree() { var root = new ControlContainer(); root.Add(new ControlTests.ThrowingDirectChildrenControl()); CheckNull(Pedigree.Of(root, new Control("okButton"))); } public void ControlsOwnMaterial_IsNamedStraightAfterTheControl() { var root = new ControlContainer(); var material = new SolidColorMaterial { DebugName = "okMaterial" }; var okButton = root.Add(new Panel { Material = material, DebugName = "okButton" }); CheckEqual("okButton.okMaterial", Pedigree.Of(root, okButton, material)); } public void ClientCodeBreakingTheControlSearch_GivesNoMaterialPedigree() { var root = new ControlContainer(); root.Add(new ControlTests.ThrowingDirectChildrenControl()); var material = new SolidColorMaterial(); CheckNull(Pedigree.Of(root, new Panel { Material = material }, material)); } } } }