github.com/pachyderm/pachyderm@v1.13.4/src/server/pkg/dag/dag_test.go (about)

     1  package dag
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/pachyderm/pachyderm/src/client/pkg/require"
     7  )
     8  
     9  func TestLine(t *testing.T) {
    10  	d := NewDAG(map[string][]string{
    11  		"1": {},
    12  		"2": {"1"},
    13  		"3": {"2"},
    14  		"4": {"3"},
    15  	})
    16  	require.Equal(t, []string{"1", "2", "3", "4"}, d.Sorted())
    17  	require.Equal(t, []string{"1", "2", "3", "4"}, d.Ancestors("4", nil))
    18  	require.Equal(t, []string{"3", "4"}, d.Ancestors("4", []string{"2"}))
    19  	require.Equal(t, []string{"1", "2"}, d.Ancestors("2", nil))
    20  	require.Equal(t, []string{"1", "2", "3", "4"}, d.Descendants("1", nil))
    21  	require.Equal(t, []string{"3", "4"}, d.Descendants("3", nil))
    22  	require.Equal(t, []string{"1", "2"}, d.Descendants("1", []string{"3"}))
    23  	require.Equal(t, []string{"4"}, d.Leaves())
    24  	require.Equal(t, 0, len(d.Ghosts()))
    25  }
    26  
    27  func TestDiamond(t *testing.T) {
    28  	d := NewDAG(map[string][]string{
    29  		"1": {},
    30  		"2": {"1"},
    31  		"3": {"1"},
    32  		"4": {"2", "3"},
    33  	})
    34  	require.EqualOneOf(
    35  		t,
    36  		[]interface{}{
    37  			[]string{"1", "2", "3", "4"},
    38  			[]string{"1", "3", "2", "4"},
    39  		},
    40  		d.Sorted(),
    41  	)
    42  	require.EqualOneOf(
    43  		t,
    44  		[]interface{}{
    45  			[]string{"1", "2", "3", "4"},
    46  			[]string{"1", "3", "2", "4"},
    47  		},
    48  		d.Ancestors("4", nil),
    49  	)
    50  	require.EqualOneOf(
    51  		t,
    52  		[]interface{}{
    53  			[]string{"2", "3", "4"},
    54  			[]string{"3", "2", "4"},
    55  		},
    56  		d.Ancestors("4", []string{"1"}),
    57  	)
    58  	require.EqualOneOf(
    59  		t,
    60  		[]interface{}{
    61  			[]string{"1", "2", "3"},
    62  			[]string{"1", "3", "2"},
    63  		},
    64  		d.Descendants("1", []string{"4"}),
    65  	)
    66  	require.Equal(t, []string{"4"}, d.Leaves())
    67  	require.Equal(t, 0, len(d.Ghosts()))
    68  }
    69  
    70  func TestGhosts(t *testing.T) {
    71  	d := NewDAG(map[string][]string{
    72  		"1": {},
    73  		"2": {"1", "3"},
    74  		"3": {"4", "1"},
    75  		"5": {"4", "6"},
    76  	})
    77  	require.EqualOneOf(
    78  		t,
    79  		[]interface{}{
    80  			[]string{"4", "6"},
    81  			[]string{"6", "4"},
    82  		},
    83  		d.Ghosts(),
    84  	)
    85  }