import virc.common : User; import std.range : only, takeNone; { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3", "~cooluser", "coolhost", "cooluser", "coolaccount", "Cool User"), "cuhnar"); assert(reply.get.channel.get == "#ircv3"); assert(reply.get.ident.get == "~cooluser"); assert(reply.get.host.get == "coolhost"); assert(reply.get.nick.get == "cooluser"); assert(reply.get.account.get == "coolaccount"); assert(reply.get.realname.get == "Cool User"); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3", "~cooluser", "coolhost", "cooluser", "0", "Cool User"), "cuhnar"); assert(reply.get.channel.get == "#ircv3"); assert(reply.get.ident.get == "~cooluser"); assert(reply.get.host.get == "coolhost"); assert(reply.get.nick.get == "cooluser"); assert(reply.get.account.isNull); assert(reply.get.realname.get == "Cool User"); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3", "~cooluser", "coolhost", "cooluser", "coolaccount"), "cuhnar"); assert(reply.isNull); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3", "~cooluser", "coolhost", "cooluser"), "cuhnar"); assert(reply.isNull); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3", "~cooluser", "coolhost"), "cuhnar"); assert(reply.isNull); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3", "~cooluser"), "cuhnar"); assert(reply.isNull); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick", "#ircv3"), "cuhnar"); assert(reply.isNull); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(only("mynick"), "cuhnar"); assert(reply.isNull); } { immutable reply = parseNumeric!(Numeric.RPL_WHOSPCRPL)(takeNone(only("")), "cuhnar"); assert(reply.isNull); }
Parser for RPL_WHOSPCRPL
Format is 354 <client> [token] [channel] [user] [ip] [host] [server] [nick] [flags] [hopcount] [idle] [account] [oplevel] [:realname]