75 lines
1.9 KiB
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{}{}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|