public override void RoundTripLocation() { Location expected = CreateLocation(); string json = JsonSerializer.Serialize(expected, DefaultContext.Location); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.Location), typeof(Location)); Location obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataWithPerTypeAttributeContext.Default).Location); VerifyLocation(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.Location); }
public override void RoundTripNumberTypes() { NumberTypes expected = CreateNumberTypes(); string json = JsonSerializer.Serialize(expected, DefaultContext.NumberTypes); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.NumberTypes), typeof(NumberTypes)); NumberTypes obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataWithPerTypeAttributeContext.Default).NumberTypes); VerifyNumberTypes(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.NumberTypes); }
public override void RoundTripEmptyPoco() { EmptyPoco expected = CreateEmptyPoco(); string json = JsonSerializer.Serialize(expected, DefaultContext.EmptyPoco); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.EmptyPoco), typeof(EmptyPoco)); EmptyPoco obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataWithPerTypeAttributeContext.Default).EmptyPoco); VerifyEmptyPoco(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.EmptyPoco); }
public override void RoundTripCollectionsDictionary() { WeatherForecastWithPOCOs expected = CreateWeatherForecastWithPOCOs(); string json = JsonSerializer.Serialize(expected, DefaultContext.WeatherForecastWithPOCOs); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.WeatherForecastWithPOCOs), typeof(WeatherForecastWithPOCOs)); WeatherForecastWithPOCOs obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataWithPerTypeAttributeContext.Default).WeatherForecastWithPOCOs); VerifyWeatherForecastWithPOCOs(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.WeatherForecastWithPOCOs); }
public override void RoundTripActiveOrUpcomingEvent() { ActiveOrUpcomingEvent expected = CreateActiveOrUpcomingEvent(); string json = JsonSerializer.Serialize(expected, DefaultContext.ActiveOrUpcomingEvent); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.ActiveOrUpcomingEvent), typeof(ActiveOrUpcomingEvent)); ActiveOrUpcomingEvent obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataWithPerTypeAttributeContext.Default).ActiveOrUpcomingEvent); VerifyActiveOrUpcomingEvent(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.ActiveOrUpcomingEvent); }
public override void RoundTripCampaignSummaryViewModel() { CampaignSummaryViewModel expected = CreateCampaignSummaryViewModel(); string json = JsonSerializer.Serialize(expected, DefaultContext.CampaignSummaryViewModel); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.CampaignSummaryViewModel), typeof(CampaignSummaryViewModel)); CampaignSummaryViewModel obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataWithPerTypeAttributeContext.Default).CampaignSummaryViewModel); VerifyCampaignSummaryViewModel(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.CampaignSummaryViewModel); }
public override void RoundTripIndexViewModel() { IndexViewModel expected = CreateIndexViewModel(); string json = JsonSerializer.Serialize(expected, DefaultContext.IndexViewModel); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Deserialize(json, DefaultContext.IndexViewModel), typeof(IndexViewModel)); IndexViewModel obj = JsonSerializer.Deserialize(json, ((ITestContext)MetadataContext.Default).IndexViewModel); VerifyIndexViewModel(expected, obj); AssertFastPathLogicCorrect(json, obj, DefaultContext.IndexViewModel); }
public static void SerializationFuncNotInvokedWhenNotSupported(JsonSerializerOptions options) { JsonMessage message = new(); // Per context implementation, NotImplementedException thrown because the options are compatible, hence the serialization func is invoked. Assert.Throws <NotImplementedException>(() => JsonSerializer.Serialize(message, JsonContext.Default.JsonMessage)); Assert.Throws <NotImplementedException>(() => JsonSerializer.Serialize(message, typeof(JsonMessage), JsonContext.Default)); // NotSupportedException thrown because // - the options are not compatible, hence the serialization func is not invoked. // - the serializer correctly tries to serialize based on property metadata, but we have not provided it in our implementation. JsonContext context = new(options); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Serialize(message, context.JsonMessage), typeof(JsonMessage)); JsonTestHelper.AssertThrows_PropMetadataInit(() => JsonSerializer.Serialize(message, typeof(JsonMessage), context), typeof(JsonMessage)); }