seekia/resources/worldLanguages/worldLanguages_test.go

75 lines
1.9 KiB
Go

package worldLanguages_test
import "testing"
import "seekia/resources/worldLanguages"
import "seekia/internal/helpers"
import "strings"
func TestWorldLanguages(t *testing.T){
err := worldLanguages.InitializeWorldLanguageVariables()
if (err != nil){
t.Fatalf("Failed to initialize worldLanguageVariables: " + err.Error())
}
// We must check to make sure no identifier or name collisions exist
languageIdentifiersMap := make(map[int]struct{})
languageNamesMap := make(map[string]struct{})
worldLanguageObjectsList, err := worldLanguages.GetWorldLanguageObjectsList()
if (err != nil){
t.Fatalf("Failed to get WorldLanguageObjectsList: " + err.Error())
}
for _, languageObject := range worldLanguageObjectsList{
languageIdentifier := languageObject.Identifier
languageNamesList := languageObject.NamesList
_, exists := languageIdentifiersMap[languageIdentifier]
if (exists == true){
languageIdentifierString := helpers.ConvertIntToString(languageIdentifier)
t.Fatalf("Language identifier duplicate exists: " + languageIdentifierString)
}
languageIdentifiersMap[languageIdentifier] = struct{}{}
if (len(languageNamesList) == 0){
t.Fatalf("Language contains empty names list.")
}
for _, languageName := range languageNamesList{
// Each name cannot contain "+&" or ":"
// Each name cannot be greater than 30 bytes
if (len(languageName) > 30){
t.Fatalf("Language name is too long: " + languageName)
}
stringFound := strings.Contains(languageName, "+&")
if (stringFound == true){
t.Fatalf("Invalid language name found: " + languageName)
}
stringFound = strings.Contains(languageName, "$")
if (stringFound == true){
t.Fatalf("Invalid language name found: " + languageName)
}
_, exists := languageNamesMap[languageName]
if (exists == true){
t.Fatalf("Language name duplicate exists: " + languageName)
}
languageNamesMap[languageName] = struct{}{}
}
}
}