A game about forced loneliness, made by TACStudios
at master 38 lines 1.5 kB view raw
1using NUnit.Framework; 2using UnityEngine; 3using UnityEngine.EventSystems; 4 5public class EventTriggerRemoveDuringExecution 6{ 7 [Test] 8 [Description("ArgumentOutOfRange Exception is thrown when removing handler in callback in EventTrigger (case 1401557)")] 9 public void EventTrigger_DoesNotThrowExceptionWhenRemovingEventDuringExecution() 10 { 11 var go = new GameObject(); 12 var eventTrigger = go.AddComponent<EventTrigger>(); 13 var eventSystem = go.AddComponent<EventSystem>(); 14 15 var entry1 = new EventTrigger.Entry { eventID = EventTriggerType.PointerDown }; 16 var entry2 = new EventTrigger.Entry { eventID = EventTriggerType.PointerDown }; 17 18 bool executed1 = false; 19 bool executed2 = false; 20 entry1.callback.AddListener(e => 21 { 22 executed1 = true; 23 eventTrigger.triggers.Remove(entry2); 24 }); 25 entry2.callback.AddListener(e => executed2 = true); 26 27 eventTrigger.triggers.Add(entry1); 28 eventTrigger.triggers.Add(entry2); 29 30 Assert.DoesNotThrow(() => eventTrigger.OnPointerDown(new PointerEventData(eventSystem))); 31 Assert.True(executed1, "Expected Event 1 to be called but it was not."); 32 Assert.False(executed2, "Expected Event 2 to not be called as it was removed by event 1."); 33 Assert.That(eventTrigger.triggers, Does.Not.Contains(entry2)); 34 Assert.That(eventTrigger.triggers, Does.Contain(entry1)); 35 36 Object.DestroyImmediate(go); 37 } 38}