package namesgenerator import ( "testing" ) type FalseChecker struct{} func (n *FalseChecker) Exists(name string) bool { return false } type TrueChecker struct{} func (n *TrueChecker) Exists(name string) bool { return true } func TestGenerateRandomName(t *testing.T) { if _, err := GenerateRandomName(&FalseChecker{}); err != nil { t.Error(err) } if _, err := GenerateRandomName(&TrueChecker{}); err == nil { t.Error("An error was expected") } } // Make sure the generated names are awesome func TestGenerateAwesomeNames(t *testing.T) { name, err := GenerateRandomName(&FalseChecker{}) if err != nil { t.Error(err) } if !isAwesome(name) { t.Fatalf("Generated name '%s' is not awesome.", name) } } // To be awesome, a container name must involve cool inventors, be easy to remember, // be at least mildly funny, and always be politically correct for enterprise adoption. func isAwesome(name string) bool { coolInventorNames := true easyToRemember := true mildlyFunnyOnOccasion := true politicallyCorrect := true return coolInventorNames && easyToRemember && mildlyFunnyOnOccasion && politicallyCorrect }