Optimize lib/interval tests' opKey look-up
diff --git a/lib/interval/interval_test.go b/lib/interval/interval_test.go
index cbf1f77..4fa52a9 100644
--- a/lib/interval/interval_test.go
+++ b/lib/interval/interval_test.go
@@ -22,6 +22,7 @@
"strconv"
"strings"
"testing"
+ "unicode/utf8"
)
var fromNeg7ToPos7 = []*big.Int{
@@ -328,7 +329,7 @@
((x[1] == y[1]) && (x[1] != nil))
}
-func testBruteForceAgrees(x IntRange, y IntRange, opKey string) error {
+func testBruteForceAgrees(x IntRange, y IntRange, opKey rune) error {
brute, bruteOK := bruteForce(x, y, opKey)
got, gotOK := intOperators[opKey](x, y)
if shareBigIntPointers(got, x) || shareBigIntPointers(got, y) {
@@ -351,7 +352,7 @@
y := IntRange{y0, y1}
if err := testBruteForceAgrees(x, y, opKey); err != nil {
- tt.Fatalf("%v %s %v: %v", x, opKey, y, err)
+ tt.Fatalf("%v %c %v: %v", x, opKey, y, err)
}
}
}
@@ -375,7 +376,7 @@
x := IntRange{gen(rng), gen(rng)}
y := IntRange{gen(rng), gen(rng)}
if err := testBruteForceAgrees(x, y, opKey); err != nil {
- tt.Fatalf("%v %s %v: %v", x, opKey, y, err)
+ tt.Fatalf("%v %c %v: %v", x, opKey, y, err)
}
}
}
@@ -399,7 +400,8 @@
i := 0
for ; i < len(s) && s[i] != ' '; i++ {
}
- opKey, s := s[:i], s[i:]
+ opKey, _ := utf8.DecodeRuneInString(s[:i])
+ s = s[i:]
y, s, err := parseInterval(s)
if err != nil {
@@ -437,467 +439,469 @@
return nil
}
-var intOperators = map[string]func(IntRange, IntRange) (IntRange, bool){
- "∪": func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Unite(y), true },
- "∩": func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Intersect(y), true },
- "+": func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Add(y), true },
- "-": func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Sub(y), true },
- "*": func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Mul(y), true },
- "/": IntRange.Quo,
- "<<": IntRange.Lsh,
- ">>": IntRange.Rsh,
- "&": IntRange.And,
- "|": IntRange.Or,
+var intOperators = map[rune]func(IntRange, IntRange) (IntRange, bool){
+ '∪': func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Unite(y), true },
+ '∩': func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Intersect(y), true },
+ '+': func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Add(y), true },
+ '-': func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Sub(y), true },
+ '*': func(x IntRange, y IntRange) (z IntRange, ok bool) { return x.Mul(y), true },
+ '/': IntRange.Quo,
+ '«': IntRange.Lsh,
+ '»': IntRange.Rsh,
+ '&': IntRange.And,
+ '|': IntRange.Or,
}
-var intOperatorsKeys []string
+var intOperatorsKeys []rune
func init() {
for k := range intOperators {
intOperatorsKeys = append(intOperatorsKeys, k)
}
- sort.Strings(intOperatorsKeys)
+ sort.Slice(intOperatorsKeys, func(i, j int) bool {
+ return intOperatorsKeys[i] < intOperatorsKeys[j]
+ })
}
func TestOpUnite(tt *testing.T) {
testOp(tt,
- "[ 3, 3] ∪ [ -5, -5] == [ -5, 3]",
- "[ 3, 3] ∪ [ 0, 0] == [ 0, 3]",
- "[ 0, 0] ∪ [ -7, 7] == [ -7, 7]",
- "[ 0, 2] ∪ [ 0, 5] == [ 0, 5]",
- "[ 3, 6] ∪ [ 10, 15] == [ 3, 15]",
- "[ 3, +∞) ∪ [ -4, -2] == [ -4, +∞)",
- "[ 3, +∞) ∪ [ 10, 15] == [ 3, +∞)",
- "[ 3, +∞) ∪ ( -∞, 15] == ( -∞, +∞)",
- "[ 3, 6] ∪ ( -∞, 15] == ( -∞, 15]",
- "[ 3, 6] ∪ ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) ∪ ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) ∪ [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) ∪ [ 0, 0] == ( -∞, +∞)",
- "[ 3, 6] ∪ [...empty..] == [ 3, 6]",
- "[...empty..] ∪ [ 10, 15] == [ 10, 15]",
- "[...empty..] ∪ [...empty..] == [...empty..]",
- "( -∞, +∞) ∪ [...empty..] == ( -∞, +∞)",
+ "[ 3, 3] ∪ [ -5, -5] == [ -5, 3]",
+ "[ 3, 3] ∪ [ 0, 0] == [ 0, 3]",
+ "[ 0, 0] ∪ [ -7, 7] == [ -7, 7]",
+ "[ 0, 2] ∪ [ 0, 5] == [ 0, 5]",
+ "[ 3, 6] ∪ [ 10, 15] == [ 3, 15]",
+ "[ 3, +∞) ∪ [ -4, -2] == [ -4, +∞)",
+ "[ 3, +∞) ∪ [ 10, 15] == [ 3, +∞)",
+ "[ 3, +∞) ∪ ( -∞, 15] == ( -∞, +∞)",
+ "[ 3, 6] ∪ ( -∞, 15] == ( -∞, 15]",
+ "[ 3, 6] ∪ ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) ∪ ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) ∪ [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) ∪ [ 0, 0] == ( -∞, +∞)",
+ "[ 3, 6] ∪ [...empty..] == [ 3, 6]",
+ "[...empty..] ∪ [ 10, 15] == [ 10, 15]",
+ "[...empty..] ∪ [...empty..] == [...empty..]",
+ "( -∞, +∞) ∪ [...empty..] == ( -∞, +∞)",
)
}
func TestOpIntersect(tt *testing.T) {
testOp(tt,
- "[ 3, 3] ∩ [ -5, -5] == [...empty..]",
- "[ 3, 3] ∩ [ 0, 0] == [...empty..]",
- "[ 0, 0] ∩ [ -7, 7] == [ 0, 0]",
- "[ 0, 2] ∩ [ 0, 5] == [ 0, 2]",
- "[ 3, 6] ∩ [ 10, 15] == [...empty..]",
- "[ 3, +∞) ∩ [ -4, -2] == [...empty..]",
- "[ 3, +∞) ∩ [ 10, 15] == [ 10, 15]",
- "[ 3, +∞) ∩ ( -∞, 15] == [ 3, 15]",
- "[ 3, 6] ∩ ( -∞, 15] == [ 3, 6]",
- "[ 3, 6] ∩ ( -∞, +∞) == [ 3, 6]",
- "( -∞, +∞) ∩ ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) ∩ [ 1, 2] == [ 1, 2]",
- "( -∞, +∞) ∩ [ 0, 0] == [ 0, 0]",
- "[ 3, 6] ∩ [...empty..] == [...empty..]",
- "[...empty..] ∩ [ 10, 15] == [...empty..]",
- "[...empty..] ∩ [...empty..] == [...empty..]",
- "( -∞, +∞) ∩ [...empty..] == [...empty..]",
+ "[ 3, 3] ∩ [ -5, -5] == [...empty..]",
+ "[ 3, 3] ∩ [ 0, 0] == [...empty..]",
+ "[ 0, 0] ∩ [ -7, 7] == [ 0, 0]",
+ "[ 0, 2] ∩ [ 0, 5] == [ 0, 2]",
+ "[ 3, 6] ∩ [ 10, 15] == [...empty..]",
+ "[ 3, +∞) ∩ [ -4, -2] == [...empty..]",
+ "[ 3, +∞) ∩ [ 10, 15] == [ 10, 15]",
+ "[ 3, +∞) ∩ ( -∞, 15] == [ 3, 15]",
+ "[ 3, 6] ∩ ( -∞, 15] == [ 3, 6]",
+ "[ 3, 6] ∩ ( -∞, +∞) == [ 3, 6]",
+ "( -∞, +∞) ∩ ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) ∩ [ 1, 2] == [ 1, 2]",
+ "( -∞, +∞) ∩ [ 0, 0] == [ 0, 0]",
+ "[ 3, 6] ∩ [...empty..] == [...empty..]",
+ "[...empty..] ∩ [ 10, 15] == [...empty..]",
+ "[...empty..] ∩ [...empty..] == [...empty..]",
+ "( -∞, +∞) ∩ [...empty..] == [...empty..]",
)
}
func TestOpAdd(tt *testing.T) {
testOp(tt,
- "[ 3, 3] + [ -5, -5] == [ -2, -2]",
- "[ 3, 3] + [ 0, 0] == [ 3, 3]",
- "[ 0, 0] + [ -7, 7] == [ -7, 7]",
- "[ 0, 2] + [ 0, 5] == [ 0, 7]",
- "[ 3, 6] + [ 10, 15] == [ 13, 21]",
- "[ 3, +∞) + [ -4, -2] == [ -1, +∞)",
- "[ 3, +∞) + [ 10, 15] == [ 13, +∞)",
- "[ 3, +∞) + ( -∞, 15] == ( -∞, +∞)",
- "[ 3, 6] + ( -∞, 15] == ( -∞, 21]",
- "[ 3, 6] + ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) + ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) + [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) + [ 0, 0] == ( -∞, +∞)",
- "[ 3, 6] + [...empty..] == [...empty..]",
- "[...empty..] + [ 10, 15] == [...empty..]",
- "[...empty..] + [...empty..] == [...empty..]",
- "( -∞, +∞) + [...empty..] == [...empty..]",
+ "[ 3, 3] + [ -5, -5] == [ -2, -2]",
+ "[ 3, 3] + [ 0, 0] == [ 3, 3]",
+ "[ 0, 0] + [ -7, 7] == [ -7, 7]",
+ "[ 0, 2] + [ 0, 5] == [ 0, 7]",
+ "[ 3, 6] + [ 10, 15] == [ 13, 21]",
+ "[ 3, +∞) + [ -4, -2] == [ -1, +∞)",
+ "[ 3, +∞) + [ 10, 15] == [ 13, +∞)",
+ "[ 3, +∞) + ( -∞, 15] == ( -∞, +∞)",
+ "[ 3, 6] + ( -∞, 15] == ( -∞, 21]",
+ "[ 3, 6] + ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) + ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) + [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) + [ 0, 0] == ( -∞, +∞)",
+ "[ 3, 6] + [...empty..] == [...empty..]",
+ "[...empty..] + [ 10, 15] == [...empty..]",
+ "[...empty..] + [...empty..] == [...empty..]",
+ "( -∞, +∞) + [...empty..] == [...empty..]",
)
}
func TestOpSub(tt *testing.T) {
testOp(tt,
- "[ 3, 3] - [ -5, -5] == [ 8, 8]",
- "[ 3, 3] - [ 0, 0] == [ 3, 3]",
- "[ 0, 0] - [ -7, 7] == [ -7, 7]",
- "[ 0, 2] - [ 0, 5] == [ -5, 2]",
- "[ 3, 6] - [ 10, 15] == [ -12, -4]",
- "[ 3, +∞) - [ -4, -2] == [ 5, +∞)",
- "[ 3, +∞) - [ 10, 15] == [ -12, +∞)",
- "[ 3, +∞) - ( -∞, 15] == ( -∞, +∞)",
- "[ 3, 6] - ( -∞, 15] == [ -12, +∞)",
- "[ 3, 6] - ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) - ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) - [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) - [ 0, 0] == ( -∞, +∞)",
- "[ 3, 6] - [...empty..] == [...empty..]",
- "[...empty..] - [ 10, 15] == [...empty..]",
- "[...empty..] - [...empty..] == [...empty..]",
- "( -∞, +∞) - [...empty..] == [...empty..]",
+ "[ 3, 3] - [ -5, -5] == [ 8, 8]",
+ "[ 3, 3] - [ 0, 0] == [ 3, 3]",
+ "[ 0, 0] - [ -7, 7] == [ -7, 7]",
+ "[ 0, 2] - [ 0, 5] == [ -5, 2]",
+ "[ 3, 6] - [ 10, 15] == [ -12, -4]",
+ "[ 3, +∞) - [ -4, -2] == [ 5, +∞)",
+ "[ 3, +∞) - [ 10, 15] == [ -12, +∞)",
+ "[ 3, +∞) - ( -∞, 15] == ( -∞, +∞)",
+ "[ 3, 6] - ( -∞, 15] == [ -12, +∞)",
+ "[ 3, 6] - ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) - ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) - [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) - [ 0, 0] == ( -∞, +∞)",
+ "[ 3, 6] - [...empty..] == [...empty..]",
+ "[...empty..] - [ 10, 15] == [...empty..]",
+ "[...empty..] - [...empty..] == [...empty..]",
+ "( -∞, +∞) - [...empty..] == [...empty..]",
)
}
func TestOpMul(tt *testing.T) {
testOp(tt,
- "[ 3, 3] * [ -5, -5] == [ -15, -15]",
- "[ 3, 3] * [ 0, 0] == [ 0, 0]",
- "[ 0, 0] * [ -7, 7] == [ 0, 0]",
- "[ 0, 2] * [ 0, 5] == [ 0, 10]",
- "[ 3, 6] * [ 10, 15] == [ 30, 90]",
- "[ 3, +∞) * [ -4, -2] == ( -∞, -6]",
- "[ 3, +∞) * [ 10, 15] == [ 30, +∞)",
- "[ 3, +∞) * ( -∞, 15] == ( -∞, +∞)",
- "[ 3, 6] * ( -∞, 15] == ( -∞, 90]",
- "[ 3, 6] * ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) * ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) * [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) * [ 0, 0] == [ 0, 0]",
- "[ 3, 6] * [...empty..] == [...empty..]",
- "[...empty..] * [ 10, 15] == [...empty..]",
- "[...empty..] * [...empty..] == [...empty..]",
- "( -∞, +∞) * [...empty..] == [...empty..]",
+ "[ 3, 3] * [ -5, -5] == [ -15, -15]",
+ "[ 3, 3] * [ 0, 0] == [ 0, 0]",
+ "[ 0, 0] * [ -7, 7] == [ 0, 0]",
+ "[ 0, 2] * [ 0, 5] == [ 0, 10]",
+ "[ 3, 6] * [ 10, 15] == [ 30, 90]",
+ "[ 3, +∞) * [ -4, -2] == ( -∞, -6]",
+ "[ 3, +∞) * [ 10, 15] == [ 30, +∞)",
+ "[ 3, +∞) * ( -∞, 15] == ( -∞, +∞)",
+ "[ 3, 6] * ( -∞, 15] == ( -∞, 90]",
+ "[ 3, 6] * ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) * ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) * [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) * [ 0, 0] == [ 0, 0]",
+ "[ 3, 6] * [...empty..] == [...empty..]",
+ "[...empty..] * [ 10, 15] == [...empty..]",
+ "[...empty..] * [...empty..] == [...empty..]",
+ "( -∞, +∞) * [...empty..] == [...empty..]",
- "[ -3, -1] * [ -11, -10] == [ 10, 33]",
- "[ -3, 0] * [ -11, -10] == [ 0, 33]",
- "[ -3, 1] * [ -11, -10] == [ -11, 33]",
- "[ -3, 4] * [ -11, -10] == [ -44, 33]",
- "[ -1, 4] * [ -11, -10] == [ -44, 11]",
- "[ 0, 4] * [ -11, -10] == [ -44, 0]",
- "[ 1, 4] * [ -11, -10] == [ -44, -10]",
+ "[ -3, -1] * [ -11, -10] == [ 10, 33]",
+ "[ -3, 0] * [ -11, -10] == [ 0, 33]",
+ "[ -3, 1] * [ -11, -10] == [ -11, 33]",
+ "[ -3, 4] * [ -11, -10] == [ -44, 33]",
+ "[ -1, 4] * [ -11, -10] == [ -44, 11]",
+ "[ 0, 4] * [ -11, -10] == [ -44, 0]",
+ "[ 1, 4] * [ -11, -10] == [ -44, -10]",
- "[ -3, -1] * [ -6, 2] == [ -6, 18]",
- "[ -3, 0] * [ -6, 2] == [ -6, 18]",
- "[ -3, 1] * [ -6, 2] == [ -6, 18]",
- "[ -3, 4] * [ -6, 2] == [ -24, 18]",
- "[ -1, 4] * [ -6, 2] == [ -24, 8]",
- "[ 0, 4] * [ -6, 2] == [ -24, 8]",
- "[ 1, 4] * [ -6, 2] == [ -24, 8]",
+ "[ -3, -1] * [ -6, 2] == [ -6, 18]",
+ "[ -3, 0] * [ -6, 2] == [ -6, 18]",
+ "[ -3, 1] * [ -6, 2] == [ -6, 18]",
+ "[ -3, 4] * [ -6, 2] == [ -24, 18]",
+ "[ -1, 4] * [ -6, 2] == [ -24, 8]",
+ "[ 0, 4] * [ -6, 2] == [ -24, 8]",
+ "[ 1, 4] * [ -6, 2] == [ -24, 8]",
- "[ -3, -1] * [ 0, 3] == [ -9, 0]",
- "[ -3, 0] * [ 0, 3] == [ -9, 0]",
- "[ -3, 1] * [ 0, 3] == [ -9, 3]",
- "[ -3, 4] * [ 0, 3] == [ -9, 12]",
- "[ -1, 4] * [ 0, 3] == [ -3, 12]",
- "[ 0, 4] * [ 0, 3] == [ 0, 12]",
- "[ 1, 4] * [ 0, 3] == [ 0, 12]",
+ "[ -3, -1] * [ 0, 3] == [ -9, 0]",
+ "[ -3, 0] * [ 0, 3] == [ -9, 0]",
+ "[ -3, 1] * [ 0, 3] == [ -9, 3]",
+ "[ -3, 4] * [ 0, 3] == [ -9, 12]",
+ "[ -1, 4] * [ 0, 3] == [ -3, 12]",
+ "[ 0, 4] * [ 0, 3] == [ 0, 12]",
+ "[ 1, 4] * [ 0, 3] == [ 0, 12]",
- "[ -3, -1] * [ 2, 3] == [ -9, -2]",
- "[ -3, 0] * [ 2, 3] == [ -9, 0]",
- "[ -3, 1] * [ 2, 3] == [ -9, 3]",
- "[ -3, 4] * [ 2, 3] == [ -9, 12]",
- "[ -1, 4] * [ 2, 3] == [ -3, 12]",
- "[ 0, 4] * [ 2, 3] == [ 0, 12]",
- "[ 1, 4] * [ 2, 3] == [ 2, 12]",
+ "[ -3, -1] * [ 2, 3] == [ -9, -2]",
+ "[ -3, 0] * [ 2, 3] == [ -9, 0]",
+ "[ -3, 1] * [ 2, 3] == [ -9, 3]",
+ "[ -3, 4] * [ 2, 3] == [ -9, 12]",
+ "[ -1, 4] * [ 2, 3] == [ -3, 12]",
+ "[ 0, 4] * [ 2, 3] == [ 0, 12]",
+ "[ 1, 4] * [ 2, 3] == [ 2, 12]",
- "[ -9, +∞) * [ 2, +∞) == ( -∞, +∞)",
- "[ -1, +∞) * [ 2, +∞) == ( -∞, +∞)",
- "[ 0, +∞) * [ 2, +∞) == [ 0, +∞)",
- "[ 1, +∞) * [ 2, +∞) == [ 2, +∞)",
- "[ 7, +∞) * [ 2, +∞) == [ 14, +∞)",
- "[ -1, 1] * ( -∞, +∞) == ( -∞, +∞)",
- "[ 0, 0] * ( -∞, +∞) == [ 0, 0]",
- "[ 1, 1] * ( -∞, +∞) == ( -∞, +∞)",
+ "[ -9, +∞) * [ 2, +∞) == ( -∞, +∞)",
+ "[ -1, +∞) * [ 2, +∞) == ( -∞, +∞)",
+ "[ 0, +∞) * [ 2, +∞) == [ 0, +∞)",
+ "[ 1, +∞) * [ 2, +∞) == [ 2, +∞)",
+ "[ 7, +∞) * [ 2, +∞) == [ 14, +∞)",
+ "[ -1, 1] * ( -∞, +∞) == ( -∞, +∞)",
+ "[ 0, 0] * ( -∞, +∞) == [ 0, 0]",
+ "[ 1, 1] * ( -∞, +∞) == ( -∞, +∞)",
)
}
func TestOpQuo(tt *testing.T) {
testOp(tt,
- "[ 3, 3] / [ -5, -5] == [ 0, 0]",
- "[ 3, 3] / [ 0, 0] == invalid",
- "[ 0, 0] / [ -7, 7] == invalid",
- "[ 0, 2] / [ 0, 5] == invalid",
- "[ 3, 6] / [ 10, 15] == [ 0, 0]",
- "[ 3, +∞) / [ -4, -2] == ( -∞, 0]",
- "[ 3, +∞) / [ 10, 15] == [ 0, +∞)",
- "[ 3, +∞) / ( -∞, 15] == invalid",
- "[ 3, 6] / ( -∞, 15] == invalid",
- "[ 3, 6] / ( -∞, +∞) == invalid",
- "( -∞, +∞) / ( -∞, +∞) == invalid",
- "( -∞, +∞) / [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) / [ 0, 0] == invalid",
- "[ 3, 6] / [...empty..] == [...empty..]",
- "[...empty..] / [ 10, 15] == [...empty..]",
- "[...empty..] / [...empty..] == [...empty..]",
- "( -∞, +∞) / [...empty..] == [...empty..]",
+ "[ 3, 3] / [ -5, -5] == [ 0, 0]",
+ "[ 3, 3] / [ 0, 0] == invalid",
+ "[ 0, 0] / [ -7, 7] == invalid",
+ "[ 0, 2] / [ 0, 5] == invalid",
+ "[ 3, 6] / [ 10, 15] == [ 0, 0]",
+ "[ 3, +∞) / [ -4, -2] == ( -∞, 0]",
+ "[ 3, +∞) / [ 10, 15] == [ 0, +∞)",
+ "[ 3, +∞) / ( -∞, 15] == invalid",
+ "[ 3, 6] / ( -∞, 15] == invalid",
+ "[ 3, 6] / ( -∞, +∞) == invalid",
+ "( -∞, +∞) / ( -∞, +∞) == invalid",
+ "( -∞, +∞) / [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) / [ 0, 0] == invalid",
+ "[ 3, 6] / [...empty..] == [...empty..]",
+ "[...empty..] / [ 10, 15] == [...empty..]",
+ "[...empty..] / [...empty..] == [...empty..]",
+ "( -∞, +∞) / [...empty..] == [...empty..]",
- "[ 1, 4] / [ -11, -10] == [ 0, 0]",
+ "[ 1, 4] / [ -11, -10] == [ 0, 0]",
- "[ 1, 4] / [ -6, 2] == invalid",
+ "[ 1, 4] / [ -6, 2] == invalid",
- "[ -3, -1] / [ 1, 3] == [ -3, 0]",
- "[ -3, 0] / [ 1, 3] == [ -3, 0]",
- "[ -3, 1] / [ 1, 3] == [ -3, 1]",
- "[ -3, 4] / [ 1, 3] == [ -3, 4]",
- "[ -1, 4] / [ 1, 3] == [ -1, 4]",
- "[ 0, 4] / [ 1, 3] == [ 0, 4]",
- "[ 1, 4] / [ 1, 3] == [ 0, 4]",
+ "[ -3, -1] / [ 1, 3] == [ -3, 0]",
+ "[ -3, 0] / [ 1, 3] == [ -3, 0]",
+ "[ -3, 1] / [ 1, 3] == [ -3, 1]",
+ "[ -3, 4] / [ 1, 3] == [ -3, 4]",
+ "[ -1, 4] / [ 1, 3] == [ -1, 4]",
+ "[ 0, 4] / [ 1, 3] == [ 0, 4]",
+ "[ 1, 4] / [ 1, 3] == [ 0, 4]",
- "[ -3, -1] / [ 2, 3] == [ -1, 0]",
- "[ -3, 0] / [ 2, 3] == [ -1, 0]",
- "[ -3, 1] / [ 2, 3] == [ -1, 0]",
- "[ -3, 4] / [ 2, 3] == [ -1, 2]",
- "[ -1, 4] / [ 2, 3] == [ 0, 2]",
- "[ 0, 4] / [ 2, 3] == [ 0, 2]",
- "[ 1, 4] / [ 2, 3] == [ 0, 2]",
+ "[ -3, -1] / [ 2, 3] == [ -1, 0]",
+ "[ -3, 0] / [ 2, 3] == [ -1, 0]",
+ "[ -3, 1] / [ 2, 3] == [ -1, 0]",
+ "[ -3, 4] / [ 2, 3] == [ -1, 2]",
+ "[ -1, 4] / [ 2, 3] == [ 0, 2]",
+ "[ 0, 4] / [ 2, 3] == [ 0, 2]",
+ "[ 1, 4] / [ 2, 3] == [ 0, 2]",
- "[ -9, +∞) / [ 2, +∞) == [ -4, +∞)",
- "[ -1, +∞) / [ 2, +∞) == [ 0, +∞)",
- "[ 0, +∞) / [ 2, +∞) == [ 0, +∞)",
- "[ 1, +∞) / [ 2, +∞) == [ 0, +∞)",
- "[ 7, +∞) / [ 2, +∞) == [ 0, +∞)",
- "[ -1, 1] / ( -∞, +∞) == invalid",
- "[ 0, 0] / ( -∞, +∞) == invalid",
- "[ 1, 1] / ( -∞, +∞) == invalid",
+ "[ -9, +∞) / [ 2, +∞) == [ -4, +∞)",
+ "[ -1, +∞) / [ 2, +∞) == [ 0, +∞)",
+ "[ 0, +∞) / [ 2, +∞) == [ 0, +∞)",
+ "[ 1, +∞) / [ 2, +∞) == [ 0, +∞)",
+ "[ 7, +∞) / [ 2, +∞) == [ 0, +∞)",
+ "[ -1, 1] / ( -∞, +∞) == invalid",
+ "[ 0, 0] / ( -∞, +∞) == invalid",
+ "[ 1, 1] / ( -∞, +∞) == invalid",
)
}
func TestOpLsh(tt *testing.T) {
testOp(tt,
- "[ 3, 3] << [ -5, -5] == invalid",
- "[ 3, 3] << [ 0, 0] == [ 3, 3]",
- "[ 0, 0] << [ -7, 7] == invalid",
- "[ 0, 2] << [ 0, 5] == [ 0, 64]",
- "[ 3, 6] << [ 10, 15] == [3072, 196608]",
- "[ 3, +∞) << [ -4, -2] == invalid",
- "[ 3, +∞) << [ 10, 15] == [3072, +∞)",
- "[ 3, +∞) << ( -∞, 15] == invalid",
- "[ 3, 6] << ( -∞, 15] == invalid",
- "[ 3, 6] << ( -∞, +∞) == invalid",
- "( -∞, +∞) << ( -∞, +∞) == invalid",
- "( -∞, +∞) << [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) << [ 0, 0] == ( -∞, +∞)",
- "[ 3, 6] << [...empty..] == [...empty..]",
- "[...empty..] << [ 10, 15] == [...empty..]",
- "[...empty..] << [...empty..] == [...empty..]",
- "( -∞, +∞) << [...empty..] == [...empty..]",
+ "[ 3, 3] « [ -5, -5] == invalid",
+ "[ 3, 3] « [ 0, 0] == [ 3, 3]",
+ "[ 0, 0] « [ -7, 7] == invalid",
+ "[ 0, 2] « [ 0, 5] == [ 0, 64]",
+ "[ 3, 6] « [ 10, 15] == [3072, 196608]",
+ "[ 3, +∞) « [ -4, -2] == invalid",
+ "[ 3, +∞) « [ 10, 15] == [3072, +∞)",
+ "[ 3, +∞) « ( -∞, 15] == invalid",
+ "[ 3, 6] « ( -∞, 15] == invalid",
+ "[ 3, 6] « ( -∞, +∞) == invalid",
+ "( -∞, +∞) « ( -∞, +∞) == invalid",
+ "( -∞, +∞) « [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) « [ 0, 0] == ( -∞, +∞)",
+ "[ 3, 6] « [...empty..] == [...empty..]",
+ "[...empty..] « [ 10, 15] == [...empty..]",
+ "[...empty..] « [...empty..] == [...empty..]",
+ "( -∞, +∞) « [...empty..] == [...empty..]",
- "[ 1, 4] << [ -11, -10] == invalid",
+ "[ 1, 4] « [ -11, -10] == invalid",
- "[ 1, 4] << [ -6, 2] == invalid",
+ "[ 1, 4] « [ -6, 2] == invalid",
- "[ -3, -1] << [ 0, 3] == [ -24, -1]",
- "[ -3, 0] << [ 0, 3] == [ -24, 0]",
- "[ -3, 1] << [ 0, 3] == [ -24, 8]",
- "[ -3, 4] << [ 0, 3] == [ -24, 32]",
- "[ -1, 4] << [ 0, 3] == [ -8, 32]",
- "[ 0, 4] << [ 0, 3] == [ 0, 32]",
- "[ 1, 4] << [ 0, 3] == [ 1, 32]",
+ "[ -3, -1] « [ 0, 3] == [ -24, -1]",
+ "[ -3, 0] « [ 0, 3] == [ -24, 0]",
+ "[ -3, 1] « [ 0, 3] == [ -24, 8]",
+ "[ -3, 4] « [ 0, 3] == [ -24, 32]",
+ "[ -1, 4] « [ 0, 3] == [ -8, 32]",
+ "[ 0, 4] « [ 0, 3] == [ 0, 32]",
+ "[ 1, 4] « [ 0, 3] == [ 1, 32]",
- "[ -3, -1] << [ 2, 3] == [ -24, -4]",
- "[ -3, 0] << [ 2, 3] == [ -24, 0]",
- "[ -3, 1] << [ 2, 3] == [ -24, 8]",
- "[ -3, 4] << [ 2, 3] == [ -24, 32]",
- "[ -1, 4] << [ 2, 3] == [ -8, 32]",
- "[ 0, 4] << [ 2, 3] == [ 0, 32]",
- "[ 1, 4] << [ 2, 3] == [ 4, 32]",
+ "[ -3, -1] « [ 2, 3] == [ -24, -4]",
+ "[ -3, 0] « [ 2, 3] == [ -24, 0]",
+ "[ -3, 1] « [ 2, 3] == [ -24, 8]",
+ "[ -3, 4] « [ 2, 3] == [ -24, 32]",
+ "[ -1, 4] « [ 2, 3] == [ -8, 32]",
+ "[ 0, 4] « [ 2, 3] == [ 0, 32]",
+ "[ 1, 4] « [ 2, 3] == [ 4, 32]",
- "[ -9, +∞) << [ 2, +∞) == ( -∞, +∞)",
- "[ -1, +∞) << [ 2, +∞) == ( -∞, +∞)",
- "[ 0, +∞) << [ 2, +∞) == [ 0, +∞)",
- "[ 1, +∞) << [ 2, +∞) == [ 4, +∞)",
- "[ 7, +∞) << [ 2, +∞) == [ 28, +∞)",
- "[ -1, 1] << ( -∞, +∞) == invalid",
- "[ 0, 0] << ( -∞, +∞) == invalid",
- "[ 1, 1] << ( -∞, +∞) == invalid",
+ "[ -9, +∞) « [ 2, +∞) == ( -∞, +∞)",
+ "[ -1, +∞) « [ 2, +∞) == ( -∞, +∞)",
+ "[ 0, +∞) « [ 2, +∞) == [ 0, +∞)",
+ "[ 1, +∞) « [ 2, +∞) == [ 4, +∞)",
+ "[ 7, +∞) « [ 2, +∞) == [ 28, +∞)",
+ "[ -1, 1] « ( -∞, +∞) == invalid",
+ "[ 0, 0] « ( -∞, +∞) == invalid",
+ "[ 1, 1] « ( -∞, +∞) == invalid",
)
}
func TestOpRsh(tt *testing.T) {
testOp(tt,
- "[ 3, 3] >> [ -5, -5] == invalid",
- "[ 3, 3] >> [ 0, 0] == [ 3, 3]",
- "[ 0, 0] >> [ -7, 7] == invalid",
- "[ 0, 2] >> [ 0, 5] == [ 0, 2]",
- "[ 3, 6] >> [ 10, 15] == [ 0, 0]",
- "[ 3, +∞) >> [ -4, -2] == invalid",
- "[ 3, +∞) >> [ 10, 15] == [ 0, +∞)",
- "[ 3, +∞) >> ( -∞, 15] == invalid",
- "[ 3, 6] >> ( -∞, 15] == invalid",
- "[ 3, 6] >> ( -∞, +∞) == invalid",
- "( -∞, +∞) >> ( -∞, +∞) == invalid",
- "( -∞, +∞) >> [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) >> [ 0, 0] == ( -∞, +∞)",
- "[ 3, 6] >> [...empty..] == [...empty..]",
- "[...empty..] >> [ 10, 15] == [...empty..]",
- "[...empty..] >> [...empty..] == [...empty..]",
- "( -∞, +∞) >> [...empty..] == [...empty..]",
+ "[ 3, 3] » [ -5, -5] == invalid",
+ "[ 3, 3] » [ 0, 0] == [ 3, 3]",
+ "[ 0, 0] » [ -7, 7] == invalid",
+ "[ 0, 2] » [ 0, 5] == [ 0, 2]",
+ "[ 3, 6] » [ 10, 15] == [ 0, 0]",
+ "[ 3, +∞) » [ -4, -2] == invalid",
+ "[ 3, +∞) » [ 10, 15] == [ 0, +∞)",
+ "[ 3, +∞) » ( -∞, 15] == invalid",
+ "[ 3, 6] » ( -∞, 15] == invalid",
+ "[ 3, 6] » ( -∞, +∞) == invalid",
+ "( -∞, +∞) » ( -∞, +∞) == invalid",
+ "( -∞, +∞) » [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) » [ 0, 0] == ( -∞, +∞)",
+ "[ 3, 6] » [...empty..] == [...empty..]",
+ "[...empty..] » [ 10, 15] == [...empty..]",
+ "[...empty..] » [...empty..] == [...empty..]",
+ "( -∞, +∞) » [...empty..] == [...empty..]",
- "[ 1, 4] >> [ -11, -10] == invalid",
+ "[ 1, 4] » [ -11, -10] == invalid",
- "[ 1, 4] >> [ -6, 2] == invalid",
+ "[ 1, 4] » [ -6, 2] == invalid",
- "[ -3, -1] >> [ 0, 3] == [ -3, -1]",
- "[ -3, 0] >> [ 0, 3] == [ -3, 0]",
- "[ -3, 1] >> [ 0, 3] == [ -3, 1]",
- "[ -3, 4] >> [ 0, 3] == [ -3, 4]",
- "[ -1, 4] >> [ 0, 3] == [ -1, 4]",
- "[ 0, 4] >> [ 0, 3] == [ 0, 4]",
- "[ 1, 4] >> [ 0, 3] == [ 0, 4]",
+ "[ -3, -1] » [ 0, 3] == [ -3, -1]",
+ "[ -3, 0] » [ 0, 3] == [ -3, 0]",
+ "[ -3, 1] » [ 0, 3] == [ -3, 1]",
+ "[ -3, 4] » [ 0, 3] == [ -3, 4]",
+ "[ -1, 4] » [ 0, 3] == [ -1, 4]",
+ "[ 0, 4] » [ 0, 3] == [ 0, 4]",
+ "[ 1, 4] » [ 0, 3] == [ 0, 4]",
- "[ -3, -1] >> [ 1, 3] == [ -2, -1]",
- "[ -3, 0] >> [ 1, 3] == [ -2, 0]",
- "[ -3, 1] >> [ 1, 3] == [ -2, 0]",
- "[ -3, 4] >> [ 1, 3] == [ -2, 2]",
- "[ -1, 4] >> [ 1, 3] == [ -1, 2]",
- "[ 0, 4] >> [ 1, 3] == [ 0, 2]",
- "[ 1, 4] >> [ 1, 3] == [ 0, 2]",
+ "[ -3, -1] » [ 1, 3] == [ -2, -1]",
+ "[ -3, 0] » [ 1, 3] == [ -2, 0]",
+ "[ -3, 1] » [ 1, 3] == [ -2, 0]",
+ "[ -3, 4] » [ 1, 3] == [ -2, 2]",
+ "[ -1, 4] » [ 1, 3] == [ -1, 2]",
+ "[ 0, 4] » [ 1, 3] == [ 0, 2]",
+ "[ 1, 4] » [ 1, 3] == [ 0, 2]",
- "[ -9, +∞) >> [ 2, +∞) == [ -3, +∞)",
- "[ -1, +∞) >> [ 2, +∞) == [ -1, +∞)",
- "[ 0, +∞) >> [ 2, +∞) == [ 0, +∞)",
- "[ 1, +∞) >> [ 2, +∞) == [ 0, +∞)",
- "[ 7, +∞) >> [ 2, +∞) == [ 0, +∞)",
- "[ -1, 1] >> ( -∞, +∞) == invalid",
- "[ 0, 0] >> ( -∞, +∞) == invalid",
- "[ 1, 1] >> ( -∞, +∞) == invalid",
+ "[ -9, +∞) » [ 2, +∞) == [ -3, +∞)",
+ "[ -1, +∞) » [ 2, +∞) == [ -1, +∞)",
+ "[ 0, +∞) » [ 2, +∞) == [ 0, +∞)",
+ "[ 1, +∞) » [ 2, +∞) == [ 0, +∞)",
+ "[ 7, +∞) » [ 2, +∞) == [ 0, +∞)",
+ "[ -1, 1] » ( -∞, +∞) == invalid",
+ "[ 0, 0] » ( -∞, +∞) == invalid",
+ "[ 1, 1] » ( -∞, +∞) == invalid",
)
}
func TestOpAnd(tt *testing.T) {
testOp(tt,
- "[ 3, 3] & [ -5, -5] == [ 3, 3]",
- "[ 3, 3] & [ 0, 0] == [ 0, 0]",
- "[ 0, 0] & [ -7, 7] == [ 0, 0]",
- "[ 0, 2] & [ 0, 5] == [ 0, 2]",
- "[ 3, 6] & [ 10, 15] == [ 0, 6]",
- "[ 3, +∞) & [ -4, -2] == [ 0, +∞)",
- "[ 3, +∞) & [ 10, 15] == [ 0, 15]",
- "[ 3, +∞) & ( -∞, 15] == [ 0, +∞)",
- "[ 3, 6] & ( -∞, 15] == [ 0, 6]",
- "[ 3, 6] & ( -∞, +∞) == [ 0, 6]",
- "( -∞, +∞) & ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) & [ 1, 2] == [ 0, 2]",
- "( -∞, +∞) & [ 0, 0] == [ 0, 0]",
- "[ 3, 6] & [...empty..] == [...empty..]",
- "[...empty..] & [ 10, 15] == [...empty..]",
- "[...empty..] & [...empty..] == [...empty..]",
- "( -∞, +∞) & [...empty..] == [...empty..]",
+ "[ 3, 3] & [ -5, -5] == [ 3, 3]",
+ "[ 3, 3] & [ 0, 0] == [ 0, 0]",
+ "[ 0, 0] & [ -7, 7] == [ 0, 0]",
+ "[ 0, 2] & [ 0, 5] == [ 0, 2]",
+ "[ 3, 6] & [ 10, 15] == [ 0, 6]",
+ "[ 3, +∞) & [ -4, -2] == [ 0, +∞)",
+ "[ 3, +∞) & [ 10, 15] == [ 0, 15]",
+ "[ 3, +∞) & ( -∞, 15] == [ 0, +∞)",
+ "[ 3, 6] & ( -∞, 15] == [ 0, 6]",
+ "[ 3, 6] & ( -∞, +∞) == [ 0, 6]",
+ "( -∞, +∞) & ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) & [ 1, 2] == [ 0, 2]",
+ "( -∞, +∞) & [ 0, 0] == [ 0, 0]",
+ "[ 3, 6] & [...empty..] == [...empty..]",
+ "[...empty..] & [ 10, 15] == [...empty..]",
+ "[...empty..] & [...empty..] == [...empty..]",
+ "( -∞, +∞) & [...empty..] == [...empty..]",
- "[ 1, 4] & [ -11, -10] == [ 0, 4]",
+ "[ 1, 4] & [ -11, -10] == [ 0, 4]",
- "[ 1, 4] & [ -6, 2] == [ 0, 4]",
+ "[ 1, 4] & [ -6, 2] == [ 0, 4]",
- "[ -3, -1] & [ 0, 3] == [ 0, 3]",
- "[ -1, 4] & [ 0, 3] == [ 0, 3]",
- "[ 0, 4] & [ 0, 3] == [ 0, 3]",
- "[ 1, 4] & [ 0, 3] == [ 0, 3]",
+ "[ -3, -1] & [ 0, 3] == [ 0, 3]",
+ "[ -1, 4] & [ 0, 3] == [ 0, 3]",
+ "[ 0, 4] & [ 0, 3] == [ 0, 3]",
+ "[ 1, 4] & [ 0, 3] == [ 0, 3]",
- "[ -3, -1] & [ 2, 3] == [ 0, 3]",
- "[ -1, 4] & [ 2, 3] == [ 0, 3]",
- "[ 0, 4] & [ 2, 3] == [ 0, 3]",
- "[ 1, 4] & [ 2, 3] == [ 0, 3]",
+ "[ -3, -1] & [ 2, 3] == [ 0, 3]",
+ "[ -1, 4] & [ 2, 3] == [ 0, 3]",
+ "[ 0, 4] & [ 2, 3] == [ 0, 3]",
+ "[ 1, 4] & [ 2, 3] == [ 0, 3]",
- "[ -9, +∞) & [ 2, +∞) == [ 0, +∞)",
- "[ -1, +∞) & [ 2, +∞) == [ 0, +∞)",
- "[ 0, +∞) & [ 2, +∞) == [ 0, +∞)",
- "[ 1, +∞) & [ 2, +∞) == [ 0, +∞)",
- "[ 7, +∞) & [ 2, +∞) == [ 0, +∞)",
- "[ -1, 1] & ( -∞, +∞) == ( -∞, +∞)",
- "[ 0, 0] & ( -∞, +∞) == [ 0, 0]",
- "[ 1, 1] & ( -∞, +∞) == [ 0, 1]",
+ "[ -9, +∞) & [ 2, +∞) == [ 0, +∞)",
+ "[ -1, +∞) & [ 2, +∞) == [ 0, +∞)",
+ "[ 0, +∞) & [ 2, +∞) == [ 0, +∞)",
+ "[ 1, +∞) & [ 2, +∞) == [ 0, +∞)",
+ "[ 7, +∞) & [ 2, +∞) == [ 0, +∞)",
+ "[ -1, 1] & ( -∞, +∞) == ( -∞, +∞)",
+ "[ 0, 0] & ( -∞, +∞) == [ 0, 0]",
+ "[ 1, 1] & ( -∞, +∞) == [ 0, 1]",
- "[ 1, 3] & [ 4, 9] == [ 0, 3]",
- "[ 3, 4] & [ 5, 6] == [ 1, 4]",
- "[ 4, 5] & [ 6, 7] == [ 4, 5]",
- "[ 7, 7] & [ 12, 14] == [ 4, 6]",
+ "[ 1, 3] & [ 4, 9] == [ 0, 3]",
+ "[ 3, 4] & [ 5, 6] == [ 1, 4]",
+ "[ 4, 5] & [ 6, 7] == [ 4, 5]",
+ "[ 7, 7] & [ 12, 14] == [ 4, 6]",
- "[ 5, 6] & [ 6, 7] == [ 4, 6]",
- "[ 5, 6] & [ 6, 8] == [ 0, 6]",
- "[ 5, 9] & [ 6, 8] == [ 0, 8]",
- "[ 5, 9] & [ 6, 9] == [ 0, 9]",
+ "[ 5, 6] & [ 6, 7] == [ 4, 6]",
+ "[ 5, 6] & [ 6, 8] == [ 0, 6]",
+ "[ 5, 9] & [ 6, 8] == [ 0, 8]",
+ "[ 5, 9] & [ 6, 9] == [ 0, 9]",
- "[ 5, 6] & [ 3, +∞) == [ 0, 6]",
- "[ 5, 9] & [ 3, +∞) == [ 0, 9]",
- "[ 5, 6] & [ 7, +∞) == [ 0, 6]",
- "[ 5, 9] & [ 7, +∞) == [ 0, 9]",
- "[ 5, 6] & [ 8, +∞) == [ 0, 6]",
- "[ 5, 9] & [ 8, +∞) == [ 0, 9]",
- "[ 5, 6] & [ 9, +∞) == [ 0, 6]",
- "[ 5, 9] & [ 9, +∞) == [ 0, 9]",
- "[ 5, 6] & [ 12, +∞) == [ 0, 6]",
- "[ 5, 9] & [ 12, +∞) == [ 0, 9]",
+ "[ 5, 6] & [ 3, +∞) == [ 0, 6]",
+ "[ 5, 9] & [ 3, +∞) == [ 0, 9]",
+ "[ 5, 6] & [ 7, +∞) == [ 0, 6]",
+ "[ 5, 9] & [ 7, +∞) == [ 0, 9]",
+ "[ 5, 6] & [ 8, +∞) == [ 0, 6]",
+ "[ 5, 9] & [ 8, +∞) == [ 0, 9]",
+ "[ 5, 6] & [ 9, +∞) == [ 0, 6]",
+ "[ 5, 9] & [ 9, +∞) == [ 0, 9]",
+ "[ 5, 6] & [ 12, +∞) == [ 0, 6]",
+ "[ 5, 9] & [ 12, +∞) == [ 0, 9]",
- "( -∞, -3] & [ -3, -2] == ( -∞, -3]",
- "[ 2, +∞) & [ 1, 2] == [ 0, 2]",
+ "( -∞, -3] & [ -3, -2] == ( -∞, -3]",
+ "[ 2, +∞) & [ 1, 2] == [ 0, 2]",
)
}
func TestOpOr(tt *testing.T) {
testOp(tt,
- "[ 3, 3] | [ -5, -5] == [ -5, -5]",
- "[ 3, 3] | [ 0, 0] == [ 3, 3]",
- "[ 0, 0] | [ -7, 7] == [ -7, 7]",
- "[ 0, 2] | [ 0, 5] == [ 0, 7]",
- "[ 3, 6] | [ 10, 15] == [ 11, 15]",
- "[ 3, +∞) | [ -4, -2] == [ -4, -1]",
- "[ 3, +∞) | [ 10, 15] == [ 10, +∞)",
- "[ 3, +∞) | ( -∞, 15] == ( -∞, +∞)",
- "[ 3, 6] | ( -∞, 15] == ( -∞, 15]",
- "[ 3, 6] | ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) | ( -∞, +∞) == ( -∞, +∞)",
- "( -∞, +∞) | [ 1, 2] == ( -∞, +∞)",
- "( -∞, +∞) | [ 0, 0] == ( -∞, +∞)",
- "[ 3, 6] | [...empty..] == [...empty..]",
- "[...empty..] | [ 10, 15] == [...empty..]",
- "[...empty..] | [...empty..] == [...empty..]",
- "( -∞, +∞) | [...empty..] == [...empty..]",
+ "[ 3, 3] | [ -5, -5] == [ -5, -5]",
+ "[ 3, 3] | [ 0, 0] == [ 3, 3]",
+ "[ 0, 0] | [ -7, 7] == [ -7, 7]",
+ "[ 0, 2] | [ 0, 5] == [ 0, 7]",
+ "[ 3, 6] | [ 10, 15] == [ 11, 15]",
+ "[ 3, +∞) | [ -4, -2] == [ -4, -1]",
+ "[ 3, +∞) | [ 10, 15] == [ 10, +∞)",
+ "[ 3, +∞) | ( -∞, 15] == ( -∞, +∞)",
+ "[ 3, 6] | ( -∞, 15] == ( -∞, 15]",
+ "[ 3, 6] | ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) | ( -∞, +∞) == ( -∞, +∞)",
+ "( -∞, +∞) | [ 1, 2] == ( -∞, +∞)",
+ "( -∞, +∞) | [ 0, 0] == ( -∞, +∞)",
+ "[ 3, 6] | [...empty..] == [...empty..]",
+ "[...empty..] | [ 10, 15] == [...empty..]",
+ "[...empty..] | [...empty..] == [...empty..]",
+ "( -∞, +∞) | [...empty..] == [...empty..]",
- "[ 1, 4] | [ -11, -10] == [ -11, -9]",
+ "[ 1, 4] | [ -11, -10] == [ -11, -9]",
- "[ 1, 4] | [ -6, 2] == [ -6, 6]",
+ "[ 1, 4] | [ -6, 2] == [ -6, 6]",
- "[ -3, -1] | [ 0, 3] == [ -3, -1]",
- "[ -1, 4] | [ 0, 3] == [ -1, 7]",
- "[ 0, 4] | [ 0, 3] == [ 0, 7]",
- "[ 1, 4] | [ 0, 3] == [ 1, 7]",
+ "[ -3, -1] | [ 0, 3] == [ -3, -1]",
+ "[ -1, 4] | [ 0, 3] == [ -1, 7]",
+ "[ 0, 4] | [ 0, 3] == [ 0, 7]",
+ "[ 1, 4] | [ 0, 3] == [ 1, 7]",
- "[ -3, -1] | [ 2, 3] == [ -2, -1]",
- "[ -1, 4] | [ 2, 3] == [ -1, 7]",
- "[ 0, 4] | [ 2, 3] == [ 2, 7]",
- "[ 1, 4] | [ 2, 3] == [ 2, 7]",
+ "[ -3, -1] | [ 2, 3] == [ -2, -1]",
+ "[ -1, 4] | [ 2, 3] == [ -1, 7]",
+ "[ 0, 4] | [ 2, 3] == [ 2, 7]",
+ "[ 1, 4] | [ 2, 3] == [ 2, 7]",
- "[ -9, +∞) | [ 2, +∞) == [ -9, +∞)",
- "[ -1, +∞) | [ 2, +∞) == [ -1, +∞)",
- "[ 0, +∞) | [ 2, +∞) == [ 2, +∞)",
- "[ 1, +∞) | [ 2, +∞) == [ 2, +∞)",
- "[ 7, +∞) | [ 2, +∞) == [ 7, +∞)",
- "[ -1, 1] | ( -∞, +∞) == ( -∞, +∞)",
- "[ 0, 0] | ( -∞, +∞) == ( -∞, +∞)",
- "[ 1, 1] | ( -∞, +∞) == ( -∞, +∞)",
+ "[ -9, +∞) | [ 2, +∞) == [ -9, +∞)",
+ "[ -1, +∞) | [ 2, +∞) == [ -1, +∞)",
+ "[ 0, +∞) | [ 2, +∞) == [ 2, +∞)",
+ "[ 1, +∞) | [ 2, +∞) == [ 2, +∞)",
+ "[ 7, +∞) | [ 2, +∞) == [ 7, +∞)",
+ "[ -1, 1] | ( -∞, +∞) == ( -∞, +∞)",
+ "[ 0, 0] | ( -∞, +∞) == ( -∞, +∞)",
+ "[ 1, 1] | ( -∞, +∞) == ( -∞, +∞)",
- "[ 1, 3] | [ 4, 9] == [ 5, 11]",
- "[ 3, 4] | [ 5, 6] == [ 5, 7]",
- "[ 4, 5] | [ 6, 7] == [ 6, 7]",
- "[ 7, 7] | [ 12, 14] == [ 15, 15]",
+ "[ 1, 3] | [ 4, 9] == [ 5, 11]",
+ "[ 3, 4] | [ 5, 6] == [ 5, 7]",
+ "[ 4, 5] | [ 6, 7] == [ 6, 7]",
+ "[ 7, 7] | [ 12, 14] == [ 15, 15]",
- "[ 5, 6] | [ 6, 7] == [ 6, 7]",
- "[ 5, 6] | [ 6, 8] == [ 6, 14]",
- "[ 5, 9] | [ 6, 8] == [ 6, 15]",
- "[ 5, 9] | [ 6, 9] == [ 6, 15]",
+ "[ 5, 6] | [ 6, 7] == [ 6, 7]",
+ "[ 5, 6] | [ 6, 8] == [ 6, 14]",
+ "[ 5, 9] | [ 6, 8] == [ 6, 15]",
+ "[ 5, 9] | [ 6, 9] == [ 6, 15]",
- "[ 5, 6] | [ 3, +∞) == [ 5, +∞)",
- "[ 5, 9] | [ 3, +∞) == [ 5, +∞)",
- "[ 5, 6] | [ 7, +∞) == [ 7, +∞)",
- "[ 5, 9] | [ 7, +∞) == [ 7, +∞)",
- "[ 5, 6] | [ 8, +∞) == [ 13, +∞)",
- "[ 5, 9] | [ 8, +∞) == [ 8, +∞)",
- "[ 5, 6] | [ 9, +∞) == [ 13, +∞)",
- "[ 5, 9] | [ 9, +∞) == [ 9, +∞)",
- "[ 5, 6] | [ 12, +∞) == [ 13, +∞)",
- "[ 5, 9] | [ 12, +∞) == [ 12, +∞)",
+ "[ 5, 6] | [ 3, +∞) == [ 5, +∞)",
+ "[ 5, 9] | [ 3, +∞) == [ 5, +∞)",
+ "[ 5, 6] | [ 7, +∞) == [ 7, +∞)",
+ "[ 5, 9] | [ 7, +∞) == [ 7, +∞)",
+ "[ 5, 6] | [ 8, +∞) == [ 13, +∞)",
+ "[ 5, 9] | [ 8, +∞) == [ 8, +∞)",
+ "[ 5, 6] | [ 9, +∞) == [ 13, +∞)",
+ "[ 5, 9] | [ 9, +∞) == [ 9, +∞)",
+ "[ 5, 6] | [ 12, +∞) == [ 13, +∞)",
+ "[ 5, 9] | [ 12, +∞) == [ 12, +∞)",
- "( -∞, -3] | [ -3, -2] == [ -3, -1]",
- "[ 2, +∞) | [ 1, 2] == [ 2, +∞)",
+ "( -∞, -3] | [ -3, -2] == [ -3, -1]",
+ "[ 2, +∞) | [ 1, 2] == [ 2, +∞)",
)
}
diff --git a/lib/interval/radial_test.go b/lib/interval/radial_test.go
index e69acfb..4cd1a94 100644
--- a/lib/interval/radial_test.go
+++ b/lib/interval/radial_test.go
@@ -440,18 +440,18 @@
return radialOutPair{ox | oy, ox | oy}
}
-var riOperators = map[string]func(radialInput, radialInput) radialOutPair{
- "+": radialInput.Add,
- "-": radialInput.Sub,
- "*": radialInput.Mul,
- "/": radialInput.Quo,
- "<<": radialInput.Lsh,
- ">>": radialInput.Rsh,
- "&": radialInput.And,
- "|": radialInput.Or,
+var riOperators = map[rune]func(radialInput, radialInput) radialOutPair{
+ '+': radialInput.Add,
+ '-': radialInput.Sub,
+ '*': radialInput.Mul,
+ '/': radialInput.Quo,
+ '«': radialInput.Lsh,
+ '»': radialInput.Rsh,
+ '&': radialInput.And,
+ '|': radialInput.Or,
}
-func bruteForce(x IntRange, y IntRange, opKey string) (z IntRange, ok bool) {
+func bruteForce(x IntRange, y IntRange, opKey rune) (z IntRange, ok bool) {
op := riOperators[opKey]
iMin, iMax := enumerate(x)
jMin, jMax := enumerate(y)
@@ -472,7 +472,7 @@
}
switch opKey {
- case "∪":
+ case '∪':
if iMinC, iMaxC := iMin.canonicalize(), iMax.canonicalize(); iMinC <= iMaxC {
merge(radialOutPair{iMinC, iMaxC})
}
@@ -486,7 +486,7 @@
result[1] = +roRadius + 1
}
- case "∩":
+ case '∩':
iMinC, iMaxC := iMin.canonicalize(), iMax.canonicalize()
for j := jMin; j <= jMax; j++ {
jC := j.canonicalize()