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: &notImplementSnapshotter{}}
    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  }