/** \details Test #1645 NspiUpdateStat and try to sort the result with an, for now, unsupported sorting type SortTypePhoneticDisplayName \param mt pointer to the top level mapitest structure \return true on success, otherwise false */ _PUBLIC_ bool mapitest_zentyal_1645(struct mapitest *mt) { TALLOC_CTX *mem_ctx; struct nspi_context *nspi_ctx; uint32_t plDelta = 1; enum MAPISTATUS retval; /* Sanity checks */ mem_ctx = talloc_named(NULL, 0, "mapitest_zentyal_1645"); if (!mem_ctx) return false; nspi_ctx = (struct nspi_context *) mt->session->nspi->ctx; if (!nspi_ctx) return false; /* Update pStat with unsupported SortTypePhoneticDisplayName */ nspi_ctx->pStat->ContainerID = 0; // Global Access List nspi_ctx->pStat->CurrentRec = MID_END_OF_TABLE; nspi_ctx->pStat->Delta = -46; nspi_ctx->pStat->NumPos = 3; nspi_ctx->pStat->TotalRecs = 3; nspi_ctx->pStat->SortType = SortTypePhoneticDisplayName; retval = nspi_UpdateStat(nspi_ctx, mem_ctx, &plDelta); mapitest_print_retval_clean(mt, "NspiUpdateStat", retval); if (retval != MAPI_E_CALL_FAILED) { talloc_free(mem_ctx); return false; } talloc_free(mem_ctx); return true; }
/** \details Test the NspiUpdateStat RPC operation (0x02) \param mt pointer on the top-level mapitest structure \return true on success, otherwise false */ _PUBLIC_ bool mapitest_nspi_UpdateStat(struct mapitest *mt) { TALLOC_CTX *mem_ctx; enum MAPISTATUS retval; struct nspi_context *nspi_ctx; int32_t plDelta = 1; struct PropertyRowSet_r *RowSet; mem_ctx = talloc_named(NULL, 0, "mapitest_nspi_UpdateStat"); nspi_ctx = (struct nspi_context *) mt->session->nspi->ctx; RowSet = talloc_zero(mem_ctx, struct PropertyRowSet_r); retval = nspi_GetSpecialTable(nspi_ctx, mem_ctx, 0x2, &RowSet); MAPIFreeBuffer(RowSet); if (retval != MAPI_E_SUCCESS) { talloc_free(mem_ctx); return false; } retval = nspi_UpdateStat(nspi_ctx, mem_ctx, &plDelta); mapitest_print_retval(mt, "NspiUpdateStat"); if (retval != MAPI_E_SUCCESS) { talloc_free(mem_ctx); return false; } mapitest_print(mt, "* %-35s: %d\n", "plDelta", plDelta); talloc_free(mem_ctx); return true; }