private void DrawOptionsForAfterPeriodOfTime(AssertionComponent script) { EditorGUILayout.Space(); script.checkAfterTime = EditorGUILayout.FloatField(guiCheckAfterTimeGuiContent, script.checkAfterTime); if (script.checkAfterTime < 0) { script.checkAfterTime = 0; } script.repeatCheckTime = EditorGUILayout.Toggle(guiRepeatCheckTimeGuiContent, script.repeatCheckTime); if (script.repeatCheckTime) { script.repeatEveryTime = EditorGUILayout.FloatField(guiRepeatEveryTimeGuiContent, script.repeatEveryTime); if (script.repeatEveryTime < 0) { script.repeatEveryTime = 0; } } }
private bool DrawComparerSelection(AssertionComponent script) { if (allComparersList == null) { allComparersList = new List <Type>(); var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (var assembly in allAssemblies) { var types = assembly.GetTypes(); allComparersList.AddRange(types.Where(type => type.IsSubclassOf(typeof(ActionBase)) && !type.IsAbstract)); } } var allComparers = allComparersList.ToArray(); if (script.Action == null) { script.Action = (ActionBase)CreateInstance(allComparers.First()); } m_ComparerDropDown.Draw(script.Action.GetType(), allComparers, type => { if (script.Action == null || script.Action.GetType().Name != type.Name) { script.Action = (ActionBase)CreateInstance(type); AssertionExplorerWindow.Reload(); } }); return(script.Action != null); }
private void DrawOptionsForOnUpdate(AssertionComponent script) { EditorGUILayout.Space(); script.checkAfterFrames = EditorGUILayout.IntField(guiCheckAfterFramesGuiContent, script.checkAfterFrames); if (script.checkAfterFrames < 1) { script.checkAfterFrames = 1; } script.repeatCheckFrame = EditorGUILayout.Toggle(guiRepeatCheckFrameGuiContent, script.repeatCheckFrame); if (script.repeatCheckFrame) { script.repeatEveryFrame = EditorGUILayout.IntField(guiRepeatEveryTimeGuiContent, script.repeatEveryFrame); if (script.repeatEveryFrame < 1) { script.repeatEveryFrame = 1; } } }
private static T CreateAssertionComponent <T>(out IAssertionComponentConfigurator configurator, CheckMethod checkOnMethods, GameObject gameObject, string propertyPath) where T : ActionBase { AssertionComponent assertionComponent = gameObject.AddComponent <AssertionComponent>(); assertionComponent.checkMethods = checkOnMethods; T result = (T)(assertionComponent.Action = ScriptableObject.CreateInstance <T>()); assertionComponent.Action.go = gameObject; assertionComponent.Action.thisPropertyPath = propertyPath; configurator = assertionComponent; StackTrace stackTrace = new StackTrace(fNeedFileInfo: true); string fileName = stackTrace.GetFrame(0).GetFileName(); for (int i = 1; i < stackTrace.FrameCount; i++) { StackFrame frame = stackTrace.GetFrame(i); if (frame.GetFileName() != fileName) { string text = (assertionComponent.m_CreatedInFilePath = frame.GetFileName().Substring(Application.dataPath.Length - "Assets".Length)); assertionComponent.m_CreatedInFileLine = frame.GetFileLineNumber(); break; } } return(result); }
protected virtual void PrintFoldedAssertionLine(AssertionComponent assertionComponent) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(GUILayout.MaxWidth(300)); EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(300)); PrintPath(assertionComponent.Action.go, assertionComponent.Action.thisPropertyPath); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(GUILayout.MaxWidth(250)); var labelStr = assertionComponent.Action.GetType().Name; var labelStr2 = assertionComponent.Action.GetConfigurationDescription(); if (labelStr2 != "") labelStr += "( " + labelStr2 + ")"; EditorGUILayout.LabelField(labelStr); EditorGUILayout.EndVertical(); if (assertionComponent.Action is ComparerBase) { var comparer = assertionComponent.Action as ComparerBase; var otherStrVal = "(no value selected)"; EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(300)); switch (comparer.compareToType) { case ComparerBase.CompareToType.CompareToObject: if (comparer.other != null) { PrintPath(comparer.other, comparer.otherPropertyPath); } else { EditorGUILayout.LabelField(otherStrVal, Styles.redLabel); } break; case ComparerBase.CompareToType.CompareToConstantValue: otherStrVal = comparer.ConstValue.ToString(); EditorGUILayout.LabelField(otherStrVal); break; case ComparerBase.CompareToType.CompareToNull: otherStrVal = "null"; EditorGUILayout.LabelField(otherStrVal); break; } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } else { EditorGUILayout.LabelField(""); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); }
public static Type GetSecondArgumentType(this AssertionComponent assertion) { Type secondArgument = null; if (assertion.Action is ComparerBase) { secondArgument = (assertion.Action as ComparerBase).GetSecondParameterType(); } return(secondArgument); }
private void DrawCustomFields(AssertionComponent script) { foreach (var prop in script.Action.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { var so = new SerializedObject(script.Action); var sp = so.FindProperty(prop.Name); if (sp != null) { EditorGUILayout.PropertyField(sp, true); so.ApplyModifiedProperties(); } } }
public static void CheckAssertions(AssertionComponent[] assertions) { if (!Debug.isDebugBuild) { return; } foreach(var assertion in assertions) { assertion.checksPerformed++; var result = assertion.Action.Compare(); if (!result) { assertion.hasFailed = true; assertion.Action.Fail(assertion); } } }
public static void CheckAssertions (AssertionComponent[] assertions) { if (!Debug.isDebugBuild) return; foreach (var assertion in assertions) { assertion.checksPerformed++; var result = assertion.Action.Compare (); if (!result) { assertion.hasFailed = true; Debug.LogException (new AssertionException (assertion), assertion); } } }
private void DrawOptionsForAfterPeriodOfTime (AssertionComponent script) { EditorGUILayout.Space (); script.checkAfterTime = EditorGUILayout.FloatField (guiCheckAfterTimeGuiContent, script.checkAfterTime); if (script.checkAfterTime < 0) script.checkAfterTime = 0; script.repeatCheckTime = EditorGUILayout.Toggle (guiRepeatCheckTimeGuiContent, script.repeatCheckTime); if (script.repeatCheckTime) { script.repeatEveryTime = EditorGUILayout.FloatField (guiRepeatEveryTimeGuiContent, script.repeatEveryTime); if (script.repeatEveryTime < 0) script.repeatEveryTime = 0; } }
public static void CheckAssertions(AssertionComponent[] assertions) { if (!Debug.isDebugBuild) return; for (int i = 0; i < assertions.Length; ++i) { var assertion = assertions[i]; assertion.checksPerformed++; var result = assertion.Action.Compare(); if (!result) { assertion.hasFailed = true; assertion.Action.Fail(assertion); } } }
protected virtual void PrintAssertionLineDetails(AssertionComponent assertionComponent) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(GUILayout.MaxWidth(320)); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Attached to", GUILayout.Width(70)); var sss = EditorStyles.objectField.CalcSize(new GUIContent(assertionComponent.gameObject.name)); EditorGUILayout.ObjectField(assertionComponent.gameObject, typeof(GameObject), true, GUILayout.Width(sss.x)); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(GUILayout.MaxWidth(250)); #if UNITY_2017_3_OR_NEWER EditorGUILayout.EnumFlagsField(assertionComponent.checkMethods, EditorStyles.popup, GUILayout.MaxWidth(150)); #else EditorGUILayout.EnumMaskField(assertionComponent.checkMethods, EditorStyles.popup, GUILayout.MaxWidth(150)); #endif EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Disabled", GUILayout.Width(55)); assertionComponent.enabled = !EditorGUILayout.Toggle(!assertionComponent.enabled, GUILayout.Width(15)); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); }
private void OnComponentCopy() { if (m_ActionBase == null) { return; } IEnumerable <UnityEngine.Object> source = from o in Resources.FindObjectsOfTypeAll(typeof(AssertionComponent)) where ((AssertionComponent)o).m_ActionBase == m_ActionBase && o != this select o; if (source.Any()) { if (source.Count() > 1) { UnityEngine.Debug.LogWarning("More than one refence to comparer found. This shouldn't happen"); } AssertionComponent assertionComponent = source.First() as AssertionComponent; m_ActionBase = assertionComponent.m_ActionBase.CreateCopy(assertionComponent.gameObject, base.gameObject); } }
public static void CheckAssertions (AssertionComponent[] assertions) { if (!Debug.isDebugBuild) return; foreach (var assertion in assertions) { assertion.checksPerformed++; var result = assertion.Action.Compare (); if (!result) { assertion.hasFailed = true; string message = ""; if (assertion.Action is ComparerBase) { //needs different message for different comapre to type. var comparer = assertion.Action as ComparerBase; message = assertion.name + " assertion failed.\n(" + assertion.Action.go + ")." + assertion.Action.thisPropertyPath + " " + comparer.compareToType; switch (comparer.compareToType) { case ComparerBase.CompareToType.CompareToObject: message +=" (" + comparer.other + ")." + comparer.otherPropertyPath + " failed."; break; case ComparerBase.CompareToType.CompareToConstantValue: message += comparer.ConstValue + " failed."; break; case ComparerBase.CompareToType.CompareToNull: message += " failed."; break; } } else { message = assertion.name + " assertion failed.\n(" + assertion.Action.go + ")." + assertion.Action.thisPropertyPath + " failed."; } Debug.LogException (new AssertionException (message), assertion); } } }
private bool DrawComparerSelection(AssertionComponent script) { var types = typeof(ActionBase).Assembly.GetTypes(); var allComparers = types.Where(type => type.IsSubclassOf(typeof(ActionBase)) && !type.IsAbstract).ToArray(); if (script.Action == null) { script.Action = (ActionBase)CreateInstance(allComparers.First()); } comparerDropDown.Draw(script.Action.GetType(), allComparers, type => { if (script.Action == null || script.Action.GetType().Name != type.Name) { script.Action = (ActionBase)CreateInstance(type); AssertionExplorerWindow.Reload(); } }); return(script.Action != null); }
private void DrawOptionsForOnUpdate (AssertionComponent script) { EditorGUILayout.Space (); script.checkAfterFrames = EditorGUILayout.IntField (guiCheckAfterFramesGuiContent, script.checkAfterFrames); if (script.checkAfterFrames < 1) script.checkAfterFrames = 1; script.repeatCheckFrame = EditorGUILayout.Toggle (guiRepeatCheckFrameGuiContent, script.repeatCheckFrame); if (script.repeatCheckFrame) { script.repeatEveryFrame = EditorGUILayout.IntField (guiRepeatEveryTimeGuiContent, script.repeatEveryFrame); if (script.repeatEveryFrame < 1) script.repeatEveryFrame = 1; } }
public virtual void Fail(AssertionComponent assertion) { Debug.LogException(new AssertionException(assertion), assertion.GetFailureReferenceObject()); }
public virtual void Fail(AssertionComponent assertion) { Debug.LogException(new AssertionException(assertion), assertion); }
public AssertionException(AssertionComponent assertion) : base(assertion.Action.GetFailureMessage()) { m_Assertion = assertion; }
private bool DrawComparerSelection(AssertionComponent script) { if(allComparersList == null) { allComparersList = new List<Type>(); var allAssemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (var assembly in allAssemblies) { var types = assembly.GetTypes(); allComparersList.AddRange(types.Where(type => type.IsSubclassOf(typeof(ActionBase)) && !type.IsAbstract)); } } var allComparers = allComparersList.ToArray(); if (script.Action == null) script.Action = (ActionBase)CreateInstance(allComparers.First()); m_ComparerDropDown.Draw(script.Action.GetType(), allComparers, type => { if (script.Action == null || script.Action.GetType().Name != type.Name) { script.Action = (ActionBase)CreateInstance(type); AssertionExplorerWindow.Reload(); } }); return script.Action != null; }
public static void CheckAssertions(AssertionComponent assertion) { CheckAssertions(new[] {assertion}); }
public static Type GetFirstArgumentType(this AssertionComponent assertion) { return(assertion.Action.GetParameterType()); }
public static void CheckAssertions(AssertionComponent assertion) { CheckAssertions(new AssertionComponent[1] { assertion }); }
public AssertionException(AssertionComponent assertion) : base(assertion.Action.GetFailureMessage()) { m_Assertion = assertion; }
private bool DrawComparerSelection (AssertionComponent script) { var types = typeof(ActionBase).Assembly.GetTypes(); var allComparers = types.Where(type => type.IsSubclassOf(typeof(ActionBase)) && !type.IsAbstract).ToArray(); if (script.Action == null) script.Action = (ActionBase)CreateInstance(allComparers.First()); comparerDropDown.Draw(script.Action.GetType (), allComparers, type => { if (script.Action == null || script.Action.GetType().Name != type.Name) { script.Action = (ActionBase)CreateInstance(type); AssertionExplorerWindow.Reload (); } }); return script.Action != null; }
private void DrawCustomFields (AssertionComponent script) { foreach (var prop in script.Action.GetType ().GetFields (BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)) { var so = new SerializedObject(script.Action); var sp = so.FindProperty(prop.Name); if (sp != null) { EditorGUILayout.PropertyField (sp, true); so.ApplyModifiedProperties (); } } }
public static void CheckAssertions(AssertionComponent assertion) { AssertionComponent[] assertions = new AssertionComponent[] { assertion }; CheckAssertions(assertions); }