/// <summary>
        ///     Called when copy has been clicked.
        /// </summary>
        /// <param name="data">The data.</param>
        private void OnCopyClick(FailureRow data)
        {
            var sb = new StringBuilder( );

            for (int i = 0; i < Columns.Count; i++)
            {
                sb.AppendFormat("{0}: {1}\r\n", Columns[i], data.Fields[i]);
            }

            Clipboard.SetText(sb.ToString( ));
        }
        /// <summary>
        ///     Set the test result data.
        /// </summary>
        /// <param name="data">The results</param>
        private void SetTestResult(DataTable data)
        {
            _rawData = data;

            if (data?.Rows == null || data.Rows.Count <= 0)
            {
                Data?.Clear( );
                return;
            }
            Columns.Clear( );

            Data = new List <FailureRow>( );

            var hiddenColumns = _test.HiddenColumns;
            var entityColumns = _test.EntityColumns;
            var tenantColumn  = _test.TenantColumn;

            HashSet <int> hiddenColumnSet = new HashSet <int>( );

            if (!string.IsNullOrEmpty(hiddenColumns))
            {
                var hiddenColumnStrings = hiddenColumns.Split(',');

                foreach (string hiddenColumnString in hiddenColumnStrings)
                {
                    int hiddenColumn;

                    if (int.TryParse(hiddenColumnString, out hiddenColumn))
                    {
                        hiddenColumnSet.Add(hiddenColumn);
                    }
                }
            }

            HashSet <string> tenants = new HashSet <string>( );

            foreach (DataColumn column in data.Columns)
            {
                if (!hiddenColumnSet.Contains(column.Ordinal))
                {
                    Columns.Add(column.ColumnName);
                }
            }

            foreach (DataRow row in data.Rows)
            {
                if (tenantColumn != null)
                {
                    tenants.Add(row.ItemArray [tenantColumn.Value].ToString( ));
                }

                var failureFields = row.ItemArray.Select(i => i.ToString( )).ToList( );
                var allFields     = row.ItemArray.Select(i => i.ToString( )).ToList( );

                foreach (int hiddenColumn in hiddenColumnSet.OrderByDescending(i => i))
                {
                    if (failureFields.Count > hiddenColumn)
                    {
                        failureFields.RemoveAt(hiddenColumn);
                    }
                }

                var failureRow = new FailureRow(this, failureFields, allFields, entityColumns, Resolution, PluginSettings);

                Data.Add(failureRow);
            }

            List <string> tenantList = new List <string>
            {
                "All Tenants"
            };

            if (tenants.Count > 0)
            {
                tenantList.AddRange(tenants.OrderBy(s => s));
                TenantsVisible = true;
            }
            else
            {
                TenantsVisible = false;
            }

            Tenants = tenantList;

            SelectedTenant = "All Tenants";
        }