@@ -18,6 +18,7 @@ package cpuset
1818
1919import (
2020 "reflect"
21+ "sort"
2122 "testing"
2223)
2324
@@ -90,6 +91,7 @@ func TestCPUSetEqual(t *testing.T) {
9091 {New (), New ()},
9192 {New (5 ), New (5 )},
9293 {New (1 , 2 , 3 , 4 , 5 ), New (1 , 2 , 3 , 4 , 5 )},
94+ {New (5 , 4 , 3 , 2 , 1 ), New (1 , 2 , 3 , 4 , 5 )},
9395 }
9496
9597 shouldNotEqual := []struct {
@@ -139,7 +141,13 @@ func TestCPUSetIsSubsetOf(t *testing.T) {
139141 shouldNotBeSubset := []struct {
140142 s1 CPUSet
141143 s2 CPUSet
142- }{}
144+ }{
145+ // A set with more elements is not a subset.
146+ {New (5 ), New ()},
147+
148+ // Disjoint set is not a subset.
149+ {New (6 ), New (5 )},
150+ }
143151
144152 for _ , c := range shouldBeSubset {
145153 if ! c .s1 .IsSubsetOf (c .s2 ) {
@@ -255,17 +263,26 @@ func TestCPUSetDifference(t *testing.T) {
255263func TestCPUSetList (t * testing.T ) {
256264 testCases := []struct {
257265 set CPUSet
258- expected []int
266+ expected []int // must be sorted
259267 }{
260268 {New (), []int {}},
261269 {New (5 ), []int {5 }},
262270 {New (1 , 2 , 3 , 4 , 5 ), []int {1 , 2 , 3 , 4 , 5 }},
271+ {New (5 , 4 , 3 , 2 , 1 ), []int {1 , 2 , 3 , 4 , 5 }},
263272 }
264273
265274 for _ , c := range testCases {
266275 result := c .set .List ()
267276 if ! reflect .DeepEqual (result , c .expected ) {
268- t .Fatalf ("expected set as slice to be [%v] (got [%v]), s: [%v]" , c .expected , result , c .set )
277+ t .Fatalf ("unexpected List() contents. got [%v] want [%v] (set: [%v])" , result , c .expected , c .set )
278+ }
279+
280+ // We cannot rely on internal storage order details for a unit test.
281+ // The best we can do is to sort the output of 'UnsortedList'.
282+ result = c .set .UnsortedList ()
283+ sort .Ints (result )
284+ if ! reflect .DeepEqual (result , c .expected ) {
285+ t .Fatalf ("unexpected UnsortedList() contents. got [%v] want [%v] (set: [%v])" , result , c .expected , c .set )
269286 }
270287 }
271288}
@@ -330,3 +347,12 @@ func TestParse(t *testing.T) {
330347 }
331348 }
332349}
350+
351+ func TestClone (t * testing.T ) {
352+ original := New (1 , 2 , 3 , 4 , 5 )
353+ clone := original .Clone ()
354+
355+ if ! original .Equals (clone ) {
356+ t .Errorf ("expected clone [%v] to equal original [%v]" , clone , original )
357+ }
358+ }
0 commit comments