2using System.Collections.Generic;
4using System.Reflection;
5using System.Diagnostics;
6using System.Runtime.CompilerServices;
10using Microsoft.Xna.Framework;
11using Microsoft.Xna.Framework.Input;
12using Microsoft.Xna.Framework.Graphics;
18 public class LayoutUpdatePattern : UnitTest
20 public struct Expectations
23 public bool AbsoluteChanged;
24 public bool DecorChanged;
26 public Expectations(
bool changed,
bool absoluteChanged,
bool decorChanged)
29 AbsoluteChanged = absoluteChanged;
30 DecorChanged = decorChanged;
34 public Dictionary<string, CUIComponent> Family =
new();
36 public override void Prepare()
48 Family[
"GrandParent"].Append(Family[
"Parent"]).Append(Family[
"Me"]).Append(Family[
"Child"]).Append(Family[
"GrandChild"]);
49 Family[
"Parent"].Append(Family[
"Sister"]).Append(Family[
"GrandSister"]);
50 Family[
"GrandParent"].Append(Family[
"Uncle"]).Append(Family[
"Cousin"]);
53 public void OnPropChangedTest()
55 Dictionary<string, Expectations> Expected =
new()
57 {
"GrandParent" ,
new Expectations(
false,
false,
false) },
58 {
"Parent" ,
new Expectations(
true,
false,
true ) },
59 {
"Me" ,
new Expectations(
true,
false,
true ) },
60 {
"Child" ,
new Expectations(
true,
false,
true ) },
61 {
"GrandChild" ,
new Expectations(
true,
false,
true ) },
62 {
"Sister" ,
new Expectations(
true,
false,
true ) },
63 {
"GrandSister" ,
new Expectations(
true,
false,
true ) },
64 {
"Uncle" ,
new Expectations(
false,
false,
false) },
65 {
"Cousin" ,
new Expectations(
false,
false,
false) },
68 Family[
"GrandParent"].Layout.ForceMarkUnchanged();
69 Family[
"Me"].OnPropChanged();
71 Describe(
"---------------------", () => { Expect(
"Changed"); });
72 foreach (
string name
in Family.Keys)
74 Describe($
"{name}.Changed", () => { Expect(Family[name].Layout.Changed).ToBeEqual(Expected[name].Changed); });
77 Describe(
"---------------------", () => { Expect(
"AbsoluteChanged"); });
78 foreach (
string name
in Family.Keys)
80 Describe($
"{name}.AbsoluteChanged", () => { Expect(Family[name].Layout.AbsoluteChanged).ToBeEqual(Expected[name].AbsoluteChanged); });
83 Describe(
"---------------------", () => { Expect(
"DecorChanged"); });
84 foreach (
string name
in Family.Keys)
86 Describe($
"{name}.DecorChanged", () => { Expect(Family[name].Layout.DecorChanged).ToBeEqual(Expected[name].DecorChanged); });
90 public void OnChildrenPropChangedTest()
92 Dictionary<string, Expectations> Expected =
new()
94 {
"GrandParent" ,
new Expectations(
false,
false,
false) },
95 {
"Parent" ,
new Expectations(
false,
false,
false) },
96 {
"Me" ,
new Expectations(
true,
false,
true ) },
97 {
"Child" ,
new Expectations(
true,
false,
true ) },
98 {
"GrandChild" ,
new Expectations(
true,
false,
true ) },
99 {
"Sister" ,
new Expectations(
false,
false,
false) },
100 {
"GrandSister" ,
new Expectations(
false,
false,
false) },
101 {
"Uncle" ,
new Expectations(
false,
false,
false) },
102 {
"Cousin" ,
new Expectations(
false,
false,
false) },
105 Family[
"GrandParent"].Layout.ForceMarkUnchanged();
106 Family[
"Me"].OnChildrenPropChanged();
108 Describe(
"---------------------", () => { Expect(
"Changed"); });
109 foreach (
string name
in Family.Keys)
111 Describe($
"{name}.Changed", () => { Expect(Family[name].Layout.Changed).ToBeEqual(Expected[name].Changed); });
114 Describe(
"---------------------", () => { Expect(
"AbsoluteChanged"); });
115 foreach (
string name
in Family.Keys)
117 Describe($
"{name}.AbsoluteChanged", () => { Expect(Family[name].Layout.AbsoluteChanged).ToBeEqual(Expected[name].AbsoluteChanged); });
120 Describe(
"---------------------", () => { Expect(
"DecorChanged"); });
121 foreach (
string name
in Family.Keys)
123 Describe($
"{name}.DecorChanged", () => { Expect(Family[name].Layout.DecorChanged).ToBeEqual(Expected[name].DecorChanged); });
127 public void OnAbsolutePropChangedTest()
129 Dictionary<string, Expectations> Expected =
new()
131 {
"GrandParent" ,
new Expectations(
false,
false,
false) },
132 {
"Parent" ,
new Expectations(
false,
true,
false ) },
133 {
"Me" ,
new Expectations(
false,
false,
false ) },
134 {
"Child" ,
new Expectations(
false,
false,
false ) },
135 {
"GrandChild" ,
new Expectations(
false,
false,
false ) },
136 {
"Sister" ,
new Expectations(
false,
false,
false ) },
137 {
"GrandSister" ,
new Expectations(
false,
false,
false ) },
138 {
"Uncle" ,
new Expectations(
false,
false,
false) },
139 {
"Cousin" ,
new Expectations(
false,
false,
false) },
142 Family[
"GrandParent"].Layout.ForceMarkUnchanged();
143 Family[
"Me"].OnAbsolutePropChanged();
145 Describe(
"---------------------", () => { Expect(
"Changed"); });
146 foreach (
string name
in Family.Keys)
148 Describe($
"{name}.Changed", () => { Expect(Family[name].Layout.Changed).ToBeEqual(Expected[name].Changed); });
151 Describe(
"---------------------", () => { Expect(
"AbsoluteChanged"); });
152 foreach (
string name
in Family.Keys)
154 Describe($
"{name}.AbsoluteChanged", () => { Expect(Family[name].Layout.AbsoluteChanged).ToBeEqual(Expected[name].AbsoluteChanged); });
157 Describe(
"---------------------", () => { Expect(
"DecorChanged"); });
158 foreach (
string name
in Family.Keys)
160 Describe($
"{name}.DecorChanged", () => { Expect(Family[name].Layout.DecorChanged).ToBeEqual(Expected[name].DecorChanged); });
164 public void OnDecorPropChangedTest()
166 Dictionary<string, Expectations> Expected =
new()
168 {
"GrandParent" ,
new Expectations(
false,
false,
false) },
169 {
"Parent" ,
new Expectations(
false,
false,
false ) },
170 {
"Me" ,
new Expectations(
false,
false,
true ) },
171 {
"Child" ,
new Expectations(
false,
false,
false ) },
172 {
"GrandChild" ,
new Expectations(
false,
false,
false ) },
173 {
"Sister" ,
new Expectations(
false,
false,
false ) },
174 {
"GrandSister" ,
new Expectations(
false,
false,
false ) },
175 {
"Uncle" ,
new Expectations(
false,
false,
false) },
176 {
"Cousin" ,
new Expectations(
false,
false,
false) },
179 Family[
"GrandParent"].Layout.ForceMarkUnchanged();
180 Family[
"Me"].OnDecorPropChanged();
182 Describe(
"---------------------", () => { Expect(
"Changed"); });
183 foreach (
string name
in Family.Keys)
185 Describe($
"{name}.Changed", () => { Expect(Family[name].Layout.Changed).ToBeEqual(Expected[name].Changed); });
188 Describe(
"---------------------", () => { Expect(
"AbsoluteChanged"); });
189 foreach (
string name
in Family.Keys)
191 Describe($
"{name}.AbsoluteChanged", () => { Expect(Family[name].Layout.AbsoluteChanged).ToBeEqual(Expected[name].AbsoluteChanged); });
194 Describe(
"---------------------", () => { Expect(
"DecorChanged"); });
195 foreach (
string name
in Family.Keys)
197 Describe($
"{name}.DecorChanged", () => { Expect(Family[name].Layout.DecorChanged).ToBeEqual(Expected[name].DecorChanged); });
Base class for all components.