12using System.Collections;
16 public class TestAddRemove : GraphicRendererTestBase {
24 public IEnumerator PreAddedInValidState() {
25 InitTest(
"OneDynamicGroup");
28 Assert.That(oneGraphic.OnAwake().wasAttached);
29 Assert.That(oneGraphic.OnAwake().attachedGroup, Is.EqualTo(firstGroup));
31 Assert.That(oneGraphic.OnEnable().wasAttached);
32 Assert.That(oneGraphic.OnEnable().attachedGroup, Is.EqualTo(firstGroup));
34 Assert.That(oneGraphic.OnStart().wasAttached);
35 Assert.That(oneGraphic.OnStart().attachedGroup, Is.EqualTo(firstGroup));
43 public IEnumerator CanRemoveAndAdd() {
44 InitTest(
"OneDynamicGroup");
47 Assert.That(firstGroup.graphics, Contains.Item(oneGraphic));
48 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(firstGroup));
50 bool didRemove = firstGroup.TryRemoveGraphic(oneGraphic);
51 Assert.That(didRemove);
56 Assert.That(firstGroup.graphics, Does.Not.Contains(oneGraphic));
57 Assert.That(oneGraphic.attachedGroup, Is.Null);
58 Assert.That(oneGraphic.isAttachedToGroup, Is.False);
60 bool didAdd = firstGroup.TryAddGraphic(oneGraphic);
65 Assert.That(oneGraphic.isAttachedToGroup, Is.True);
66 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(firstGroup));
74 public IEnumerator CanRemoveAndAddSameFrame() {
75 InitTest(
"OneDynamicGroup");
78 bool didRemove = firstGroup.TryRemoveGraphic(oneGraphic);
79 bool didAdd = firstGroup.TryAddGraphic(oneGraphic);
81 Assert.That(didRemove);
83 Assert.That(oneGraphic.isAttachedToGroup);
87 Assert.That(oneGraphic.isAttachedToGroup, Is.True);
88 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(firstGroup));
96 public IEnumerator DontAddTwice() {
97 InitTest(
"OneDynamicGroup");
100 bool didAddTwice = firstGroup.TryAddGraphic(oneGraphic);
101 Assert.IsFalse(didAddTwice);
109 public IEnumerator SwitchGroupsSameFrame() {
110 InitTest(
"TwoDynamicGroups");
113 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(firstGroup));
115 bool didRemove = firstGroup.TryRemoveGraphic(oneGraphic);
116 bool didAdd = secondGroup.TryAddGraphic(oneGraphic);
118 Assert.That(didRemove);
123 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(secondGroup));
131 public IEnumerator AddToTwoGroupsSameFrame() {
132 InitTest(
"TwoEmptyDynamicGroups");
135 CreateGraphic(
"DisabledMeshGraphic");
137 bool didAddToFirst = firstGroup.TryAddGraphic(oneGraphic);
138 bool didAddToSecond = secondGroup.TryAddGraphic(oneGraphic);
140 Assert.IsTrue(didAddToFirst);
141 Assert.IsFalse(didAddToSecond);
145 Assert.That(oneGraphic.isAttachedToGroup);
146 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(firstGroup));
148 Assert.That(firstGroup.graphics, Contains.Item(oneGraphic));
149 Assert.That(secondGroup.graphics, Is.Empty);
157 public IEnumerator CantAddToASecondGroup() {
158 InitTest(
"TwoDynamicGroups");
161 bool didAdd = secondGroup.TryAddGraphic(oneGraphic);
163 Assert.IsFalse(didAdd);
164 Assert.That(oneGraphic.isAttachedToGroup);
165 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(firstGroup));
166 Assert.IsFalse(oneGraphic.willbeAttached);
167 Assert.That(secondGroup.graphics, Is.Empty);
176 public IEnumerator CantCancelTheRemoveIfWillAttach() {
177 InitTest(
"TwoDynamicGroups");
180 bool didRemove = firstGroup.TryRemoveGraphic(oneGraphic);
181 bool didAddToSecond = secondGroup.TryAddGraphic(oneGraphic);
182 bool didAddToFirst = firstGroup.TryAddGraphic(oneGraphic);
184 Assert.That(oneGraphic.isAttachedToGroup);
185 Assert.That(oneGraphic.willbeAttached);
186 Assert.That(oneGraphic.willbeDetached);
188 Assert.That(didRemove);
189 Assert.That(didAddToSecond);
190 Assert.IsFalse(didAddToFirst);
194 Assert.That(oneGraphic.isAttachedToGroup);
195 Assert.That(oneGraphic.attachedGroup, Is.EqualTo(secondGroup));
196 Assert.IsFalse(oneGraphic.willbeDetached);
197 Assert.IsFalse(oneGraphic.willbeAttached);
198 Assert.That(firstGroup.graphics, Is.Empty);
199 Assert.That(secondGroup.graphics, Contains.Item(oneGraphic));
208 public IEnumerator CanCancelTheAddWithARemove() {
209 InitTest(
"OneEmptyDynamicGroup");
212 CreateGraphic(
"DisabledMeshGraphic");
214 bool didAdd = firstGroup.TryAddGraphic(oneGraphic);
215 bool didRemove = firstGroup.TryRemoveGraphic(oneGraphic);
218 Assert.That(didRemove);
219 Assert.IsFalse(oneGraphic.willbeAttached);
220 Assert.IsFalse(oneGraphic.willbeDetached);
221 Assert.IsFalse(oneGraphic.isAttachedToGroup);
225 Assert.IsFalse(oneGraphic.isAttachedToGroup);
226 Assert.That(firstGroup.graphics, Is.Empty);
235 public IEnumerator CanSwitchToAGroupWithADifferentFeatureSet([Values(
true,
false)]
bool reverseGroup) {
236 InitTest(
"TwoDynamicGroupsWithDifferentFeatures");
239 LeapGraphicGroup first, second;
245 second = secondGroup;
248 CreateGraphic(
"DisabledMeshGraphic");
250 bool didAddToFirst = first.TryAddGraphic(oneGraphic);
251 Assert.That(didAddToFirst);
255 bool didDetatchFromFirst = oneGraphic.TryDetach();
256 Assert.That(didDetatchFromFirst);
260 bool didAddToSecond = second.TryAddGraphic(oneGraphic);
261 Assert.That(didAddToSecond);
265 bool didDetatchFromSecond = oneGraphic.TryDetach();
266 Assert.That(didDetatchFromSecond);
276 public IEnumerator CanAddAndRemoveManyOnSameFrame([Values(
true,
false)]
bool addMany) {
277 InitTest(
"OneEmptyDynamicGroupWith4Features");
280 var first = CreateGraphic(
"DisabledMeshGraphic");
281 var second = CreateGraphic(
"DisabledMeshGraphic");
282 var third = CreateGraphic(
"DisabledMeshGraphic");
285 firstGroup.TryAddGraphic(first);
287 firstGroup.TryAddGraphic(second);
288 firstGroup.TryAddGraphic(third);
294 firstGroup.TryAddGraphic(second);
295 firstGroup.TryAddGraphic(third);
298 firstGroup.TryAddGraphic(first);
305 foreach (var feature
in firstGroup.features) {
306 var featureData = feature.GetField(
"featureData") as IList;
307 Assert.That(featureData.Count, Is.EqualTo(firstGroup.graphics.Count));
308 for (
int i = 0; i < featureData.Count; i++) {
309 LeapFeatureData data = featureData[i] as LeapFeatureData;
310 Assert.That(data.graphic, Is.EqualTo(firstGroup.graphics[i]));