private static string FormatDirectoryAttribute(DirectoryAttributeModification directoryAttribute)
        {
            if (directoryAttribute != null)
            {
                string name  = directoryAttribute.Name;
                string value = null;

                if (directoryAttribute.Count > 1)
                {
                    var type = directoryAttribute[0].GetType();

                    if (type == typeof(string))
                    {
#if NET35
                        value = string.Join(" ", directoryAttribute.Cast <string>().ToArray());
#else
                        value = string.Join(" ", directoryAttribute.Cast <string>());
#endif
                    }
                    else if (type == typeof(byte[]))
                    {
#if NET35
                        value = string.Join(" ", directoryAttribute.Cast <byte[]>().Select(b => b.ToStringOctet()).ToArray());
#else
                        value = string.Join(" ", directoryAttribute.Cast <byte[]>().Select(b => b.ToStringOctet()));
#endif
                    }
                }
                else if (directoryAttribute.Count > 0)
                {
                    var rawValue = directoryAttribute[0];
                    if (rawValue is byte[])
                    {
                        value = (rawValue as byte[]).ToStringOctet();
                    }
                    else
                    {
                        value = rawValue.ToString();
                    }
                }

                return(directoryAttribute.Operation == DirectoryAttributeOperation.Delete
                    ? string.Format("{{ {0} {1} }}", "Delete", name)
                    : string.Format("{{ {0} {1}: {2} }}", directoryAttribute.Operation, name, value));
            }

            return(string.Empty);
        }
        public void Ctor_DistinguishedName_Operation_AttributeName_Values(string distinguishedName, DirectoryAttributeOperation operation, string attributeName, object[] values)
        {
            var request = new ModifyRequest(distinguishedName, operation, attributeName, values);

            Assert.Empty(request.Controls);
            DirectoryAttributeModification modification = (DirectoryAttributeModification)Assert.Single(request.Modifications);

            Assert.Equal(attributeName, modification.Name);
            Assert.Equal(operation, modification.Operation);
            Assert.Equal(values ?? Enumerable.Empty <object>(), modification.Cast <object>());

            Assert.Equal(distinguishedName, request.DistinguishedName);
            Assert.Null(request.RequestId);
        }