diff --git a/irc/modes_test.go b/irc/modes_test.go new file mode 100644 index 00000000..930e9a56 --- /dev/null +++ b/irc/modes_test.go @@ -0,0 +1,36 @@ +// Copyright (c) 2017 Daniel Oaks +// released under the MIT license + +package irc + +import ( + "reflect" + "testing" +) + +func TestParseDefaultChannelModes(t *testing.T) { + nt := "+nt" + n := "+n" + empty := "" + tminusi := "+t -i" + + var parseTests = []struct { + raw *string + expected Modes + }{ + {&nt, Modes{NoOutside, OpOnlyTopic}}, + {&n, Modes{NoOutside}}, + {&empty, Modes{}}, + {&tminusi, Modes{OpOnlyTopic}}, + {nil, Modes{NoOutside, OpOnlyTopic}}, + } + + var config Config + for _, testcase := range parseTests { + config.Channels.DefaultModes = testcase.raw + result := ParseDefaultChannelModes(&config) + if !reflect.DeepEqual(result, testcase.expected) { + t.Errorf("expected modes %s, got %s", testcase.expected, result) + } + } +}