public void CreateChangeBreakpointCommand() {
            // Arrange
            const int commandId = 3;
            const int breakpointId = 5;

            // Act
            var changeBreakpointCommand = new ChangeBreakpointCommand(commandId, breakpointId);

            // Assert
            Assert.AreEqual(commandId, changeBreakpointCommand.Id);
            Assert.AreEqual(
                string.Format(
                    "{{\"command\":\"changebreakpoint\",\"seq\":{0},\"type\":\"request\",\"arguments\":{{\"breakpoint\":{1}}}}}",
                    commandId, breakpointId),
                changeBreakpointCommand.ToString());
        }
        public void CreateChangeBreakpointCommandWithOptionalParameters() {
            // Arrange
            const int commandId = 3;
            const int breakpointId = 5;
            const bool enabled = true;
            const string condition = "value > 5";
            const int ignoreCount = 2;

            // Act
            var changeBreakpointCommand = new ChangeBreakpointCommand(commandId, breakpointId, enabled, condition, ignoreCount);

            // Assert
            Assert.AreEqual(commandId, changeBreakpointCommand.Id);
            Assert.AreEqual(
                string.Format(
                    "{{\"command\":\"changebreakpoint\",\"seq\":{0},\"type\":\"request\",\"arguments\":{{\"breakpoint\":{1},\"enabled\":{2},\"condition\":\"{3}\",\"ignoreCount\":{4}}}}}",
                    commandId, breakpointId, enabled.ToString().ToLower(), condition, ignoreCount),
                changeBreakpointCommand.ToString());
        }
        internal async Task UpdateBreakpointBindingAsync(
            int breakpointId,
            bool? enabled = null,
            string condition = null,
            int? ignoreCount = null,
            bool validateSuccess = false,
            CancellationToken cancellationToken = new CancellationToken()) {
            // DEVNOTE: Calling UpdateBreakpointBinding() on the debug thread with validateSuccess == true will deadlock
            // and timout, causing both the followup handler to be called before confirmation of success (or failure), and
            // a return of false (failure).
            DebugWriteCommand("Update Breakpoint binding");

            var changeBreakPointCommand = new ChangeBreakpointCommand(CommandId, breakpointId, enabled, condition, ignoreCount);
            await TrySendRequestAsync(changeBreakPointCommand, cancellationToken).ConfigureAwait(false);
        }