github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/unsafekit/reference_test.go (about) 1 // Copyright 2020 Insolar Network Ltd. 2 // All rights reserved. 3 // This material is licensed under the Insolar License version 1.0, 4 // available at https://github.com/insolar/assured-ledger/blob/master/LICENSE.md. 5 6 package unsafekit 7 8 /* 9 10 func TestRefMappable(t *testing.T) { 11 var v reference.Local 12 require.Equal(t, MemoryModelDepended, MemoryModelDependencyOf(reflect.TypeOf(v))) 13 } 14 15 func TestLocalRefSize(t *testing.T) { 16 var v reference.Local 17 if unsafe.Sizeof(v) != reference.LocalBinarySize { 18 panic("unexpected alignment of reference.Local") 19 } 20 } 21 22 func TestGlobalRefSize(t *testing.T) { 23 var v reference.Global 24 if unsafe.Sizeof(v) != reference.GlobalBinarySize { 25 panic("unexpected alignment of reference.Global") 26 } 27 } 28 29 func TestWrapLocalRef(t *testing.T) { 30 if BigEndian { 31 t.SkipNow() 32 } 33 34 binary := [reference.LocalBinarySize]byte{} 35 binary[0] = 1 36 binary[1] = 2 37 binary[2] = 3 38 binary[3] = 4 39 ref := UnwrapAsLocalRef(WrapBytes(binary[:])) 40 require.Equal(t, 0x04030201, int(ref.GetPulseNumber())) 41 binary[0] = 0xFF 42 require.Equal(t, 0x040302FF, int(ref.GetPulseNumber())) 43 44 runtime.KeepAlive(binary) 45 } 46 47 func TestWrapAs(t *testing.T) { 48 if BigEndian { 49 t.SkipNow() 50 } 51 52 binary := [reference.LocalBinarySize]byte{} 53 binary[0] = 1 54 binary[1] = 2 55 binary[2] = 3 56 binary[3] = 4 57 var v reference.Local 58 59 mt := MustMMapType(reflect.TypeOf(v), false) 60 require.NotNil(t, mt) 61 62 ref := UnwrapAs(WrapBytes(binary[:]), mt).(*reference.Local) 63 require.Equal(t, 0x04030201, int(ref.GetPulseNumber())) 64 binary[0] = 0xFF 65 require.Equal(t, 0x040302FF, int(ref.GetPulseNumber())) 66 67 runtime.KeepAlive(binary) 68 } 69 70 func TestWrapGlobalRef(t *testing.T) { 71 if BigEndian { 72 t.SkipNow() 73 } 74 75 binary := [reference.GlobalBinarySize]byte{} 76 binary[0] = 1 77 binary[1] = 2 78 binary[2] = 3 79 binary[3] = 4 80 ref := UnwrapAsGlobalRef(WrapBytes(binary[:])) 81 require.Equal(t, 0x04030201, int(ref.GetLocal().GetPulseNumber())) 82 require.Equal(t, 0, int(ref.GetBase().GetPulseNumber())) 83 binary[0] = 0xFF 84 require.Equal(t, 0x040302FF, int(ref.GetLocal().GetPulseNumber())) 85 require.Equal(t, 0, int(ref.GetBase().GetPulseNumber())) 86 87 runtime.KeepAlive(binary) 88 } 89 90 */