dotnet/runtime

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

Open

#35.611 geöffnet am 29. Apr. 2020

Auf GitHub ansehen
 (5 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (5.445 Forks)batch import
area-System.Text.Jsonbacklog-cleanup-candidatehelp wantedno-recent-activitytest-enhancement

Repository-Metriken

Stars
 (17.886 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 12T 11h) (661 gemergte PRs in 30 T)

Beschreibung

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.

Contributor Guide