blob: 6668a8a848bdeae430f793ca8e5060e7a5a9b42f [file] [log] [blame]
// Copyright 2015 Kevin Gillette. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package testdata
import "reflect"
type BinTest struct {
A, B []int
Inter []int
Union []int
Diff []int
RevDiff []int
SymDiff []int
IsSub bool
IsSuper bool
IsInter bool
IsEqual bool
}
func (t BinTest) sel(name string) interface{} { return reflect.ValueOf(t).FieldByName(name).Interface() }
func (t BinTest) SelSlice(name string) []int { return t.sel(name).([]int) }
func (t BinTest) SelBool(name string) bool { return t.sel(name).(bool) }
var BinTests = []BinTest{
{
// empty sets
A: nil,
B: nil,
Inter: nil,
Union: nil,
Diff: nil,
RevDiff: nil,
SymDiff: nil,
IsSub: true,
IsSuper: true,
IsInter: false,
IsEqual: true,
},
{
// identical sets
A: []int{1, 2, 3},
B: []int{1, 2, 3},
Inter: []int{1, 2, 3},
Union: []int{1, 2, 3},
Diff: nil,
RevDiff: nil,
SymDiff: nil,
IsSub: true,
IsSuper: true,
IsInter: true,
IsEqual: true,
},
{
// non-disjoint sets
A: []int{1, 2, 3},
B: []int{2, 3, 4},
Inter: []int{2, 3},
Union: []int{1, 2, 3, 4},
Diff: []int{1},
RevDiff: []int{4},
SymDiff: []int{1, 4},
IsSub: false,
IsSuper: false,
IsInter: true,
IsEqual: false,
},
{
// inverse non-disjoint sets
A: []int{2, 3, 4},
B: []int{1, 2, 3},
Inter: []int{2, 3},
Union: []int{1, 2, 3, 4},
Diff: []int{4},
RevDiff: []int{1},
SymDiff: []int{1, 4},
IsSub: false,
IsSuper: false,
IsInter: true,
IsEqual: false,
},
{
// disjoint sets
A: []int{1, 2, 3},
B: []int{4, 5, 6},
Inter: nil,
Union: []int{1, 2, 3, 4, 5, 6},
Diff: []int{1, 2, 3},
RevDiff: []int{4, 5, 6},
SymDiff: []int{1, 2, 3, 4, 5, 6},
IsSub: false,
IsSuper: false,
IsInter: false,
IsEqual: false,
},
{
// inverse disjoint sets
A: []int{4, 5, 6},
B: []int{1, 2, 3},
Inter: nil,
Union: []int{1, 2, 3, 4, 5, 6},
Diff: []int{4, 5, 6},
RevDiff: []int{1, 2, 3},
SymDiff: []int{1, 2, 3, 4, 5, 6},
IsSub: false,
IsSuper: false,
IsInter: false,
IsEqual: false,
},
{
// alternating disjoint sets
A: []int{1, 3, 5},
B: []int{2, 4, 6},
Inter: nil,
Union: []int{1, 2, 3, 4, 5, 6},
Diff: []int{1, 3, 5},
RevDiff: []int{2, 4, 6},
SymDiff: []int{1, 2, 3, 4, 5, 6},
IsSub: false,
IsSuper: false,
IsInter: false,
IsEqual: false,
},
{
// inverse alternating disjoint sets
A: []int{2, 4, 6},
B: []int{1, 3, 5},
Inter: nil,
Union: []int{1, 2, 3, 4, 5, 6},
Diff: []int{2, 4, 6},
RevDiff: []int{1, 3, 5},
SymDiff: []int{1, 2, 3, 4, 5, 6},
IsSub: false,
IsSuper: false,
IsInter: false,
IsEqual: false,
},
{
// subset
A: []int{2},
B: []int{1, 2, 3},
Inter: []int{2},
Union: []int{1, 2, 3},
Diff: nil,
RevDiff: []int{1, 3},
SymDiff: []int{1, 3},
IsSub: true,
IsSuper: false,
IsInter: true,
IsEqual: false,
},
{
// superset
A: []int{1, 2, 3},
B: []int{2},
Inter: []int{2},
Union: []int{1, 2, 3},
Diff: []int{1, 3},
RevDiff: nil,
SymDiff: []int{1, 3},
IsSub: false,
IsSuper: true,
IsInter: true,
IsEqual: false,
},
}