github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/pkg/align/align_test.go (about) 1 // Copyright 2015-2022 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package align 6 7 import ( 8 "testing" 9 ) 10 11 func TestUp(t *testing.T) { 12 for _, tt := range []struct { 13 name string 14 val uint 15 alignSize uint 16 want uint 17 }{ 18 { 19 name: "below", 20 val: uint(0x02), 21 alignSize: uint(0x04), 22 want: uint(0x04), 23 }, 24 { 25 name: "already aligned", 26 val: uint(0x04), 27 alignSize: uint(0x04), 28 want: uint(0x04), 29 }, 30 { 31 name: "next", 32 val: uint(0x05), 33 alignSize: uint(0x04), 34 want: uint(0x08), 35 }, 36 { 37 name: "different alignSize, already aligned", 38 val: uint(0x08), 39 alignSize: uint(0x08), 40 want: uint(0x08), 41 }, 42 { 43 name: "different alignSize, below", 44 val: uint(0x07), 45 alignSize: uint(0x08), 46 want: uint(0x08), 47 }, 48 { 49 name: "different alignSize, next", 50 val: uint(0x09), 51 alignSize: uint(0x08), 52 want: uint(0x10), 53 }, 54 } { 55 t.Run(tt.name, func(t *testing.T) { 56 got := Up(tt.val, tt.alignSize) 57 if got != tt.want { 58 t.Errorf("Up(%#02x, %#02x) = %#02x, want: %#02x", tt.val, tt.alignSize, got, tt.want) 59 } 60 61 pageSize = tt.alignSize 62 got = UpPage(tt.val) 63 if got != tt.want { 64 t.Errorf("UpPage(%#02x) = %#02x, want: %#02x", tt.val, got, tt.want) 65 } 66 }) 67 } 68 } 69 70 func TestDown(t *testing.T) { 71 for _, tt := range []struct { 72 name string 73 val uint 74 alignSize uint 75 want uint 76 }{ 77 { 78 name: "below", 79 val: uint(0x02), 80 alignSize: uint(0x04), 81 want: uint(0x00), 82 }, 83 { 84 name: "already aligned", 85 val: uint(0x04), 86 alignSize: uint(0x04), 87 want: uint(0x04), 88 }, 89 { 90 name: "next", 91 val: uint(0x05), 92 alignSize: uint(0x04), 93 want: uint(0x04), 94 }, 95 { 96 name: "different alignSize, already aligned", 97 val: uint(0x08), 98 alignSize: uint(0x08), 99 want: uint(0x08), 100 }, 101 { 102 name: "different alignSize, below", 103 val: uint(0x07), 104 alignSize: uint(0x08), 105 want: uint(0x00), 106 }, 107 { 108 name: "different alignSize, next", 109 val: uint(0x09), 110 alignSize: uint(0x08), 111 want: uint(0x08), 112 }, 113 } { 114 t.Run(tt.name, func(t *testing.T) { 115 got := Down(tt.val, tt.alignSize) 116 if got != tt.want { 117 t.Errorf("Down(%#02x, %#02x) = %#02x, want: %#02x", tt.val, tt.alignSize, got, tt.want) 118 } 119 120 pageSize = tt.alignSize 121 got = DownPage(tt.val) 122 if got != tt.want { 123 t.Errorf("DownPage(%#02x) = %#02x, want: %#02x", tt.val, got, tt.want) 124 } 125 }) 126 } 127 }