seekia/resources/imageFiles/imageFiles_test.go

99 lines
2.8 KiB
Go

// imageFiles provides functions to retrieve image files
// The image files are embedded in the binary
package imageFiles_test
import "seekia/resources/imageFiles"
import "seekia/internal/helpers"
import "seekia/internal/imagery"
import "seekia/internal/cryptography/blake3"
import "testing"
func TestEmojis(t *testing.T){
numberOfEmojis := 3631
// We make sure no duplicate emoji identifiers exist in the categories
foundIdentifiersMap := make(map[int]struct{})
categoryNamesList := imageFiles.GetEmojiCategoriesList()
for _, categoryName := range categoryNamesList{
emojisList, err := imageFiles.GetEmojisInCategoryList(categoryName)
if (err != nil) {
t.Fatalf("Failed to get emojis in category list: " + err.Error())
}
for _, emojiIdentifier := range emojisList{
if (emojiIdentifier < 1 || emojiIdentifier > numberOfEmojis){
emojiIdentifierString := helpers.ConvertIntToString(emojiIdentifier)
t.Fatalf("Invalid emoji identifier found in category " + categoryName + ": " + emojiIdentifierString)
}
_, exists := foundIdentifiersMap[emojiIdentifier]
if (exists == true){
emojiIdentifierString := helpers.ConvertIntToString(emojiIdentifier)
t.Fatalf("Duplicate emoji found in category " + categoryName + ": " + emojiIdentifierString)
}
foundIdentifiersMap[emojiIdentifier] = struct{}{}
}
}
// We use this map to make sure no file duplicates exist
fileHashesMap := make(map[string]struct{})
for i:=1; i <= numberOfEmojis; i++{
emojiFileBytes, err := imageFiles.GetEmojiFileBytesFromIdentifier(i)
if (err != nil) {
t.Fatalf("Failed to get emoji from identifier: " + err.Error())
}
fileHash, err := blake3.GetBlake3HashAsHexString(16, emojiFileBytes)
if (err != nil){
t.Fatalf("Failed to hash emoji file bytes: " + err.Error())
}
_, exists := fileHashesMap[fileHash]
if (exists == true){
emojiIdentifierString := helpers.ConvertIntToString(i)
t.Fatal("Duplicate emoji exists: " + emojiIdentifierString)
}
fileHashesMap[fileHash] = struct{}{}
// We make sure each emoji exists within a category
_, exists = foundIdentifiersMap[i]
if (exists == false){
emojiIdentifierString := helpers.ConvertIntToString(i)
t.Fatalf("Emoji is missing from categories list: " + emojiIdentifierString)
}
}
// Now we make sure svg reader can read all svgs
// This will take a while
for i:=1; i <= numberOfEmojis; i++{
emojiFileBytes, err := imageFiles.GetEmojiFileBytesFromIdentifier(i)
if (err != nil) {
t.Fatalf("Failed to get emoji from identifier: " + err.Error())
}
_, err = imagery.ConvertSVGImageFileBytesToGolangImage(emojiFileBytes)
if (err != nil){
emojiIdentifierString := helpers.ConvertIntToString(i)
t.Fatalf("Failed to convert emoji " + emojiIdentifierString + " to go image: " + err.Error())
}
}
}