2017-07-30 14:42:37 +02:00
|
|
|
// Copyright (c) 2016 Daniel Oaks <daniel@danieloaks.net>
|
|
|
|
// released under the MIT license
|
|
|
|
|
2017-10-05 15:39:57 +02:00
|
|
|
package isupport
|
2017-07-30 14:42:37 +02:00
|
|
|
|
|
|
|
import (
|
|
|
|
"reflect"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestISUPPORT(t *testing.T) {
|
2017-10-07 14:19:37 +02:00
|
|
|
// test multiple output replies
|
|
|
|
tListLong := NewList()
|
|
|
|
tListLong.AddNoValue("1")
|
|
|
|
tListLong.AddNoValue("2")
|
|
|
|
tListLong.AddNoValue("3")
|
|
|
|
tListLong.AddNoValue("4")
|
|
|
|
tListLong.AddNoValue("5")
|
|
|
|
tListLong.AddNoValue("6")
|
|
|
|
tListLong.AddNoValue("7")
|
|
|
|
tListLong.AddNoValue("8")
|
|
|
|
tListLong.AddNoValue("9")
|
|
|
|
tListLong.AddNoValue("A")
|
|
|
|
tListLong.AddNoValue("B")
|
|
|
|
tListLong.AddNoValue("C")
|
|
|
|
tListLong.AddNoValue("D")
|
|
|
|
tListLong.AddNoValue("E")
|
|
|
|
tListLong.AddNoValue("F")
|
|
|
|
tListLong.RegenerateCachedReply()
|
|
|
|
|
|
|
|
longReplies := [][]string{
|
|
|
|
{"1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "are supported by this server"},
|
|
|
|
{"E", "F", "are supported by this server"},
|
|
|
|
}
|
|
|
|
|
|
|
|
if !reflect.DeepEqual(tListLong.CachedReply, longReplies) {
|
|
|
|
t.Errorf("Multiple output replies did not match, got [%v]", longReplies)
|
|
|
|
}
|
|
|
|
|
2017-07-30 14:42:37 +02:00
|
|
|
// create first list
|
2017-10-05 15:39:57 +02:00
|
|
|
tList1 := NewList()
|
2017-07-30 14:42:37 +02:00
|
|
|
tList1.Add("SASL", "yes")
|
|
|
|
tList1.Add("CASEMAPPING", "rfc1459-strict")
|
|
|
|
tList1.Add("INVEX", "i")
|
|
|
|
tList1.AddNoValue("EXTBAN")
|
|
|
|
tList1.Add("RANDKILL", "whenever")
|
|
|
|
tList1.RegenerateCachedReply()
|
|
|
|
|
|
|
|
expected := [][]string{{"CASEMAPPING=rfc1459-strict", "EXTBAN", "INVEX=i", "RANDKILL=whenever", "SASL=yes", "are supported by this server"}}
|
|
|
|
if !reflect.DeepEqual(tList1.CachedReply, expected) {
|
|
|
|
t.Error("tList1's cached reply does not match expected cached reply")
|
|
|
|
}
|
|
|
|
|
|
|
|
// create second list
|
2017-10-05 15:39:57 +02:00
|
|
|
tList2 := NewList()
|
2017-07-30 14:42:37 +02:00
|
|
|
tList2.Add("SASL", "yes")
|
|
|
|
tList2.Add("CASEMAPPING", "ascii")
|
|
|
|
tList2.AddNoValue("INVEX")
|
|
|
|
tList2.Add("EXTBAN", "TestBah")
|
|
|
|
tList2.AddNoValue("STABLEKILL")
|
|
|
|
tList2.RegenerateCachedReply()
|
|
|
|
|
|
|
|
expected = [][]string{{"CASEMAPPING=ascii", "EXTBAN=TestBah", "INVEX", "SASL=yes", "STABLEKILL", "are supported by this server"}}
|
|
|
|
if !reflect.DeepEqual(tList2.CachedReply, expected) {
|
|
|
|
t.Error("tList2's cached reply does not match expected cached reply")
|
|
|
|
}
|
|
|
|
|
|
|
|
// compare lists
|
|
|
|
actual := tList1.GetDifference(tList2)
|
|
|
|
expected = [][]string{{"-RANDKILL", "CASEMAPPING=ascii", "EXTBAN=TestBah", "INVEX", "STABLEKILL", "are supported by this server"}}
|
|
|
|
if !reflect.DeepEqual(actual, expected) {
|
|
|
|
t.Error("difference reply does not match expected difference reply")
|
|
|
|
}
|
|
|
|
}
|