| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package sprig
- import (
- "strings"
- "testing"
- )
- func TestDict(t *testing.T) {
- tpl := `{{$d := dict 1 2 "three" "four" 5}}{{range $k, $v := $d}}{{$k}}{{$v}}{{end}}`
- out, err := runRaw(tpl, nil)
- if err != nil {
- t.Error(err)
- }
- if len(out) != 12 {
- t.Errorf("Expected length 12, got %d", len(out))
- }
- // dict does not guarantee ordering because it is backed by a map.
- if !strings.Contains(out, "12") {
- t.Error("Expected grouping 12")
- }
- if !strings.Contains(out, "threefour") {
- t.Error("Expected grouping threefour")
- }
- if !strings.Contains(out, "5") {
- t.Error("Expected 5")
- }
- tpl = `{{$t := dict "I" "shot" "the" "albatross"}}{{$t.the}} {{$t.I}}`
- if err := runt(tpl, "albatross shot"); err != nil {
- t.Error(err)
- }
- }
- func TestUnset(t *testing.T) {
- tpl := `{{- $d := dict "one" 1 "two" 222222 -}}
- {{- $_ := unset $d "two" -}}
- {{- range $k, $v := $d}}{{$k}}{{$v}}{{- end -}}
- `
- expect := "one1"
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- func TestHasKey(t *testing.T) {
- tpl := `{{- $d := dict "one" 1 "two" 222222 -}}
- {{- if hasKey $d "one" -}}1{{- end -}}
- `
- expect := "1"
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- func TestPluck(t *testing.T) {
- tpl := `
- {{- $d := dict "one" 1 "two" 222222 -}}
- {{- $d2 := dict "one" 1 "two" 33333 -}}
- {{- $d3 := dict "one" 1 -}}
- {{- $d4 := dict "one" 1 "two" 4444 -}}
- {{- pluck "two" $d $d2 $d3 $d4 -}}
- `
- expect := "[222222 33333 4444]"
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- func TestKeys(t *testing.T) {
- tests := map[string]string{
- `{{ dict "foo" 1 "bar" 2 | keys | sortAlpha }}`: "[bar foo]",
- `{{ dict | keys }}`: "[]",
- `{{ keys (dict "foo" 1) (dict "bar" 2) (dict "bar" 3) | uniq | sortAlpha }}`: "[bar foo]",
- }
- for tpl, expect := range tests {
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- }
- func TestPick(t *testing.T) {
- tests := map[string]string{
- `{{- $d := dict "one" 1 "two" 222222 }}{{ pick $d "two" | len -}}`: "1",
- `{{- $d := dict "one" 1 "two" 222222 }}{{ pick $d "two" -}}`: "map[two:222222]",
- `{{- $d := dict "one" 1 "two" 222222 }}{{ pick $d "one" "two" | len -}}`: "2",
- `{{- $d := dict "one" 1 "two" 222222 }}{{ pick $d "one" "two" "three" | len -}}`: "2",
- `{{- $d := dict }}{{ pick $d "two" | len -}}`: "0",
- }
- for tpl, expect := range tests {
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- }
- func TestOmit(t *testing.T) {
- tests := map[string]string{
- `{{- $d := dict "one" 1 "two" 222222 }}{{ omit $d "one" | len -}}`: "1",
- `{{- $d := dict "one" 1 "two" 222222 }}{{ omit $d "one" -}}`: "map[two:222222]",
- `{{- $d := dict "one" 1 "two" 222222 }}{{ omit $d "one" "two" | len -}}`: "0",
- `{{- $d := dict "one" 1 "two" 222222 }}{{ omit $d "two" "three" | len -}}`: "1",
- `{{- $d := dict }}{{ omit $d "two" | len -}}`: "0",
- }
- for tpl, expect := range tests {
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- }
- func TestGet(t *testing.T) {
- tests := map[string]string{
- `{{- $d := dict "one" 1 }}{{ get $d "one" -}}`: "1",
- `{{- $d := dict "one" 1 "two" "2" }}{{ get $d "two" -}}`: "2",
- `{{- $d := dict }}{{ get $d "two" -}}`: "",
- }
- for tpl, expect := range tests {
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- }
- func TestSet(t *testing.T) {
- tpl := `{{- $d := dict "one" 1 "two" 222222 -}}
- {{- $_ := set $d "two" 2 -}}
- {{- $_ := set $d "three" 3 -}}
- {{- if hasKey $d "one" -}}{{$d.one}}{{- end -}}
- {{- if hasKey $d "two" -}}{{$d.two}}{{- end -}}
- {{- if hasKey $d "three" -}}{{$d.three}}{{- end -}}
- `
- expect := "123"
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- func TestValues(t *testing.T) {
- tests := map[string]string{
- `{{- $d := dict "a" 1 "b" 2 }}{{ values $d | sortAlpha | join "," }}`: "1,2",
- `{{- $d := dict "a" "first" "b" 2 }}{{ values $d | sortAlpha | join "," }}`: "2,first",
- }
- for tpl, expect := range tests {
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- }
- func TestDig(t *testing.T) {
- tests := map[string]string{
- `{{- $d := dict "a" (dict "b" (dict "c" 1)) }}{{ dig "a" "b" "c" "" $d }}`: "1",
- `{{- $d := dict "a" (dict "b" (dict "c" 1)) }}{{ dig "a" "b" "z" "2" $d }}`: "2",
- `{{ dict "a" 1 | dig "a" "" }}`: "1",
- `{{ dict "a" 1 | dig "z" "2" }}`: "2",
- }
- for tpl, expect := range tests {
- if err := runt(tpl, expect); err != nil {
- t.Error(err)
- }
- }
- }
|