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; }