104 lines
4.3 KiB
C#
104 lines
4.3 KiB
C#
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
namespace CmdLine
|
|
{
|
|
extern alias migrate;
|
|
using System;
|
|
using System.Data.Entity;
|
|
using Xunit;
|
|
|
|
public class CommandLineExceptionTests
|
|
{
|
|
[Fact]
|
|
public void Constructors_allow_for_nulls_message_and_inner_exception()
|
|
{
|
|
Assert.True(new migrate::CmdLine.CommandLineException((string)null).Message.Contains("'CmdLine.CommandLineException'"));
|
|
Assert.Null(
|
|
new migrate::CmdLine.CommandLineException(
|
|
new migrate::CmdLine.CommandArgumentHelp(typeof(SomeCommandLineClass)), null).InnerException);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructors_throw_when_given_null_CommandArgumentHelp()
|
|
{
|
|
Assert.Equal(
|
|
"argumentHelp",
|
|
Assert.Throws<ArgumentNullException>(
|
|
() => new migrate::CmdLine.CommandLineException((migrate::CmdLine.CommandArgumentHelp)null)).ParamName);
|
|
|
|
Assert.Equal(
|
|
"argumentHelp",
|
|
Assert.Throws<ArgumentNullException>(
|
|
() => new migrate::CmdLine.CommandLineException(null, new Exception())).ParamName);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_uses_given_message_and_sets_up_serialization()
|
|
{
|
|
var exception = new migrate::CmdLine.CommandLineException("I'm a DOS prompt.");
|
|
|
|
Assert.Equal("I'm a DOS prompt.", exception.Message);
|
|
Assert.Null(exception.ArgumentHelp);
|
|
|
|
exception = ExceptionHelpers.SerializeAndDeserialize(exception);
|
|
|
|
Assert.Equal("I'm a DOS prompt.", exception.Message);
|
|
Assert.Null(exception.ArgumentHelp);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_uses_given_ArgumentHelp_and_sets_up_serialization()
|
|
{
|
|
var exception =
|
|
new migrate::CmdLine.CommandLineException(
|
|
new migrate::CmdLine.CommandArgumentHelp(typeof(SomeCommandLineClass), "CLI"));
|
|
|
|
Assert.Equal("CLI", exception.Message);
|
|
Assert.Equal("Code First Migrations Command Line Utility", exception.ArgumentHelp.Title);
|
|
|
|
exception = ExceptionHelpers.SerializeAndDeserialize(exception);
|
|
|
|
Assert.Equal("CLI", exception.Message);
|
|
Assert.Equal("Code First Migrations Command Line Utility", exception.ArgumentHelp.Title);
|
|
}
|
|
|
|
[Fact]
|
|
public void Constructor_uses_given_ArgumentHelp_and_inner_exception_and_sets_up_serialization()
|
|
{
|
|
var innerException = new Exception("You are so exceptional!");
|
|
var exception =
|
|
new migrate::CmdLine.CommandLineException(
|
|
new migrate::CmdLine.CommandArgumentHelp(typeof(SomeCommandLineClass), "Look inside."), innerException);
|
|
|
|
Assert.Equal("Look inside.", exception.Message);
|
|
Assert.Same(innerException, exception.InnerException);
|
|
Assert.Equal("Code First Migrations Command Line Utility", exception.ArgumentHelp.Title);
|
|
|
|
exception = ExceptionHelpers.SerializeAndDeserialize(exception);
|
|
|
|
Assert.Equal("Look inside.", exception.Message);
|
|
Assert.Equal(innerException.Message, exception.InnerException.Message);
|
|
Assert.Equal("Code First Migrations Command Line Utility", exception.ArgumentHelp.Title);
|
|
}
|
|
|
|
[Fact]
|
|
public void ArgumentHelp_can_be_read_and_set()
|
|
{
|
|
var argHelp = new migrate::CmdLine.CommandArgumentHelp(typeof(SomeCommandLineClass));
|
|
Assert.Same(
|
|
argHelp, new migrate::CmdLine.CommandLineException("")
|
|
{
|
|
ArgumentHelp = argHelp
|
|
}.ArgumentHelp);
|
|
}
|
|
|
|
[migrate::CmdLine.CommandLineArgumentsAttribute(
|
|
Program = "migrate",
|
|
TitleResourceId = migrate::System.Data.Entity.Migrations.Console.Resources.EntityRes.MigrateTitle,
|
|
DescriptionResourceId = migrate::System.Data.Entity.Migrations.Console.Resources.EntityRes.MigrateDescription)]
|
|
public class SomeCommandLineClass
|
|
{
|
|
}
|
|
}
|
|
}
|