Skip to content

Commit 2160ea2

Browse files
committed
cpuset: Add a few more test cases
Feedback from #267 and related reviews. * Equality when insertion order is different * UnsortedList contents * Not-Subset cases * Clone coverage
1 parent b911e13 commit 2160ea2

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

cpuset_test.go

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package cpuset
1818

1919
import (
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) {
255263
func 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

Comments
 (0)