| // Copyright 2011 The Snappy-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. |
| |
| package zigzag |
| |
| import ( |
| "testing" |
| ) |
| |
| var testCases = []struct { |
| u uint64 |
| i int64 |
| }{ |
| {0, +0}, |
| {1, -1}, |
| {2, +1}, |
| {3, -2}, |
| {4, +2}, |
| {5, -3}, |
| {6, +3}, |
| {199, -100}, |
| {200, +100}, |
| {1<<32 - 2, +1<<31 - 1}, |
| {1<<32 - 1, -1<<31 - 0}, |
| {1<<32 + 0, +1<<31 + 0}, |
| {1<<32 + 1, -1<<31 - 1}, |
| {1<<32 + 2, +1<<31 + 1}, |
| {1<<64 - 2, +1<<63 - 1}, |
| {1<<64 - 1, -1<<63 + 0}, |
| } |
| |
| func TestZigzag(t *testing.T) { |
| for _, tc := range testCases { |
| if i := Utoi64(tc.u); i != tc.i { |
| t.Errorf("uint64 %d to int64: want %d got %d", tc.u, tc.i, i) |
| } |
| if u := Itou64(tc.i); u != tc.u { |
| t.Errorf("int64 %d to uint64: want %d got %d", tc.i, tc.u, u) |
| } |
| } |
| } |