public void StringMemberInterning() { ClassOfStrings before = new ClassOfStrings { InternedString = "abc", OrdinaryString = "def" }; ClassOfStrings after1 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, MessagePackSerializerOptions.Standard), MessagePackSerializerOptions.Standard); ClassOfStrings after2 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, MessagePackSerializerOptions.Standard), MessagePackSerializerOptions.Standard); Assert.Equal(after1.InternedString, after2.InternedString); Assert.Equal(after1.OrdinaryString, after2.OrdinaryString); Assert.Same(after1.InternedString, after2.InternedString); Assert.NotSame(after1.OrdinaryString, after2.OrdinaryString); }
public void StringMemberInterning_CustomResolver() { var options = MessagePackSerializerOptions.Standard.WithResolver( CompositeResolver.Create( new IMessagePackFormatter[] { new StringInterningFormatter() }, new IFormatterResolver[] { StandardResolver.Instance })); ClassOfStrings before = new ClassOfStrings { InternedString = "abc", OrdinaryString = "def" }; ClassOfStrings after1 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, options), options); ClassOfStrings after2 = MessagePackSerializer.Deserialize <ClassOfStrings>(MessagePackSerializer.Serialize(before, options), options); Assert.Equal(after1.InternedString, after2.InternedString); Assert.Equal(after1.OrdinaryString, after2.OrdinaryString); Assert.Same(after1.InternedString, after2.InternedString); Assert.Same(after1.OrdinaryString, after2.OrdinaryString); }