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

     1  package txn
     2  
     3  import (
     4  	"sort"
     5  
     6  	. "gopkg.in/check.v1"
     7  )
     8  
     9  type DocKeySuite struct{}
    10  
    11  var _ = Suite(&DocKeySuite{})
    12  
    13  type T struct {
    14  	A int
    15  	B string
    16  }
    17  
    18  type T2 struct {
    19  	A int
    20  	B string
    21  }
    22  
    23  type T3 struct {
    24  	A int
    25  	B string
    26  }
    27  
    28  type T4 struct {
    29  	A int
    30  	B string
    31  }
    32  
    33  type T5 struct {
    34  	F int
    35  	Q string
    36  }
    37  
    38  type T6 struct {
    39  	A int
    40  	B string
    41  }
    42  
    43  type T7 struct {
    44  	A bool
    45  	B float64
    46  }
    47  
    48  type T8 struct {
    49  	A int
    50  	B string
    51  }
    52  
    53  type T9 struct {
    54  	A int
    55  	B string
    56  	C bool
    57  }
    58  
    59  type T10 struct {
    60  	C int    `bson:"a"`
    61  	D string `bson:"b,omitempty"`
    62  }
    63  
    64  type T11 struct {
    65  	C int
    66  	D string
    67  }
    68  
    69  type T12 struct {
    70  	S string
    71  }
    72  
    73  type T13 struct {
    74  	p, q, r bool
    75  	S       string
    76  }
    77  
    78  var docKeysTests = [][]docKeys{
    79  	{{
    80  		{"c", 1},
    81  		{"c", 5},
    82  		{"c", 2},
    83  	}, {
    84  		{"c", 1},
    85  		{"c", 2},
    86  		{"c", 5},
    87  	}}, {{
    88  		{"c", "foo"},
    89  		{"c", "bar"},
    90  		{"c", "bob"},
    91  	}, {
    92  		{"c", "bar"},
    93  		{"c", "bob"},
    94  		{"c", "foo"},
    95  	}}, {{
    96  		{"c", 0.2},
    97  		{"c", 0.07},
    98  		{"c", 0.9},
    99  	}, {
   100  		{"c", 0.07},
   101  		{"c", 0.2},
   102  		{"c", 0.9},
   103  	}}, {{
   104  		{"c", true},
   105  		{"c", false},
   106  		{"c", true},
   107  	}, {
   108  		{"c", false},
   109  		{"c", true},
   110  		{"c", true},
   111  	}}, {{
   112  		{"c", T{1, "b"}},
   113  		{"c", T{1, "a"}},
   114  		{"c", T{0, "b"}},
   115  		{"c", T{0, "a"}},
   116  	}, {
   117  		{"c", T{0, "a"}},
   118  		{"c", T{0, "b"}},
   119  		{"c", T{1, "a"}},
   120  		{"c", T{1, "b"}},
   121  	}}, {{
   122  		{"c", T{1, "a"}},
   123  		{"c", T{0, "a"}},
   124  	}, {
   125  		{"c", T{0, "a"}},
   126  		{"c", T{1, "a"}},
   127  	}}, {{
   128  		{"c", T3{0, "b"}},
   129  		{"c", T2{1, "b"}},
   130  		{"c", T3{1, "a"}},
   131  		{"c", T2{0, "a"}},
   132  	}, {
   133  		{"c", T2{0, "a"}},
   134  		{"c", T3{0, "b"}},
   135  		{"c", T3{1, "a"}},
   136  		{"c", T2{1, "b"}},
   137  	}}, {{
   138  		{"c", T5{1, "b"}},
   139  		{"c", T4{1, "b"}},
   140  		{"c", T5{0, "a"}},
   141  		{"c", T4{0, "a"}},
   142  	}, {
   143  		{"c", T4{0, "a"}},
   144  		{"c", T5{0, "a"}},
   145  		{"c", T4{1, "b"}},
   146  		{"c", T5{1, "b"}},
   147  	}}, {{
   148  		{"c", T6{1, "b"}},
   149  		{"c", T7{true, 0.2}},
   150  		{"c", T6{0, "a"}},
   151  		{"c", T7{false, 0.04}},
   152  	}, {
   153  		{"c", T6{0, "a"}},
   154  		{"c", T6{1, "b"}},
   155  		{"c", T7{false, 0.04}},
   156  		{"c", T7{true, 0.2}},
   157  	}}, {{
   158  		{"c", T9{1, "b", true}},
   159  		{"c", T8{1, "b"}},
   160  		{"c", T9{0, "a", false}},
   161  		{"c", T8{0, "a"}},
   162  	}, {
   163  		{"c", T9{0, "a", false}},
   164  		{"c", T8{0, "a"}},
   165  		{"c", T9{1, "b", true}},
   166  		{"c", T8{1, "b"}},
   167  	}}, {{
   168  		{"b", 2},
   169  		{"a", 5},
   170  		{"c", 2},
   171  		{"b", 1},
   172  	}, {
   173  		{"a", 5},
   174  		{"b", 1},
   175  		{"b", 2},
   176  		{"c", 2},
   177  	}}, {{
   178  		{"c", T11{1, "a"}},
   179  		{"c", T11{1, "a"}},
   180  		{"c", T10{1, "a"}},
   181  	}, {
   182  		{"c", T10{1, "a"}},
   183  		{"c", T11{1, "a"}},
   184  		{"c", T11{1, "a"}},
   185  	}}, {{
   186  		{"c", T12{"a"}},
   187  		{"c", T13{false, true, false, "a"}},
   188  		{"c", T12{"b"}},
   189  		{"c", T13{false, true, false, "b"}},
   190  	}, {
   191  		{"c", T12{"a"}},
   192  		{"c", T13{false, true, false, "a"}},
   193  		{"c", T12{"b"}},
   194  		{"c", T13{false, true, false, "b"}},
   195  	}},
   196  }
   197  
   198  func (s *DocKeySuite) TestSort(c *C) {
   199  	for _, test := range docKeysTests {
   200  		keys := test[0]
   201  		expected := test[1]
   202  		sort.Sort(keys)
   203  		c.Check(keys, DeepEquals, expected)
   204  	}
   205  }