public void CanDeSerialize() { var session = new DeserializationSession() { ParsedValue = new SDPLib.SDP() }; var version = SessionNameSerializer.Instance.ReadValue("s=Gamarjoba".ToByteArray(), session); Assert.Equal("Gamarjoba".ToByteArray(), session.ParsedValue.SessionName); }
public void CanDeSerialize() { var testUrl = "https://github.com/tvildo"; var session = new DeserializationSession() { ParsedValue = new SDPLib.SDP() }; var version = UriSerializer.Instance.ReadValue($"u={testUrl}".ToByteArray(), session); Assert.Equal(testUrl, session.ParsedValue.Uri.AbsoluteUri); }
public void CanDeSerialize() { var testEmail = "[email protected] (Jane Doe)"; var session = new DeserializationSession() { ParsedValue = new SDPLib.SDP() }; var version = EmailAddressSerializer.Instance.ReadValue($"e={testEmail}".ToByteArray(), session); Assert.Equal(testEmail, session.ParsedValue.EmailNumbers.First()); }
public void CanDeSerialize() { var testPhone = "+1 617 555-6011"; var session = new DeserializationSession() { ParsedValue = new SDPLib.SDP() }; var version = PhoneNumberSerializer.Instance.ReadValue($"p={testPhone}".ToByteArray(), session); Assert.Equal(testPhone, session.ParsedValue.PhoneNumbers.First()); }
public static async Task <SDP> ReadSDP(PipeReader reader) { var session = new DeserializationSession(); DeserializationState stateFn = Serializer.Instance.ReadValue; while (true) { ReadResult result = await reader.ReadAsync(); ReadOnlySequence <byte> buffer = result.Buffer; SequencePosition? position = null; do { // Look for a EOL in the buffer position = buffer.PositionOf(ByteLF); if (position != null) { stateFn = stateFn(TrimSDPLineCR(buffer.Slice(0, position.Value)), session); buffer = buffer.Slice(buffer.GetPosition(1, position.Value)); } }while (position != null); reader.AdvanceTo(buffer.Start, buffer.End); if (result.IsCompleted) { if (!buffer.IsEmpty) { stateFn = stateFn(buffer.Slice(buffer.Start, buffer.End).ToSpan(), session); } break; } } EnsureWasParsed(stateFn); // Mark the PipeReader as complete reader.Complete(); return(session.ParsedValue); }
public static SDP ReadSDP(ReadOnlySpan <byte> data) { var session = new DeserializationSession(); DeserializationState stateFn = Serializer.Instance.ReadValue; var remainingSlice = data; int position = -1; while ((position = remainingSlice.IndexOf(ByteLF)) != -1) { stateFn = stateFn(TrimSDPLineCR(remainingSlice.Slice(0, position)), session); remainingSlice = remainingSlice.Slice(position + 1); } if (remainingSlice.Length > 0) { stateFn = stateFn(remainingSlice, session); } EnsureWasParsed(stateFn); return(session.ParsedValue); }
public void CanDeSerialize() { var field = $"o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5".ToByteArray(); var session = new DeserializationSession() { ParsedValue = new SDP() }; var stateFn = OriginSerializer.Instance.ReadValue(field, session); var value = new Origin() { UserName = "******", SessionId = 2890844526, SessionVersion = 2890842807, Nettype = "IN", AddrType = "IP4", UnicastAddress = "10.47.16.5" }; DeserializationState nextStateFn = SessionNameSerializer.Instance.ReadValue; Assert.Equal(stateFn, nextStateFn); Assert.True(CheckIfOriginSareSame(session.ParsedValue.Origin, value)); }