From ff21d16a51312f5bee93c68b6134716e9b2e6c28 Mon Sep 17 00:00:00 2001 From: "Tristan B. Velloza Kildaire" Date: Wed, 22 Nov 2023 00:13:05 +0200 Subject: [PATCH] ChannelMessage - Added `setFrom(string from)` - Made this validatable Channels (unittests) - Added some validation testing --- source/davinci/c2s/channels.d | 47 ++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/source/davinci/c2s/channels.d b/source/davinci/c2s/channels.d index 00c97d5..706923b 100644 --- a/source/davinci/c2s/channels.d +++ b/source/davinci/c2s/channels.d @@ -66,8 +66,10 @@ public final class ChannelEnumerateReply : Command } } +import davinci.base.components : Validatable; + // NOTE: Can be used for reception AND request (sending) -public final class ChannelMessage : Command +public final class ChannelMessage : Command, Validatable { private string[] to; private string from; @@ -87,6 +89,11 @@ public final class ChannelMessage : Command this.data = data; } + public void setFrom(string from) + { + this.from = from; + } + public void setTo(string[] to) { foreach(string curTo; to) @@ -140,9 +147,47 @@ public final class ChannelMessage : Command { return getStatus() == Status.GOOD; } + + public bool validate(ref string reason) + { + // If this is a request + if(this.status == Status.UNSET) + { + if(to.length > 0 && from.length > 0) + { + return true; + } + else + { + reason = "Recipients list is empty or the from field is empty"; + return false; + } + } + + // TODO: Implement the rest + return false; + } } +unittest +{ + string reason; + + // Valid case of a CHANNEL_SEND_MESSAGE + ChannelMessage chanMesg = new ChannelMessage(); + chanMesg.setTo(["deavmi", "gustav"]); + chanMesg.setFrom("testUser"); + assert(chanMesg.validate(reason)); + + // In-valid case of a CHANNEL_SEND_MESSAGE + chanMesg = new ChannelMessage(); + chanMesg.setTo(cast(string[])[]); + chanMesg.setFrom("testUser"); + assert(!chanMesg.validate(reason)); + assert(reason.length > 0); +} + public enum MembershipMode { JOIN,