IFormatProvider, ICustomFormatter

У меня есть одна ошибка с моим тестом NUnit.

У меня есть один класс C#, который содержит два интерфейса реализации: IFormatProvider, ICustomFormatter.

Мне нужно "Не изменяя класс Book, добавить дополнительное форматирование для объектов этого класса (любой класс, который не существует изначально)" моя задача.

У меня есть тест NUnit:

[TestCase("CustomFormat", ExpectedResult = "958-5-56197-676-5. Герберт Шилдт - C# 4.0. Полное руководство, Вильямс, 2015, 1056 pages, $60.00.")]
    public string Book_InputCustomFormat_NUnit(string format)
    {
        //Arrange
        Book bookCustomFormat = new Book("958-5-56197-676-5", "Герберт Шилдт", "C# 4.0. Полное руководство", "Вильямс", 2015, 1056, 60);

        //Act
        return string.Format(new CustomFormat(), format, bookCustomFormat);
    }

И у меня есть мой текущий класс:

public class CustomFormat : IFormatProvider, ICustomFormatter
{
    IFormatProvider parent;

    public CustomFormat()
        : this(CultureInfo.CurrentCulture)
    {
    }

    public CustomFormat(IFormatProvider parent)
    {
        this.parent = parent;
    }

    public object GetFormat(Type formatType)
    {
        if (formatType == typeof(ICustomFormatter))
        {
            return this;
        }
        return null; ;
    }

    public string Format(string format, object arg, IFormatProvider formatProvider)
    {
        if (!(arg is Book))
        {
            throw new Exception(nameof(arg));
        }

        if (format != "CustomFormat")
        {
            throw new Exception(nameof(format));
        }

        var book = arg as Book;

        switch (format.ToUpperInvariant())
        {
            case "CustomFormat": return $"{book.ISBN}. {book.Author} - {book.Title}, {book.Publishing}, {book.YearOfPublishing}, {book.CountOfPages} pages, {book.Price.ToString("C", formatProvider)}.";
        }

        throw new FormatException(nameof(format));

    }

}

НО, главная причина - мой результат теста NUnit.

Сообщение: ожидаемая длина строки 97, но было 12. Строки различаются с индексом 0. Ожидается: "958-5-56197-676-5. Герберт Шилдт - C# 4.0. Полное руководство..." Но было: "CustomFormat" -----------^

Пожалуйста, мне действительно нужна помощь, я не знаю, что делать.

0 ответов

Другие вопросы по тегам