public override AbiDefinition ReadJson( JsonReader reader, Type objectType, AbiDefinition existingValue, bool hasExistingValue, JsonSerializer serializer) { JToken topLevelToken = JToken.Load(reader); existingValue ??= new AbiDefinition(); JToken abiToken; if (topLevelToken.Type == JTokenType.Object) { abiToken = topLevelToken["abi"]; byte[] bytecode = Bytes.FromHexString(topLevelToken["bytecode"]?.Value <string>() ?? string.Empty); byte[] deployedBytecode = Bytes.FromHexString(topLevelToken["deployedBytecode"]?.Value <string>() ?? string.Empty); existingValue.SetBytecode(bytecode); existingValue.SetDeployedBytecode(deployedBytecode); } else { abiToken = topLevelToken; } foreach (var definitionToken in abiToken?.Children() ?? Enumerable.Empty <JToken>()) { string name = definitionToken[_nameTokenName]?.Value <string>(); JToken typeToken = definitionToken[_typeTokenName]; if (typeToken == null) { continue; } AbiDescriptionType type = FastEnum.Parse <AbiDescriptionType>(typeToken.Value <string>(), true); if (type == AbiDescriptionType.Event) { AbiEventDescription abiEvent = new(); serializer.Populate(definitionToken.CreateReader(), abiEvent); existingValue.Add(abiEvent); } else if (type == AbiDescriptionType.Error) { AbiErrorDescription abiError = new(); serializer.Populate(definitionToken.CreateReader(), abiError); existingValue.Add(abiError); } else { AbiFunctionDescription abiFunction = new(); serializer.Populate(definitionToken.CreateReader(), abiFunction); existingValue.Add(abiFunction); } } return(existingValue); }
public void ParseIgnoreCase() => FluentActions.Invoking(() => FastEnum.Parse <TEnum>("ABCDE", true)).Should().Throw <ArgumentException>();