@@ -5250,6 +5250,36 @@ public void Actions_CanAddBindingsToActions_ToExistingComposite()
52505250 composite.InsertPartBinding("Negative", "<Keyboard>/leftArrow");
52515251 composite.InsertPartBinding("Positive", "<Keyboard>/rightArrow");
52525252
5253+ ValidateCompositeBindingsOnAction(action);
5254+ }
5255+
5256+ [Test]
5257+ [Category("Actions")]
5258+ [Description("ISXB-494 Changing composite of action inside a map triggered exception that wasn't caught by previous test.")]
5259+ public void Actions_CanChangeBindingPart_ToExistingCompositeInActionMap()
5260+ {
5261+ var keyboard = InputSystem.AddDevice<Keyboard>();
5262+
5263+ var actionMap = new InputActionMap("Map");
5264+ var action = actionMap.AddAction("Action", InputActionType.Value, expectedControlLayout: "Axis");
5265+
5266+ action.AddCompositeBinding("Axis")
5267+ .With("Negative", "<Keyboard>/a")
5268+ .With("Positive", "<Keyboard>/d");
5269+
5270+ Assert.That(action.bindings, Has.Count.EqualTo(3));
5271+ Assert.That(action.controls, Is.EquivalentTo(new[] { keyboard.aKey, keyboard.dKey }));
5272+
5273+ var composite = action.ChangeCompositeBinding("Axis");
5274+
5275+ composite.InsertPartBinding("Negative", "<Keyboard>/leftArrow");
5276+ composite.InsertPartBinding("Positive", "<Keyboard>/rightArrow");
5277+
5278+ ValidateCompositeBindingsOnAction(action);
5279+ }
5280+
5281+ private void ValidateCompositeBindingsOnAction(InputAction action)
5282+ {
52535283 Assert.That(action.bindings, Has.Count.EqualTo(5));
52545284 Assert.That(action.bindings,
52555285 Has.Exactly(1).With.Property("isComposite").EqualTo(true).And.With.Property("isPartOfComposite").EqualTo(false).And.With
0 commit comments