123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // Copyright (c) 2016 Daniel Oaks <daniel@danieloaks.net>
- // released under the MIT license
-
- package isupport
-
- import (
- "reflect"
- "testing"
- )
-
- func TestISUPPORT(t *testing.T) {
- // 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")
- err := tListLong.RegenerateCachedReply()
- if err != nil {
- t.Error(err)
- }
-
- longReplies := [][]string{
- {"1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D"},
- {"E", "F"},
- }
-
- if !reflect.DeepEqual(tListLong.CachedReply, longReplies) {
- t.Errorf("Multiple output replies did not match, got [%v]", longReplies)
- }
-
- // create first list
- tList1 := NewList()
- tList1.Add("SASL", "yes")
- tList1.Add("CASEMAPPING", "rfc1459-strict")
- tList1.Add("INVEX", "i")
- tList1.AddNoValue("EXTBAN")
- tList1.Add("RANDKILL", "whenever")
- err = tList1.RegenerateCachedReply()
- if err != nil {
- t.Error(err)
- }
-
- expected := [][]string{{"CASEMAPPING=rfc1459-strict", "EXTBAN", "INVEX=i", "RANDKILL=whenever", "SASL=yes"}}
- if !reflect.DeepEqual(tList1.CachedReply, expected) {
- t.Error("tList1's cached reply does not match expected cached reply")
- }
-
- // create second list
- tList2 := NewList()
- tList2.Add("SASL", "yes")
- tList2.Add("CASEMAPPING", "ascii")
- tList2.AddNoValue("INVEX")
- tList2.Add("EXTBAN", "TestBah")
- tList2.AddNoValue("STABLEKILL")
- err = tList2.RegenerateCachedReply()
- if err != nil {
- t.Error(err)
- }
-
- expected = [][]string{{"CASEMAPPING=ascii", "EXTBAN=TestBah", "INVEX", "SASL=yes", "STABLEKILL"}}
- 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"}}
- if !reflect.DeepEqual(actual, expected) {
- t.Error("difference reply does not match expected difference reply")
- }
- }
-
- func TestBadToken(t *testing.T) {
- list := NewList()
- list.Add("NETWORK", "Bad Network Name")
- list.Add("SASL", "yes")
- list.Add("CASEMAPPING", "rfc1459-strict")
- list.Add("INVEX", "i")
- list.AddNoValue("EXTBAN")
-
- err := list.RegenerateCachedReply()
- if err == nil {
- t.Error("isupport token generation should fail due to space in network name")
- }
-
- // should produce a list containing the other, valid params
- numParams := 0
- for _, tokenLine := range list.CachedReply {
- numParams += len(tokenLine)
- }
- if numParams != 4 {
- t.Errorf("expected the other 4 params to be generated, got %v", list.CachedReply)
- }
- }
|