//------------------------------------------------------------------------------
//
// System.IO.CheckArgument.cs
//
// Copyright (C) 2001 Moonlight Enterprises, All Rights Reserved
//
// Author: Jim Richardson, develop@wtfo-guru.com
// Created: Saturday, August 25, 2001
//
// NOTE: All contributors can freely add to this class or make modifications
// that do not break existing usage of methods
//------------------------------------------------------------------------------
using System;
using System.IO;
namespace System.IO
{
///
/// A utility class to assist with various argument validations in System.IO
///
internal sealed class CheckArgument
{
///
/// Generates and exception if arg contains whitepace only
///
public static void WhitespaceOnly(string arg, string desc)
{
if(arg != null && arg.Length > 0)
{
string temp = arg;
temp.Trim();
if(temp.Length == 0)
{
throw new ArgumentException(desc);
}
}
}
///
/// Generates and exception if arg contains whitepace only
///
public static void WhitespaceOnly(string arg)
{
WhitespaceOnly(arg, "Argument string consists of whitespace characters only.");
}
///
/// Generates and exception if arg is empty
///
public static void Empty(string arg, string desc)
{
if(arg != null && arg.Length == 0)
{
throw new ArgumentException(desc);
}
}
///
/// Generates and exception if arg is empty
///
public static void Empty(string arg)
{
Empty(arg, "Argument string is empty.");
}
///
/// Generates and exception if arg is null
///
public static void Null(Object arg, string desc)
{
if(arg == null)
{
throw new ArgumentNullException(desc);
}
}
///
/// Generates and exception if arg is null
///
public static void Null(Object arg)
{
if(arg == null)
{
throw new ArgumentNullException();
}
}
///
/// Generates and exception if path contains invalid path characters
///
public static void PathChars(string path, string desc)
{
if(path != null)
{
if(path.IndexOfAny(System.IO.Path.InvalidPathChars) > -1)
{
throw new ArgumentException(desc);
}
}
}
///
/// Generates and exception if path contains invalid path characters
///
public static void PathChars(string path)
{
PathChars(path, "Path contains invalid characters");
}
///
/// Generates and exception if path too long
///
[MonoTODO]
public static void PathLength(string path, string desc)
{
//TODO: find out how long is too long
}
///
/// Generates and exception if path too long
///
public static void PathLength(string path)
{
PathLength(path);
}
///
/// Generates and exception if path is illegal
///
public static void Path(string path, bool bAllowNull, bool bLength)
{
if(path != null) //allow null
{
Empty(path, "Path cannot be the empty string"); // path can't be empty
WhitespaceOnly(path, "Path cannot be all whitespace"); // path can't be all whitespace
PathChars(path); // path can't contain invalid characters
if(bLength)
{
PathLength("Path too long");
}
}
else if(!bAllowNull)
{
throw new ArgumentNullException("Parameter name: path");
}
}
///
/// Generates and exception if path is illegal
///
public static void Path(string path, bool bAllowNull)
{
Path(path, bAllowNull, false);
}
///
/// Generates and exception if path is illegal
///
public static void Path(string path)
{
Path(path, true, false);
}
}
} // namespace System.IO.Private