go-hep.org/x/hep@v0.38.1/groot/riofs/utils_test.go (about) 1 // Copyright ©2018 The go-hep 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 riofs 6 7 import ( 8 "testing" 9 "time" 10 ) 11 12 func TestDatime2time(t *testing.T) { 13 for _, tc := range []struct { 14 datime uint32 15 want time.Time 16 }{ 17 { 18 datime: 1576331001, 19 want: time.Date(2018, time.July, 26, 14, 27, 57, 0, time.UTC), 20 }, 21 { 22 datime: 1576331001, 23 want: time.Date(2018, time.July, 26, 14, 27, 57, 0, time.UTC), 24 }, 25 { 26 datime: 347738243, 27 want: time.Date(2000, time.February, 29, 1, 2, 3, 0, time.UTC), 28 }, 29 { 30 datime: 4325376, 31 want: time.Date(1995, time.January, 1, 0, 0, 0, 0, time.UTC), 32 }, 33 } { 34 t.Run(tc.want.String(), func(t *testing.T) { 35 got := datime2time(tc.datime) 36 if !got.Equal(tc.want) { 37 t.Fatalf("got=%v. want=%v", got, tc.want) 38 } 39 40 datime := time2datime(tc.want) 41 if datime != tc.datime { 42 t.Fatalf("got=%v. want=%v", datime, tc.datime) 43 } 44 }) 45 } 46 } 47 48 func TestTime2Datime(t *testing.T) { 49 for _, tc := range []struct { 50 time time.Time 51 want uint32 52 panicks bool 53 }{ 54 { 55 time: time.Date(2018, time.July, 26, 14, 27, 57, 0, time.UTC), 56 want: 1576331001, 57 }, 58 { 59 time: time.Date(2000, time.February, 29, 1, 2, 3, 0, time.UTC), 60 want: 347738243, 61 }, 62 { 63 time: time.Date(1995, time.January, 1, 0, 0, 0, 0, time.UTC), 64 want: 4325376, 65 }, 66 { 67 time: time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC), 68 panicks: true, 69 }, 70 } { 71 t.Run(tc.time.String(), func(t *testing.T) { 72 if tc.panicks { 73 defer func() { 74 if recover() == nil { 75 t.Fatalf("should have panicked.") 76 } 77 }() 78 } 79 { 80 got := time2datime(tc.time) 81 if got != tc.want { 82 t.Fatalf("got=%v. want=%v", got, tc.want) 83 } 84 } 85 86 { 87 got := datime2time(tc.want) 88 if !got.Equal(tc.time) { 89 t.Fatalf("got=%v. want=%v", got, tc.time) 90 } 91 } 92 }) 93 } 94 } 95 96 func TestDecodeNameCycle(t *testing.T) { 97 for _, tc := range []struct { 98 nc string 99 name string 100 cycle int16 101 panics bool 102 }{ 103 { 104 nc: "name", 105 name: "name", 106 cycle: 9999, 107 }, 108 { 109 nc: "name;0", 110 name: "name", 111 cycle: 0, 112 }, 113 { 114 nc: "name;1", 115 name: "name", 116 cycle: 1, 117 }, 118 { 119 nc: "name;42", 120 name: "name", 121 cycle: 42, 122 }, 123 { 124 nc: "name;42.0", 125 name: "name", 126 cycle: 9999, 127 }, 128 { 129 nc: "name;e", 130 name: "name", 131 cycle: 9999, 132 }, 133 { 134 nc: "nam;e;1", 135 name: "name", 136 cycle: 0, 137 panics: true, 138 }, 139 } { 140 t.Run(tc.nc, func(t *testing.T) { 141 if tc.panics { 142 defer func() { 143 e := recover() 144 if e == nil { 145 t.Fatalf("should have panicked.") 146 } 147 }() 148 } 149 n, c := decodeNameCycle(tc.nc) 150 if n != tc.name { 151 t.Fatalf("got=%q. want=%q", n, tc.name) 152 } 153 if c != tc.cycle { 154 t.Fatalf("got=%d. want=%d", c, tc.cycle) 155 } 156 }) 157 } 158 }