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   */