...

Source file src/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go

Documentation: github.com/onsi/gomega/matchers/support/goraph/edge

     1  package edge
     2  
     3  import . "github.com/onsi/gomega/matchers/support/goraph/node"
     4  
     5  type Edge struct {
     6  	Node1 int
     7  	Node2 int
     8  }
     9  
    10  type EdgeSet []Edge
    11  
    12  func (ec EdgeSet) Free(node Node) bool {
    13  	for _, e := range ec {
    14  		if e.Node1 == node.ID || e.Node2 == node.ID {
    15  			return false
    16  		}
    17  	}
    18  
    19  	return true
    20  }
    21  
    22  func (ec EdgeSet) Contains(edge Edge) bool {
    23  	for _, e := range ec {
    24  		if e == edge {
    25  			return true
    26  		}
    27  	}
    28  
    29  	return false
    30  }
    31  
    32  func (ec EdgeSet) FindByNodes(node1, node2 Node) (Edge, bool) {
    33  	for _, e := range ec {
    34  		if (e.Node1 == node1.ID && e.Node2 == node2.ID) || (e.Node1 == node2.ID && e.Node2 == node1.ID) {
    35  			return e, true
    36  		}
    37  	}
    38  
    39  	return Edge{}, false
    40  }
    41  
    42  func (ec EdgeSet) SymmetricDifference(ec2 EdgeSet) EdgeSet {
    43  	edgesToInclude := make(map[Edge]bool)
    44  
    45  	for _, e := range ec {
    46  		edgesToInclude[e] = true
    47  	}
    48  
    49  	for _, e := range ec2 {
    50  		edgesToInclude[e] = !edgesToInclude[e]
    51  	}
    52  
    53  	result := EdgeSet{}
    54  	for e, include := range edgesToInclude {
    55  		if include {
    56  			result = append(result, e)
    57  		}
    58  	}
    59  
    60  	return result
    61  }
    62  

View as plain text