package initMgr

import (
	"fmt"
	"testing"
)

func TestRegister(t *testing.T) {
	Register("first", 1, first)
	Register("second", 2, second)
	Register("third", 3, third)
	Register("fourth", 4, fourth)
}

func TestCallOne(t *testing.T) {
	name := "first"
	if err := CallOne(name); err != nil {
		t.Errorf("there should be no error, but now it has:%s", err)
	}
}

func TestCallAny(t *testing.T) {
	errList := CallAny("second", "third")
	if len(errList) != 1 {
		t.Errorf("there should be 1 error, but now:%d", len(errList))
	}
}

func TestCallAll(t *testing.T) {
	errList := CallAll()
	if len(errList) != 2 {
		t.Errorf("there should be 1 error, but now:%d", len(errList))
	}
}

func first() error {
	fmt.Println("first")
	return nil
}

func second() error {
	fmt.Println("second")
	return fmt.Errorf("the second error")
}

func third() error {
	fmt.Println("third")
	return nil
}

func fourth() error {
	fmt.Println("fourth")
	return fmt.Errorf("the fourth error")
}
