public static void Write() { using var writer = new StrWriter(' '); writer.PutString("hello"); writer.PutString("world"); writer.PutDouble(5.6); writer.PutInt(255); var built = writer.ToString(); Assert.Equal(c_target, built); }
public static void RoundTrip() { const char separator = '/'; var input = new GeneratedClass { m_int = int.MaxValue, m_double = 3.14, m_string = "hello world", m_spanStr = new SpanStr("span string") }; var writer = new StrWriter(separator); input.Serialize(ref writer); var builtString = writer.ToString(); bool exceptionThrown = false; try { writer.PutRaw('\0'); Assert.True(false); // lol } catch (ObjectDisposedException) { exceptionThrown = true; // good } Assert.True(exceptionThrown); var reader = new StrReader(builtString.AsSpan(), separator); var output = new GeneratedClass(); output.Deserialize(ref reader); Assert.Equal(input.m_int, output.m_int); Assert.Equal(input.m_double, output.m_double); Assert.Equal(input.m_string, output.m_string); Assert.Equal(input.m_spanStr.ToString(), output.m_spanStr.ToString()); }