Обеспечьте использование Utf8JsonReader.ValueSequence в целях тестирования.C#

Место общения программистов C#
Anonymous
Обеспечьте использование Utf8JsonReader.ValueSequence в целях тестирования.

Сообщение Anonymous »

Я написал свой собственный BigIntegerConverter для сериализации/десериализации JSON (.Net System.Text.Json)
В методе Read я проверил, используется ли ValueSequence

Код: Выделить всё

...
string stringValue;
if (reader.HasValueSequence)
{
stringValue = Encoding.UTF8.GetString(reader.ValueSequence);
}
else
{
stringValue = Encoding.UTF8.GetString(reader.ValueSpan);
}

if (BigInteger.TryParse(stringValue, CultureInfo.InvariantCulture, out var result))
{
return result;
}
...
Теперь я хочу протестировать этот код, но пока мне удается добраться только до дерева else. Основываясь на документации, я предположил, что ValueSequence будет использоваться, если данные станут достаточно большими.
Однако я уже тестировал BigIntegers размером с BigInteger.Pow(new BigInteger(long.MaxValue), 1234); и по-прежнему не могу использовать ValueSequence.
Я что-то не понял?
Есть ли способ заставить использовать ValueSqeuence в целях тестирования?Мой тестовый пример выглядит так

Код: Выделить всё

[Theory]
[MemberData(nameof(GetNotNullTestData))]
public void Read_EntityWithNotNullableBigInteger(string name, BigInteger expected, string value)
{
// Arrange
var json = $$"""{"Name":"{{name}}","NotNullableValue":{{value}}}""";
// Act
var result = JsonSerializer.Deserialize(json, _options);
// Assert
Assert.NotNull(result);
Assert.Equal(name, result.Name);
Assert.Equal(expected, result.NotNullableValue);
}
С уважением
Майкл

Подробнее здесь: https://stackoverflow.com/questions/787 ... t-purposes

Вернуться в «C#»