100 lines
2.8 KiB
Go
100 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())
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|