blob: ac1d1f34b02334e9a4af9b237226bcec3b75f2c8 [file] [log] [blame]
// Package scrap defines the scrap types and functions on them.
package scrap
import (
"sort"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestCreateScrapNodeNames_WithChildNodes_NamedViaBFSTraversal(t *testing.T) {
// It is required that createScrapNodeNames create unique node names
// in a repeatable way - i.e. the same node is always given the same name.
// This test verifies that createScrapNodeNames does a BFS traversal
// when naming scrap nodes.
root := scrapNode{
Children: []scrapNode{{}, {}},
}
nextNodeID := 1
createScrapNodeNames(&root, &nextNodeID)
assert.Equal(t, "3", root.Name)
require.Equal(t, 2, len(root.Children))
assert.Equal(t, "1", root.Children[0].Name)
assert.Equal(t, "2", root.Children[1].Name)
}
func TestGetImageURLs_WithChildNodes_NoDuplicates(t *testing.T) {
root := scrapNode{
Scrap: ScrapBody{
Type: SKSL,
SKSLMetaData: &SKSLMetaData{ImageURL: "/img/soccer.png"},
},
Children: []scrapNode{{
Scrap: ScrapBody{
Type: SKSL,
SKSLMetaData: &SKSLMetaData{ImageURL: "/img/mandrill.png"},
},
}, {Scrap: ScrapBody{
Type: SKSL,
SKSLMetaData: &SKSLMetaData{ImageURL: "/img/soccer.png"},
}}},
}
urls, err := root.getImageURLs()
require.NoError(t, err)
// getImageURLs can return the URLs in any order, so sort the returned
// slice for test comparision.
sort.Strings(urls)
expected := []string{
"https://shaders.skia.org/img/mandrill.png",
"https://shaders.skia.org/img/soccer.png",
}
require.Equal(t, expected, urls)
}