github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/dsref/rev_test.go (about)

     1  package dsref
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  )
     7  
     8  func TestParseRevs(t *testing.T) {
     9  	cases := []struct {
    10  		in  string
    11  		exp []*Rev
    12  		err string
    13  	}{
    14  		{"", []*Rev{}, ""},
    15  		{"body", []*Rev{{"bd", 1}}, ""},
    16  		{"md", []*Rev{{"md", 1}}, ""},
    17  		{"ds", []*Rev{{"ds", 1}}, ""},
    18  		{"rd", []*Rev{{"rd", 1}}, ""},
    19  		{"rm", []*Rev{{"rm", 1}}, ""},
    20  		{"1", []*Rev{{"ds", 1}}, ""},
    21  		{"2", []*Rev{{"ds", 2}}, ""},
    22  		{"3", []*Rev{{"ds", 3}}, ""},
    23  		{"all", []*Rev{{"ds", AllGenerations}}, ""},
    24  	}
    25  
    26  	for i, c := range cases {
    27  		got, err := ParseRevs(c.in)
    28  		if !(err == nil && c.err == "" || err != nil && err.Error() == c.err) {
    29  			t.Errorf("case %d error mismatch. expected: %s, got: %s", i, c.err, err)
    30  		}
    31  		if len(got) != len(c.exp) {
    32  			t.Errorf("case %d len mismatch. expected %d, got: %d", i, len(c.exp), len(got))
    33  		}
    34  
    35  		for j, exp := range c.exp {
    36  			if err := EnsureRevEqual(exp, got[j]); err != nil {
    37  				t.Errorf("case %d result %d mismatch: %s", i, j, err)
    38  			}
    39  		}
    40  	}
    41  }
    42  
    43  func EnsureRevEqual(a, b *Rev) error {
    44  	if a.Field != b.Field {
    45  		return fmt.Errorf("Field: %s != %s", a.Field, b.Field)
    46  	}
    47  	if a.Gen != b.Gen {
    48  		return fmt.Errorf("Gen: %d != %d", a.Gen, b.Gen)
    49  	}
    50  	return nil
    51  }