+++ /dev/null
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This file contains tests for some of the internal functions.
-
-package main
-
-import (
- "fmt"
- "testing"
-)
-
-// Helpers to save typing in the test cases.
-type u []uint64
-type uu [][]uint64
-
-type SplitTest struct {
- input u
- output uu
- signed bool
-}
-
-var (
- m2 = uint64(2)
- m1 = uint64(1)
- m0 = uint64(0)
- m_1 = ^uint64(0) // -1 when signed.
- m_2 = ^uint64(0) - 1 // -2 when signed.
-)
-
-var splitTests = []SplitTest{
- // No need for a test for the empty case; that's picked off before splitIntoRuns.
- // Single value.
- {u{1}, uu{u{1}}, false},
- // Out of order.
- {u{3, 2, 1}, uu{u{1, 2, 3}}, true},
- // Out of order.
- {u{3, 2, 1}, uu{u{1, 2, 3}}, false},
- // A gap at the beginning.
- {u{1, 33, 32, 31}, uu{u{1}, u{31, 32, 33}}, true},
- // A gap in the middle, in mixed order.
- {u{33, 7, 32, 31, 9, 8}, uu{u{7, 8, 9}, u{31, 32, 33}}, true},
- // Gaps throughout
- {u{33, 44, 1, 32, 45, 31}, uu{u{1}, u{31, 32, 33}, u{44, 45}}, true},
- // Unsigned values spanning 0.
- {u{m1, m0, m_1, m2, m_2}, uu{u{m0, m1, m2}, u{m_2, m_1}}, false},
- // Signed values spanning 0
- {u{m1, m0, m_1, m2, m_2}, uu{u{m_2, m_1, m0, m1, m2}}, true},
-}
-
-func TestSplitIntoRuns(t *testing.T) {
-Outer:
- for n, test := range splitTests {
- values := make([]Value, len(test.input))
- for i, v := range test.input {
- values[i] = Value{"", "", v, test.signed, fmt.Sprint(v)}
- }
- runs := splitIntoRuns(values)
- if len(runs) != len(test.output) {
- t.Errorf("#%d: %v: got %d runs; expected %d", n, test.input, len(runs), len(test.output))
- continue
- }
- for i, run := range runs {
- if len(run) != len(test.output[i]) {
- t.Errorf("#%d: got %v; expected %v", n, runs, test.output)
- continue Outer
- }
- for j, v := range run {
- if v.value != test.output[i][j] {
- t.Errorf("#%d: got %v; expected %v", n, runs, test.output)
- continue Outer
- }
- }
- }
- }
-}