putEventAssertBlock

Constructs assert block deltastrings for an IRCEvent and writes them to an output range.

The deltastrings express the differences between the struct compared to its .init state.

version(AssertGeneration)
private pure @safe
void
putEventAssertBlock
(
Sink
)
(
auto ref Sink sink
,
const ref IRCEvent event
,
const uint indents
)

Parameters

sink Sink

Output buffer to write to.

event IRCEvent

IRCEvent to construct assert statements for.

indents uint

Number of tabs to indent the output by.

Examples

IRCEvent event;
Appender!(char[]) sink;
sink.putEventAssertBlock(event, 0);
    import lu.assert_ : assertMultilineEquals;
    import std.array : Appender;

    Appender!(char[]) sink;
    sink.reserve(1024);

    IRCClient client;
    IRCServer server;
    auto parser = IRCParser(client, server);

    immutable event = parser.toIRCEvent(":zorael!~NaN@2001:41d0:2:80b4:: PRIVMSG #flerrp :kameloso: 8ball");
    sink.putEventAssertBlock(event, 0);

    enum expected =
"{
    enum input = `:zorael!~NaN@2001:41d0:2:80b4:: PRIVMSG #flerrp :kameloso: 8ball`;
    immutable event = parser.toIRCEvent(input);

    with (event)
    {
        assert((type == IRCEvent.Type.CHAN), type.toString());
        assert((sender.nickname == \"zorael\"), sender.nickname);
        assert((sender.ident == \"~NaN\"), sender.ident);
        assert((sender.address == \"2001:41d0:2:80b4::\"), sender.address);
        assert((channel.name == \"#flerrp\"), channel.name);
        assert((content == \"kameloso: 8ball\"), content);
    }
}";

    assertMultilineEquals(expected, sink[]);