github.com/ssgreg/logf@v1.4.1/snapshotter_test.go (about) 1 package logf 2 3 import ( 4 "testing" 5 "time" 6 "unsafe" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestSnapshotNilAny(t *testing.T) { 12 f := Field{Type: FieldTypeAny} 13 14 snapshotField(&f) 15 assert.True(t, f.Type&FieldTypeRawMask == 0) 16 assert.Nil(t, f.Bytes) 17 } 18 19 type notImplementSnapshotter struct{} 20 21 func TestSnapshotAnyNotImplementSnapshotter(t *testing.T) { 22 f := Field{Type: FieldTypeAny, Any: ¬ImplementSnapshotter{}} 23 any := f.Any 24 25 snapshotField(&f) 26 assert.Equal(t, unsafe.Pointer(f.Any.(*notImplementSnapshotter)), unsafe.Pointer(any.(*notImplementSnapshotter))) 27 } 28 29 func TestSnapshotAnyImplementSnapshotter(t *testing.T) { 30 obj := testSnapshotter{} 31 f := Field{Type: FieldTypeAny, Any: &obj} 32 33 snapshotField(&f) 34 assert.True(t, obj.Called) 35 assert.NotEqual(t, unsafe.Pointer(f.Any.(*testSnapshotter)), &obj) 36 } 37 38 func TestSnapshotBytes(t *testing.T) { 39 f := Bytes("", []byte{0}) 40 assert.True(t, f.Type&FieldTypeRawMask != 0) 41 rawArray := f.Bytes 42 43 snapshotField(&f) 44 assert.True(t, f.Type&FieldTypeRawMask == 0) 45 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 46 assert.Equal(t, f.Bytes, rawArray) 47 } 48 49 func TestSnapshotBools(t *testing.T) { 50 f := Bools("", []bool{true}) 51 assert.True(t, f.Type&FieldTypeRawMask != 0) 52 rawArray := f.Bytes 53 54 snapshotField(&f) 55 assert.True(t, f.Type&FieldTypeRawMask == 0) 56 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 57 assert.Equal(t, f.Bytes, rawArray) 58 } 59 60 func TestSnapshotInts(t *testing.T) { 61 f := Ints("", []int{0}) 62 assert.True(t, f.Type&FieldTypeRawMask != 0) 63 rawArray := f.Bytes 64 65 snapshotField(&f) 66 assert.True(t, f.Type&FieldTypeRawMask == 0) 67 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 68 assert.Equal(t, f.Bytes, rawArray) 69 } 70 71 func TestSnapshotInts64(t *testing.T) { 72 f := Ints64("", []int64{0}) 73 assert.True(t, f.Type&FieldTypeRawMask != 0) 74 rawArray := f.Bytes 75 76 snapshotField(&f) 77 assert.True(t, f.Type&FieldTypeRawMask == 0) 78 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 79 assert.Equal(t, f.Bytes, rawArray) 80 } 81 82 func TestSnapshotInts32(t *testing.T) { 83 f := Ints32("", []int32{0}) 84 assert.True(t, f.Type&FieldTypeRawMask != 0) 85 rawArray := f.Bytes 86 87 snapshotField(&f) 88 assert.True(t, f.Type&FieldTypeRawMask == 0) 89 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 90 assert.Equal(t, f.Bytes, rawArray) 91 } 92 93 func TestSnapshotInts16(t *testing.T) { 94 f := Ints16("", []int16{0}) 95 assert.True(t, f.Type&FieldTypeRawMask != 0) 96 rawArray := f.Bytes 97 98 snapshotField(&f) 99 assert.True(t, f.Type&FieldTypeRawMask == 0) 100 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 101 assert.Equal(t, f.Bytes, rawArray) 102 } 103 104 func TestSnapshotInts8(t *testing.T) { 105 f := Ints8("", []int8{0}) 106 assert.True(t, f.Type&FieldTypeRawMask != 0) 107 rawArray := f.Bytes 108 109 snapshotField(&f) 110 assert.True(t, f.Type&FieldTypeRawMask == 0) 111 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 112 assert.Equal(t, f.Bytes, rawArray) 113 } 114 115 func TestSnapshotUints(t *testing.T) { 116 f := Uints("", []uint{0}) 117 assert.True(t, f.Type&FieldTypeRawMask != 0) 118 rawArray := f.Bytes 119 120 snapshotField(&f) 121 assert.True(t, f.Type&FieldTypeRawMask == 0) 122 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 123 assert.Equal(t, f.Bytes, rawArray) 124 } 125 126 func TestSnapshotUints64(t *testing.T) { 127 f := Uints64("", []uint64{0}) 128 assert.True(t, f.Type&FieldTypeRawMask != 0) 129 rawArray := f.Bytes 130 131 snapshotField(&f) 132 assert.True(t, f.Type&FieldTypeRawMask == 0) 133 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 134 assert.Equal(t, f.Bytes, rawArray) 135 } 136 137 func TestSnapshotUints32(t *testing.T) { 138 f := Uints32("", []uint32{0}) 139 assert.True(t, f.Type&FieldTypeRawMask != 0) 140 rawArray := f.Bytes 141 142 snapshotField(&f) 143 assert.True(t, f.Type&FieldTypeRawMask == 0) 144 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 145 assert.Equal(t, f.Bytes, rawArray) 146 } 147 148 func TestSnapshotUints16(t *testing.T) { 149 f := Uints16("", []uint16{0}) 150 assert.True(t, f.Type&FieldTypeRawMask != 0) 151 rawArray := f.Bytes 152 153 snapshotField(&f) 154 assert.True(t, f.Type&FieldTypeRawMask == 0) 155 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 156 assert.Equal(t, f.Bytes, rawArray) 157 } 158 159 func TestSnapshotUints8(t *testing.T) { 160 f := Uints8("", []uint8{0}) 161 assert.True(t, f.Type&FieldTypeRawMask != 0) 162 rawArray := f.Bytes 163 164 snapshotField(&f) 165 assert.True(t, f.Type&FieldTypeRawMask == 0) 166 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 167 assert.Equal(t, f.Bytes, rawArray) 168 } 169 170 func TestSnapshotFloats64(t *testing.T) { 171 f := Floats64("", []float64{0}) 172 assert.True(t, f.Type&FieldTypeRawMask != 0) 173 rawArray := f.Bytes 174 175 snapshotField(&f) 176 assert.True(t, f.Type&FieldTypeRawMask == 0) 177 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 178 assert.Equal(t, f.Bytes, rawArray) 179 } 180 181 func TestSnapshotFloats32(t *testing.T) { 182 f := Floats32("", []float32{0}) 183 assert.True(t, f.Type&FieldTypeRawMask != 0) 184 rawArray := f.Bytes 185 186 snapshotField(&f) 187 assert.True(t, f.Type&FieldTypeRawMask == 0) 188 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 189 assert.Equal(t, f.Bytes, rawArray) 190 } 191 192 func TestSnapshotDurations(t *testing.T) { 193 f := Durations("", []time.Duration{time.Second}) 194 assert.True(t, f.Type&FieldTypeRawMask != 0) 195 rawArray := f.Bytes 196 197 snapshotField(&f) 198 assert.True(t, f.Type&FieldTypeRawMask == 0) 199 assert.NotEqual(t, unsafe.Pointer(&f.Bytes), unsafe.Pointer(&rawArray)) 200 assert.Equal(t, f.Bytes, rawArray) 201 }