internal static void VerifyPaging(SmartObjectClientServerWrapper clientServer, SmartObject smartObject, int pageSize)
        {
            var totalDataTable = SmartObjectHelper.ExecuteListDataTable(clientServer, smartObject);

            AssertHelper.IsTrue(totalDataTable.Rows.Count > 0);

            for (int pageNumber = 1; totalDataTable.GetCondition(pageNumber, pageSize); pageNumber++)
            {
                var options = new ExecuteListReaderOptions
                {
                    PageNumber = pageNumber,
                    PageSize   = pageSize,
                    IncludeTotalRecordCount = (pageNumber % 2) == 1
                };

                var pagedReader = SmartObjectHelper.ExecuteListReader(clientServer, smartObject, options);
                if (options.IncludeTotalRecordCount)
                {
                    AssertHelper.AreEqual(totalDataTable.Rows.Count, pagedReader.TotalRecordCount);
                }
                else
                {
                    AssertHelper.AreEqual(-1, pagedReader.TotalRecordCount);
                }

                using (var pagedResults = new DataTable())
                {
                    pagedResults.Load(pagedReader);

                    SmartObjectHelper.CompareDataTables(totalDataTable.GetPagedResult(pageNumber, pageSize),
                                                        pagedResults);
                }
            }
        }
        internal static SmartObject GetSmartObject(SmartObjectClientServerWrapper clientServer, string serviceObjectName, ServiceInstanceSettings serviceInstanceSettings)
        {
            clientServer.ThrowIfNull("clientServer");

            var smartObjectName = GetSmartObjectName(serviceObjectName, serviceInstanceSettings);

            return(clientServer.GetSmartObject(smartObjectName));
        }
        internal static SmartObject ExecuteScalar(SmartObjectClientServerWrapper clientServer, SmartObject smartObject)
        {
            clientServer.ThrowIfNull("clientServer");

            try
            {
                return(clientServer.ExecuteScalar(smartObject));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.GetExceptionMessage());
            }
        }
        internal static DataTable ExecuteSQLQueryDataTable(SmartObjectClientServerWrapper clientServer, string query)
        {
            clientServer.ThrowIfNull("clientServer");

            try
            {
                return(clientServer.ExecuteSQLQueryDataTable(query));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.GetExceptionMessage());
            }
        }
        internal static SmartObjectReader ExecuteListReader(SmartObjectClientServerWrapper clientServer, SmartObject smartObject, ExecuteListReaderOptions options = null)
        {
            clientServer.ThrowIfNull("clientServer");

            if (options == null)
            {
                options = new ExecuteListReaderOptions();
            }

            try
            {
                return(clientServer.ExecuteListReader(smartObject, options));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.GetExceptionMessage());
            }
        }