private static void PerformUndoRedoGeneric <TDebugState, T>(UnityEngine.Rendering.DebugUI.IValueField field, T defaultValue, T valueToSet) where TDebugState : DebugState <T>, new() { DebugState <T> state = ScriptableObject.CreateInstance <TDebugState>(); state.SetValue(defaultValue, field); Undo.RecordObject(state, nameof(PerformUndoRedoGeneric)); state.SetValue(valueToSet, field); Undo.PerformUndo(); Assert.AreEqual(defaultValue, state.value); Undo.PerformRedo(); Assert.AreEqual(valueToSet, state.value); }