package chat

import (
	"testing"

	"github.com/shazow/ssh-chat/chat/message"
	"github.com/shazow/ssh-chat/set"
)

func TestSet(t *testing.T) {
	var err error
	s := set.New()
	u := message.NewUser(message.SimpleID("foo"))

	if s.In(u.ID()) {
		t.Errorf("Set should be empty.")
	}

	err = s.Add(set.Itemize(u.ID(), u))
	if err != nil {
		t.Error(err)
	}

	if !s.In(u.ID()) {
		t.Errorf("Set should contain user.")
	}

	u2 := message.NewUser(message.SimpleID("bar"))
	err = s.Add(set.Itemize(u2.ID(), u2))
	if err != nil {
		t.Error(err)
	}

	err = s.Add(set.Itemize(u2.ID(), u2))
	if err != set.ErrCollision {
		t.Error(err)
	}

	size := s.Len()
	if size != 2 {
		t.Errorf("Set wrong size: %d (expected %d)", size, 2)
	}
}