// 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)
		}
	}
}