github.com/xuyutom/docker@v1.6.0/pkg/parsers/filters/parse_test.go (about)

     1  package filters
     2  
     3  import (
     4  	"sort"
     5  	"testing"
     6  )
     7  
     8  func TestParseArgs(t *testing.T) {
     9  	// equivalent of `docker ps -f 'created=today' -f 'image.name=ubuntu*' -f 'image.name=*untu'`
    10  	flagArgs := []string{
    11  		"created=today",
    12  		"image.name=ubuntu*",
    13  		"image.name=*untu",
    14  	}
    15  	var (
    16  		args = Args{}
    17  		err  error
    18  	)
    19  	for i := range flagArgs {
    20  		args, err = ParseFlag(flagArgs[i], args)
    21  		if err != nil {
    22  			t.Errorf("failed to parse %s: %s", flagArgs[i], err)
    23  		}
    24  	}
    25  	if len(args["created"]) != 1 {
    26  		t.Errorf("failed to set this arg")
    27  	}
    28  	if len(args["image.name"]) != 2 {
    29  		t.Errorf("the args should have collapsed")
    30  	}
    31  }
    32  
    33  func TestParam(t *testing.T) {
    34  	a := Args{
    35  		"created":    []string{"today"},
    36  		"image.name": []string{"ubuntu*", "*untu"},
    37  	}
    38  
    39  	v, err := ToParam(a)
    40  	if err != nil {
    41  		t.Errorf("failed to marshal the filters: %s", err)
    42  	}
    43  	v1, err := FromParam(v)
    44  	if err != nil {
    45  		t.Errorf("%s", err)
    46  	}
    47  	for key, vals := range v1 {
    48  		if _, ok := a[key]; !ok {
    49  			t.Errorf("could not find key %s in original set", key)
    50  		}
    51  		sort.Strings(vals)
    52  		sort.Strings(a[key])
    53  		if len(vals) != len(a[key]) {
    54  			t.Errorf("value lengths ought to match")
    55  			continue
    56  		}
    57  		for i := range vals {
    58  			if vals[i] != a[key][i] {
    59  				t.Errorf("expected %s, but got %s", a[key][i], vals[i])
    60  			}
    61  		}
    62  	}
    63  }
    64  
    65  func TestEmpty(t *testing.T) {
    66  	a := Args{}
    67  	v, err := ToParam(a)
    68  	if err != nil {
    69  		t.Errorf("failed to marshal the filters: %s", err)
    70  	}
    71  	v1, err := FromParam(v)
    72  	if err != nil {
    73  		t.Errorf("%s", err)
    74  	}
    75  	if len(a) != len(v1) {
    76  		t.Errorf("these should both be empty sets")
    77  	}
    78  }