| // Copyright 2015 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. |
| |
| package fixed |
| |
| import ( |
| "testing" |
| ) |
| |
| var testCases = []struct { |
| x float64 |
| s26_6 string |
| s52_12 string |
| floor int |
| round int |
| ceil int |
| }{{ |
| x: 0, |
| s26_6: "0:00", |
| s52_12: "0:0000", |
| floor: 0, |
| round: 0, |
| ceil: 0, |
| }, { |
| x: 1, |
| s26_6: "1:00", |
| s52_12: "1:0000", |
| floor: 1, |
| round: 1, |
| ceil: 1, |
| }, { |
| x: 1.25, |
| s26_6: "1:16", |
| s52_12: "1:1024", |
| floor: 1, |
| round: 1, |
| ceil: 2, |
| }, { |
| x: 2.5, |
| s26_6: "2:32", |
| s52_12: "2:2048", |
| floor: 2, |
| round: 3, |
| ceil: 3, |
| }, { |
| x: 63 / 64.0, |
| s26_6: "0:63", |
| s52_12: "0:4032", |
| floor: 0, |
| round: 1, |
| ceil: 1, |
| }, { |
| x: -0.5, |
| s26_6: "-0:32", |
| s52_12: "-0:2048", |
| floor: -1, |
| round: +0, |
| ceil: +0, |
| }, { |
| x: -4.125, |
| s26_6: "-4:08", |
| s52_12: "-4:0512", |
| floor: -5, |
| round: -4, |
| ceil: -4, |
| }, { |
| x: -7.75, |
| s26_6: "-7:48", |
| s52_12: "-7:3072", |
| floor: -8, |
| round: -8, |
| ceil: -7, |
| }} |
| |
| func TestInt26_6(t *testing.T) { |
| for _, tc := range testCases { |
| x := Int26_6(tc.x * (1 << 6)) |
| if got, want := x.String(), tc.s26_6; got != want { |
| t.Errorf("tc.x=%v: String: got %q, want %q", tc.x, got, want) |
| } |
| if got, want := x.Floor(), tc.floor; got != want { |
| t.Errorf("tc.x=%v: Floor: got %v, want %v", tc.x, got, want) |
| } |
| if got, want := x.Round(), tc.round; got != want { |
| t.Errorf("tc.x=%v: Round: got %v, want %v", tc.x, got, want) |
| } |
| if got, want := x.Ceil(), tc.ceil; got != want { |
| t.Errorf("tc.x=%v: Ceil: got %v, want %v", tc.x, got, want) |
| } |
| } |
| } |
| |
| func TestInt52_12(t *testing.T) { |
| for _, tc := range testCases { |
| x := Int52_12(tc.x * (1 << 12)) |
| if got, want := x.String(), tc.s52_12; got != want { |
| t.Errorf("tc.x=%v: String: got %q, want %q", tc.x, got, want) |
| } |
| if got, want := x.Floor(), tc.floor; got != want { |
| t.Errorf("tc.x=%v: Floor: got %v, want %v", tc.x, got, want) |
| } |
| if got, want := x.Round(), tc.round; got != want { |
| t.Errorf("tc.x=%v: Round: got %v, want %v", tc.x, got, want) |
| } |
| if got, want := x.Ceil(), tc.ceil; got != want { |
| t.Errorf("tc.x=%v: Ceil: got %v, want %v", tc.x, got, want) |
| } |
| } |
| } |