dotnet/runtime

Assert async-serialized content of dictionaries with ReferenceHandling.Preserve active

开放

#35,611 创建于 2020年4月29日

 (5 条评论) (0 个反应) (0 位负责人)C# (5,445 个派生)batch import
area-System.Text.Jsonbacklog-cleanup-candidatehelp wantedno-recent-activitytest-enhancement

仓库指标

星标
 (17,886 个星标)
PR 合并指标
 (平均合并 12天 11小时) (30 天内合并 661 个 PR)

描述

Following up on https://github.com/dotnet/runtime/pull/35046#discussion_r417063819:

In async tests for collections, we don't assert the result of serializing dictionaries with ReferenceHandling.Preserve active. This is because across multiple serialization operations, ref and id and metadata IDs may not be the same due to non-deterministic order of elements returned by GetEnumerator() for dictionaries. It is thus hard to compare the serialized results:

https://github.com/dotnet/runtime/blob/0fa0b905f65e57f5eb64dd556a07ead522930c8a/src/libraries/System.Text.Json/tests/Serialization/Stream.Collections.cs#L98-L102

We can include these types by overriding the GetEnumerator method for these collections to return a deterministic order, and/or using types with deterministic order e.g. OrderedDictionary, SortedDictionary.

贡献者指南