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" -----------^
Пожалуйста, мне действительно нужна помощь, я не знаю, что делать.