github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/gopkg.in/mgo.v2/txn/tarjan_test.go (about)

     1  package txn
     2  
     3  import (
     4  	"fmt"
     5  	. "gopkg.in/check.v1"
     6  	"gopkg.in/mgo.v2/bson"
     7  )
     8  
     9  type TarjanSuite struct{}
    10  
    11  var _ = Suite(TarjanSuite{})
    12  
    13  func bid(n int) bson.ObjectId {
    14  	return bson.ObjectId(fmt.Sprintf("%024d", n))
    15  }
    16  
    17  func bids(ns ...int) (ids []bson.ObjectId) {
    18  	for _, n := range ns {
    19  		ids = append(ids, bid(n))
    20  	}
    21  	return
    22  }
    23  
    24  func (TarjanSuite) TestExample(c *C) {
    25  	successors := map[bson.ObjectId][]bson.ObjectId{
    26  		bid(1): bids(2, 3),
    27  		bid(2): bids(1, 5),
    28  		bid(3): bids(4),
    29  		bid(4): bids(3, 5),
    30  		bid(5): bids(6),
    31  		bid(6): bids(7),
    32  		bid(7): bids(8),
    33  		bid(8): bids(6, 9),
    34  		bid(9): bids(),
    35  	}
    36  
    37  	c.Assert(tarjanSort(successors), DeepEquals, [][]bson.ObjectId{
    38  		bids(9),
    39  		bids(6, 7, 8),
    40  		bids(5),
    41  		bids(3, 4),
    42  		bids(1, 2),
    43  	})
    44  }