docs(src): add missing XML docs and strip tracking-ID comments

Sweep of 203 source files resolving CommentChecker findings: add
<summary>/<param>/<returns>/<inheritdoc> where missing, and remove
resolved task/issue tracking markers (Tests-NNN, Worker-NNN, Server-NNN,
Task N) from code comments. Comment/doc-only — no logic changes.
Server+Tests build clean under TreatWarningsAsErrors.
This commit is contained in:
Joseph Doherty
2026-07-07 14:09:49 -04:00
parent 8914472706
commit fca978de07
203 changed files with 1834 additions and 1383 deletions
@@ -14,6 +14,7 @@ namespace ZB.MOM.WW.MxGateway.Worker.Tests.MxAccess;
public sealed class MxAccessCommandExecutorTests
{
/// <summary>Verifies that Register command calls MXAccess on the STA thread and preserves the server handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Register_CallsMxAccessOnStaAndPreservesServerHandle()
{
@@ -40,6 +41,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Unregister command calls MXAccess on the STA thread and removes the tracked server handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Unregister_CallsMxAccessOnStaAndRemovesTrackedServerHandle()
{
@@ -59,6 +61,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Unregister preserves the HResult when MXAccess throws and does not rewrite the failure.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_UnregisterWhenMxAccessThrows_PreservesHResultAndDoesNotRewriteFailure()
{
@@ -86,6 +89,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that AddItem command calls MXAccess on the STA thread and tracks the item handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AddItem_CallsMxAccessOnStaAndTracksItemHandle()
{
@@ -123,6 +127,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that AddItem2 command passes the context exactly and tracks the item handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AddItem2_PassesContextExactlyAndTracksItemHandle()
{
@@ -160,6 +165,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that RemoveItem command calls MXAccess on the STA thread and removes the tracked item handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_RemoveItem_CallsMxAccessOnStaAndRemovesTrackedItemHandle()
{
@@ -188,6 +194,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that RemoveItem removes tracked advice after MXAccess succeeds on an advised handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_RemoveItemWithAdvisedHandle_RemovesTrackedAdviceAfterMxAccessSucceeds()
{
@@ -213,6 +220,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that RemoveItem preserves the HResult and keeps the tracked item handle when using a cross-server handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_RemoveItemWithCrossServerHandle_PreservesHResultAndKeepsTrackedItemHandle()
{
@@ -247,6 +255,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that AddItem2 preserves the HResult when MXAccess throws and does not track the item handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AddItem2WhenMxAccessThrows_PreservesHResultAndDoesNotTrackItemHandle()
{
@@ -276,6 +285,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Advise command calls MXAccess on the STA thread and tracks plain advice.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Advise_CallsMxAccessOnStaAndTracksPlainAdvice()
{
@@ -309,6 +319,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that AdviseSupervisory calls a distinct MXAccess method and tracks supervisory advice.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AdviseSupervisory_CallsDistinctMxAccessMethodAndTracksSupervisoryAdvice()
{
@@ -341,6 +352,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that UnAdvise command calls MXAccess on the STA thread and removes the tracked advice.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_UnAdvise_CallsMxAccessOnStaAndRemovesTrackedAdvice()
{
@@ -369,6 +381,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Advise preserves the HResult when MXAccess throws and does not track the advice.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AdviseWhenMxAccessThrows_PreservesHResultAndDoesNotTrackAdvice()
{
@@ -399,6 +412,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that UnAdvise preserves the HResult when MXAccess throws and keeps the tracked advice.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_UnAdviseWhenMxAccessThrows_PreservesHResultAndKeepsTrackedAdvice()
{
@@ -433,6 +447,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that SubscribeBulk runs sequential MXAccess calls and returns per-item results.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_SubscribeBulk_RunsSequentialMxAccessCallsAndReturnsPerItemResults()
{
@@ -478,6 +493,7 @@ public sealed class MxAccessCommandExecutorTests
/// one BulkWriteResult per entry in input order, including a per-entry COM
/// failure surfaced as <c>WasSuccessful=false</c> with the underlying HRESULT.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteBulk_RunsSequentialWritesAndReturnsPerEntryResults()
{
@@ -530,6 +546,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Write2Bulk forwards value AND timestamp to each per-entry Write2.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Write2Bulk_ForwardsValueAndTimestampPerEntry()
{
@@ -556,6 +573,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that WriteSecuredBulk forwards both user ids per entry.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteSecuredBulk_ForwardsUserIdsPerEntry()
{
@@ -580,6 +598,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that WriteSecured2Bulk forwards user ids, value, and timestamp per entry.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteSecured2Bulk_ForwardsUserIdsValueAndTimestampPerEntry()
{
@@ -612,6 +631,7 @@ public sealed class MxAccessCommandExecutorTests
/// The fake COM object never fires events so the wait always times out — but
/// the lifecycle calls must still happen, in order, on the STA.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_ReadBulk_WhenTagNotCached_TakesSnapshotLifecycleAndTimesOut()
{
@@ -650,6 +670,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that ReadBulk with no payload returns an invalid request error.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_ReadBulkWithoutPayload_ReturnsInvalidRequest()
{
@@ -671,6 +692,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that UnsubscribeBulk removes items after UnAdvise failure.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_UnsubscribeBulk_RemovesItemAfterUnAdviseFailure()
{
@@ -700,6 +722,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that ShutdownGracefullyAsync cleans up handles in advice, item, server order.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task ShutdownGracefullyAsync_CleansHandlesInAdviceItemServerOrder()
{
@@ -725,6 +748,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that ShutdownGracefullyAsync records cleanup failures and continues.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task ShutdownGracefullyAsync_RecordsCleanupFailuresAndContinues()
{
@@ -753,6 +777,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Register without payload returns an invalid request error.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_RegisterWithoutPayload_ReturnsInvalidRequest()
{
@@ -774,6 +799,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that AddItem without payload returns an invalid request error.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AddItemWithoutPayload_ReturnsInvalidRequest()
{
@@ -795,6 +821,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Advise without payload returns an invalid request error.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AdviseWithoutPayload_ReturnsInvalidRequest()
{
@@ -816,6 +843,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Write dispatches the converted value to MXAccess on the STA thread.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Write_CallsMxAccessOnStaWithConvertedValue()
{
@@ -838,6 +866,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Write2 forwards the converted value and timestamp to MXAccess.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Write2_ForwardsValueAndTimestamp()
{
@@ -860,6 +889,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that WriteSecured forwards the operator and verifier user ids to MXAccess.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteSecured_ForwardsUserIds()
{
@@ -881,6 +911,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that WriteSecured2 forwards user ids, value, and timestamp to MXAccess.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteSecured2_ForwardsUserIdsValueAndTimestamp()
{
@@ -904,6 +935,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Write without a payload returns an invalid request error.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteWithoutPayload_ReturnsInvalidRequest()
{
@@ -926,6 +958,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies that Write without a value returns an invalid request error.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WriteWithoutValue_ReturnsInvalidRequest()
{
@@ -953,6 +986,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies Suspend calls MXAccess on the STA and maps the native status to MxStatusProxy.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Suspend_CallsMxAccessOnStaAndMapsStatus()
{
@@ -977,6 +1011,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies Activate calls MXAccess on the STA and maps the native status to MxStatusProxy.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_Activate_CallsMxAccessOnStaAndMapsStatus()
{
@@ -1000,6 +1035,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies AuthenticateUser passes credentials to MXAccess on the STA and returns the user id.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AuthenticateUser_CallsMxAccessOnStaAndReturnsUserId()
{
@@ -1026,6 +1062,7 @@ public sealed class MxAccessCommandExecutorTests
/// command reply or any recorded diagnostic — the password is only ever
/// handed straight to the MXAccess wrapper.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AuthenticateUser_DoesNotLeakPassword()
{
@@ -1051,6 +1088,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies ArchestrAUserToId calls MXAccess on the STA and returns the resolved user id.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_ArchestrAUserToId_CallsMxAccessOnStaAndReturnsUserId()
{
@@ -1072,6 +1110,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies AddBufferedItem calls MXAccess on the STA and tracks the buffered item handle.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_AddBufferedItem_CallsMxAccessOnStaAndTracksItemHandle()
{
@@ -1104,6 +1143,7 @@ public sealed class MxAccessCommandExecutorTests
}
/// <summary>Verifies SetBufferedUpdateInterval calls MXAccess on the STA and returns a base OK reply.</summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_SetBufferedUpdateInterval_CallsMxAccessOnStaAndReturnsOk()
{
@@ -1131,6 +1171,7 @@ public sealed class MxAccessCommandExecutorTests
/// <c>throw</c> would propagate an unhandled exception through <c>WorkerPipeSession</c>
/// and no other test would catch it.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task DispatchAsync_WithUnknownCommandKind_ReturnsInvalidRequestWithUnsupportedDiagnostic()
{
@@ -1860,9 +1901,7 @@ public sealed class MxAccessCommandExecutorTests
/// <summary>Gets the list of operations performed on this fake object.</summary>
public IReadOnlyList<string> OperationNames => operationNames.ToArray();
/// <summary>Registers a client and returns a server handle.</summary>
/// <param name="clientName">Name of the client to register.</param>
/// <returns>The server handle for the registered client.</returns>
/// <inheritdoc />
public int Register(string clientName)
{
operationNames.Add($"Register:{clientName}");
@@ -1872,8 +1911,7 @@ public sealed class MxAccessCommandExecutorTests
return registerHandle;
}
/// <summary>Unregisters a server and tracks the operation.</summary>
/// <param name="serverHandle">Server handle to unregister.</param>
/// <inheritdoc />
public void Unregister(int serverHandle)
{
operationNames.Add($"Unregister:{serverHandle}");
@@ -1886,10 +1924,7 @@ public sealed class MxAccessCommandExecutorTests
}
}
/// <summary>Adds an item to the server and returns its item handle.</summary>
/// <param name="serverHandle">Server handle to add the item to.</param>
/// <param name="itemDefinition">Item definition string.</param>
/// <returns>The item handle for the added item.</returns>
/// <inheritdoc />
public int AddItem(
int serverHandle,
string itemDefinition)
@@ -1907,11 +1942,7 @@ public sealed class MxAccessCommandExecutorTests
return addItemHandle;
}
/// <summary>Adds an item to the server with context and returns its item handle.</summary>
/// <param name="serverHandle">Server handle to add the item to.</param>
/// <param name="itemDefinition">Item definition string.</param>
/// <param name="itemContext">Item context string.</param>
/// <returns>The item handle for the added item.</returns>
/// <inheritdoc />
public int AddItem2(
int serverHandle,
string itemDefinition,
@@ -1931,9 +1962,7 @@ public sealed class MxAccessCommandExecutorTests
return addItem2Handle;
}
/// <summary>Removes an item from the server and tracks the operation.</summary>
/// <param name="serverHandle">Server handle from which to remove the item.</param>
/// <param name="itemHandle">Item handle to remove.</param>
/// <inheritdoc />
public void RemoveItem(
int serverHandle,
int itemHandle)
@@ -1949,9 +1978,7 @@ public sealed class MxAccessCommandExecutorTests
}
}
/// <summary>Advises on item changes and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the advisory subscription.</param>
/// <param name="itemHandle">Item handle to advise on.</param>
/// <inheritdoc />
public void Advise(
int serverHandle,
int itemHandle)
@@ -1967,9 +1994,7 @@ public sealed class MxAccessCommandExecutorTests
}
}
/// <summary>Removes an item advice subscription and tracks the operation.</summary>
/// <param name="serverHandle">Server handle from which to remove the subscription.</param>
/// <param name="itemHandle">Item handle to remove advice from.</param>
/// <inheritdoc />
public void UnAdvise(
int serverHandle,
int itemHandle)
@@ -1985,9 +2010,7 @@ public sealed class MxAccessCommandExecutorTests
}
}
/// <summary>Advises supervisory on item changes and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the supervisory subscription.</param>
/// <param name="itemHandle">Item handle to advise supervisory on.</param>
/// <inheritdoc />
public void AdviseSupervisory(
int serverHandle,
int itemHandle)
@@ -2027,11 +2050,7 @@ public sealed class MxAccessCommandExecutorTests
/// <summary>Gets the thread ID on which the most recent write was called.</summary>
public int? WriteThreadId { get; private set; }
/// <summary>Writes a value to an item and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the write.</param>
/// <param name="itemHandle">Item handle to write to.</param>
/// <param name="value">Value to write.</param>
/// <param name="userId">MXAccess user id for the write.</param>
/// <inheritdoc />
public void Write(
int serverHandle,
int itemHandle,
@@ -2047,12 +2066,7 @@ public sealed class MxAccessCommandExecutorTests
ThrowIfWriteFailureConfigured(itemHandle);
}
/// <summary>Writes a timestamped value to an item and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the write.</param>
/// <param name="itemHandle">Item handle to write to.</param>
/// <param name="value">Value to write.</param>
/// <param name="timestamp">Source timestamp for the write.</param>
/// <param name="userId">MXAccess user id for the write.</param>
/// <inheritdoc />
public void Write2(
int serverHandle,
int itemHandle,
@@ -2070,12 +2084,7 @@ public sealed class MxAccessCommandExecutorTests
ThrowIfWriteFailureConfigured(itemHandle);
}
/// <summary>Performs a secured write to an item and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the write.</param>
/// <param name="itemHandle">Item handle to write to.</param>
/// <param name="currentUserId">Operator user id.</param>
/// <param name="verifierUserId">Verifier user id.</param>
/// <param name="value">Value to write.</param>
/// <inheritdoc />
public void WriteSecured(
int serverHandle,
int itemHandle,
@@ -2093,13 +2102,7 @@ public sealed class MxAccessCommandExecutorTests
ThrowIfWriteFailureConfigured(itemHandle);
}
/// <summary>Performs a secured timestamped write to an item and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the write.</param>
/// <param name="itemHandle">Item handle to write to.</param>
/// <param name="currentUserId">Operator user id.</param>
/// <param name="verifierUserId">Verifier user id.</param>
/// <param name="value">Value to write.</param>
/// <param name="timestamp">Source timestamp for the write.</param>
/// <inheritdoc />
public void WriteSecured2(
int serverHandle,
int itemHandle,
@@ -2181,10 +2184,7 @@ public sealed class MxAccessCommandExecutorTests
/// <summary>Gets the interval passed to SetBufferedUpdateInterval, if called.</summary>
public int? SetBufferedUpdateIntervalValue { get; private set; }
/// <summary>Suspends an item and returns a canned status whose fields drive MxStatusProxy conversion.</summary>
/// <param name="serverHandle">Server handle for the suspend.</param>
/// <param name="itemHandle">Item handle to suspend.</param>
/// <returns>A status stand-in with all-OK fields.</returns>
/// <inheritdoc />
public object Suspend(int serverHandle, int itemHandle)
{
operationNames.Add($"Suspend:{serverHandle}:{itemHandle}");
@@ -2194,10 +2194,7 @@ public sealed class MxAccessCommandExecutorTests
return new FakeMxStatus { success = 1, category = 0, detectedBy = 0, detail = 0 };
}
/// <summary>Activates an item and returns a canned status whose fields drive MxStatusProxy conversion.</summary>
/// <param name="serverHandle">Server handle for the activate.</param>
/// <param name="itemHandle">Item handle to activate.</param>
/// <returns>A status stand-in with all-OK fields.</returns>
/// <inheritdoc />
public object Activate(int serverHandle, int itemHandle)
{
operationNames.Add($"Activate:{serverHandle}:{itemHandle}");
@@ -2207,11 +2204,7 @@ public sealed class MxAccessCommandExecutorTests
return new FakeMxStatus { success = 1, category = 0, detectedBy = 0, detail = 0 };
}
/// <summary>Authenticates a user and returns a canned user id.</summary>
/// <param name="serverHandle">Server handle for the authentication.</param>
/// <param name="verifyUser">User name to authenticate.</param>
/// <param name="verifyUserPassword">Credential; recorded only to assert it is never logged.</param>
/// <returns>The canned MXAccess user id (1).</returns>
/// <inheritdoc />
public int AuthenticateUser(int serverHandle, string verifyUser, string verifyUserPassword)
{
// Deliberately does NOT include the password in the operation log.
@@ -2223,10 +2216,7 @@ public sealed class MxAccessCommandExecutorTests
return 1;
}
/// <summary>Resolves an ArchestrA user GUID and returns a canned user id.</summary>
/// <param name="serverHandle">Server handle for the resolution.</param>
/// <param name="userIdGuid">ArchestrA user GUID to resolve.</param>
/// <returns>The canned MXAccess user id (7).</returns>
/// <inheritdoc />
public int ArchestrAUserToId(int serverHandle, string userIdGuid)
{
operationNames.Add($"ArchestrAUserToId:{serverHandle}:{userIdGuid}");
@@ -2235,11 +2225,7 @@ public sealed class MxAccessCommandExecutorTests
return 7;
}
/// <summary>Adds a buffered item and returns a canned item handle.</summary>
/// <param name="serverHandle">Server handle to add the item to.</param>
/// <param name="itemDefinition">Item definition string.</param>
/// <param name="itemContext">Item context string.</param>
/// <returns>The canned buffered item handle (1).</returns>
/// <inheritdoc />
public int AddBufferedItem(int serverHandle, string itemDefinition, string itemContext)
{
operationNames.Add($"AddBufferedItem:{serverHandle}:{itemDefinition}:{itemContext}");
@@ -2249,9 +2235,7 @@ public sealed class MxAccessCommandExecutorTests
return 1;
}
/// <summary>Sets the buffered update interval and tracks the operation.</summary>
/// <param name="serverHandle">Server handle for the interval change.</param>
/// <param name="updateIntervalMilliseconds">Buffered update interval in milliseconds.</param>
/// <inheritdoc />
public void SetBufferedUpdateInterval(int serverHandle, int updateIntervalMilliseconds)
{
operationNames.Add($"SetBufferedUpdateInterval:{serverHandle}:{updateIntervalMilliseconds}");
@@ -2274,8 +2258,7 @@ public sealed class MxAccessCommandExecutorTests
/// <summary>Gets the fake COM object.</summary>
public FakeMxAccessComObject FakeComObject { get; }
/// <summary>Creates and returns the fake MXAccess COM object.</summary>
/// <returns>The fake COM object.</returns>
/// <inheritdoc />
public object Create()
{
return FakeComObject;