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