public MockDriveInfo(IMockFileDataAccessor mockFileDataAccessor, string name)
        {
            if (mockFileDataAccessor == null)
            {
                throw new ArgumentNullException(nameof(mockFileDataAccessor));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            const string DRIVE_SEPARATOR = @":\";

            if (name.Length == 1)
            {
                name = char.ToUpperInvariant(name[0]) + DRIVE_SEPARATOR;
            }
            else if (name.Length == 2 && name[1] == ':')
            {
                name = char.ToUpperInvariant(name[0]) + DRIVE_SEPARATOR;
            }
            else if (name.Length == 3 && name.EndsWith(DRIVE_SEPARATOR, StringComparison.Ordinal))
            {
                name = char.ToUpperInvariant(name[0]) + DRIVE_SEPARATOR;
            }
            else
            {
                MockPath.CheckInvalidPathChars(name);
                name = mockFileDataAccessor.Path.GetPathRoot(name);

                if (string.IsNullOrEmpty(name) || name.StartsWith(@"\\", StringComparison.Ordinal))
                {
                    throw new ArgumentException(
                              @"Object must be a root directory (""C:\"") or a drive letter (""C"").");
                }
            }

            this._mockFileDataAccessor = mockFileDataAccessor;

            Name    = name;
            IsReady = true;
        }