github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/cmds/exp/cbmem/timestamps_test.go (about) 1 // Copyright 2016-2017 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 main 6 7 import ( 8 "fmt" 9 "os" 10 "path/filepath" 11 "testing" 12 ) 13 14 func TestReadTimeStamps(t *testing.T) { 15 tmpDir := t.TempDir() 16 for _, tt := range []struct { 17 name string 18 addr uint32 19 want string 20 }{ 21 { 22 name: "addr = 0", 23 addr: 0, 24 want: "no time stamps", 25 }, 26 { 27 name: "addr = 0xffffffff, err", 28 addr: 0xffffffff, 29 want: "creating TSHeader offsetReader @ 0xffffffff: cbmem tables can only be in 32-bit space and (0xffffffff-0x10000000f is outside it", 30 }, 31 { 32 name: "addr = 0x000004ff, no err", 33 addr: 0x000004ff, 34 want: "26728810564608", 35 }, 36 } { 37 t.Run(tt.name, func(t *testing.T) { 38 c := CBmem{} 39 c.TimeStampsTable.Addr = tt.addr 40 41 // Creating file 42 file, err := os.Create(filepath.Join(tmpDir, "file")) 43 if err != nil { 44 t.Errorf("Failed to create file: %v", err) 45 } 46 defer file.Close() 47 48 if err := genFile(file, t.Logf, apu2); err != nil { 49 t.Errorf("could not gen file: %v", err) 50 } 51 52 got, err := c.readTimeStamps(file) 53 if err != nil { 54 if err.Error() != tt.want { 55 t.Errorf("readTimeStamps() = %q, want: %q", err.Error(), tt.want) 56 } 57 } else { 58 if fmt.Sprint(got.BaseTime) != tt.want { 59 t.Errorf("readTimeStamps() = '%d', want: %q", got.BaseTime, tt.want) 60 } 61 } 62 }) 63 } 64 }