public void TextPropertyAlt2Write() { using (var stream = new MemoryStream()) using (var writer = new BinaryWriter(stream)) { var text = new ArgumentFormatTextEntry(Alt2TextFlags) { SourceFormat = new BaseTextEntry(Alt2TextSourceFlags) { Key = Alt2TextKey, Value = Alt2TextValue } }; text.Arguments.Add(Alt2ArgumentFormat); var prop = new TextProperty(Alt2TextName) { Text = text }; prop.Serialize(writer, BuildVersion); Assert.AreEqual(111, prop.SerializedLength); CollectionAssert.AreEqual(Alt2TextBytes, stream.ToArray()); } }
public static TextEntry ParseTextEntry(BinaryReader reader, int buildVersion) { var flags = reader.ReadInt32(); var historyType = (ETextHistoryType)reader.ReadByte(); switch (historyType) { case ETextHistoryType.Base: { return(new BaseTextEntry(flags) { Namespace = reader.ReadLengthPrefixedString(), Key = reader.ReadLengthPrefixedString(), Value = reader.ReadLengthPrefixedString() }); } case ETextHistoryType.ArgumentFormat: { var result = new ArgumentFormatTextEntry(flags) { SourceFormat = (BaseTextEntry)ParseTextEntry(reader, buildVersion) }; var count = reader.ReadInt32(); for (var i = 0; i < count; i++) { result.Arguments.Add(new ArgumentFormat() { Name = reader.ReadLengthPrefixedString(), ValueType = (EFormatArgumentType)reader.ReadByte(), Value = ParseTextEntry(reader, buildVersion) }); } return(result); } case ETextHistoryType.None: { var entry = new NoneTextEntry(flags); if (buildVersion >= CultureInvariantChangeBuild) { entry.HasCultureInvariantString = reader.ReadInt32() == 1; if (entry.HasCultureInvariantString.Value) { entry.CultureInvariantString = reader.ReadLengthPrefixedString(); } } return(entry); } default: throw new NotImplementedException($"Unknown ETextHistoryType {historyType}"); } }