public void MSOXNSPI_S05_TC09_SeekEntriesWithReservedNonZero()
{
this.CheckProductSupported();
this.CheckMAPIHTTPTransportSupported();
#region Call NspiBind to initiate a session between the client and the server.
uint flags = 0;
STAT stat = new STAT();
stat.InitiateStat();
FlatUID_r guid = new FlatUID_r
{
Ab = new byte[16]
};
FlatUID_r? serverGuid = guid;
this.Result = this.ProtocolAdatper.NspiBind(flags, stat, ref serverGuid);
Site.Assert.AreEqual<ErrorCodeValue>(ErrorCodeValue.Success, this.Result, "NspiBind should return Success!");
#endregion
#region Call NspiUpdateStat to update the STAT block that represents the position in a table to reflect positioning changes requested by the client.
uint reserved = 0;
int? delta = 1;
this.Result = this.ProtocolAdatper.NspiUpdateStat(reserved, ref stat, ref delta);
Site.Assert.AreEqual<ErrorCodeValue>(ErrorCodeValue.Success, this.Result, "NspiUpdateStat should return Success!");
#endregion
#region Call NspiGetPropList method with dwFlags set to fEphID and CodePage field of stat not set to CP_WINUNICODE.
uint flagsOfGetPropList = (uint)RetrievePropertyFlag.fEphID;
PropertyTagArray_r? propTagsOfGetPropList;
uint codePage = (uint)RequiredCodePage.CP_TELETEX;
this.Result = this.ProtocolAdatper.NspiGetPropList(flagsOfGetPropList, stat.CurrentRec, codePage, out propTagsOfGetPropList);
Site.Assert.AreEqual<ErrorCodeValue>(ErrorCodeValue.Success, this.Result, "NspiGetPropList should return Success!");
#endregion
#region Call NspiSeekEntries with input parameter Reserved set to 1.
uint reservedOfSeekEntries = 0x1;
PropertyValue_r target = new PropertyValue_r
{
PropTag = (uint)AulProp.PidTagDisplayName,
Reserved = (uint)0x00
};
string displayName;
if (this.Transport == "ncacn_http" || this.Transport == "ncacn_ip_tcp")
{
displayName = Common.GetConfigurationPropertyValue("User1Name", this.Site);
}
else
{
displayName = Common.GetConfigurationPropertyValue("User1Name", this.Site) + "\0";
}
target.Value.LpszA = System.Text.Encoding.UTF8.GetBytes(displayName);
PropertyTagArray_r tags = new PropertyTagArray_r
{
CValues = 1,
AulPropTag = new uint[1]
{
target.PropTag
}
};
PropertyTagArray_r? propTagsOfSeekEntries = tags;
PropertyTagArray_r? tableOfSeekEntries = null;
PropertyRowSet_r? rowsOfSeekEntries;
this.Result = this.ProtocolAdatper.NspiSeekEntries(reservedOfSeekEntries, ref stat, target, tableOfSeekEntries, propTagsOfSeekEntries, out rowsOfSeekEntries, false);
#region Capture
// Add the debug information
Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R1024, the value of the result is {0}", this.Result);
// Verify MS-OXNSPI requirement: MS-OXNSPI_R1024
Site.CaptureRequirementIfIsTrue(
Enum.IsDefined(typeof(ErrorCodeValue), this.Result),
1024,
@"[In NspiSeekEntries] [Server Processing Rules: Upon receiving message NspiSeekEntries, the server MUST process the data from the message subject to the following constraints:] [Constraint 3] If the input parameter Reserved contains any value other than 0, the server MUST return one of the return values [Success, UnbindSuccess, UnbindFailure, ErrorsReturned, GeneralFailure, NotSupported, InvalidObject, OutOfResources, NotFound, LogonFailed, TooComplex, InvalidCodepage, InvalidLocale, TableTooBig, InvalidBookmark, AccessDenied, NotEnoughMemory and InvalidParameter] specified in section 2.2.1.2.");
#endregion Capture
#endregion
#region Call NspiUnbind to destroy the session between the client and the server.
uint returnValue = this.ProtocolAdatper.NspiUnbind(0);
Site.Assert.AreEqual<uint>(1, returnValue, "NspiUnbind method should return 1 (Success).");
#endregion
}