github.com/dennwc/btrfs@v0.0.0-20221026161108-3097362dc072/size_test.go (about)

     1  package btrfs
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  	"unsafe"
     7  )
     8  
     9  var caseSizes = []struct {
    10  	obj  interface{}
    11  	size int
    12  }{
    13  	{obj: btrfs_ioctl_vol_args{}, size: 4096},
    14  	{obj: btrfs_qgroup_limit{}, size: 40},
    15  	{obj: btrfs_qgroup_inherit{}, size: 72},
    16  	{obj: btrfs_ioctl_qgroup_limit_args{}, size: 48},
    17  	{obj: btrfs_ioctl_vol_args_v2{}, size: 4096},
    18  	{obj: btrfs_scrub_progress{}, size: 120},
    19  	{obj: btrfs_ioctl_scrub_args{}, size: 1024},
    20  	{obj: btrfs_ioctl_dev_replace_start_params{}, size: 2072},
    21  	{obj: btrfs_ioctl_dev_replace_status_params{}, size: 48},
    22  	{obj: btrfs_ioctl_dev_replace_args_u1{}, size: 2600},
    23  	{obj: btrfs_ioctl_dev_replace_args_u2{}, size: 2600},
    24  	{obj: btrfs_ioctl_dev_info_args{}, size: 4096},
    25  	{obj: btrfs_ioctl_fs_info_args{}, size: 1024},
    26  	{obj: btrfs_ioctl_feature_flags{}, size: 24},
    27  	{obj: btrfs_balance_args{}, size: 136},
    28  	{obj: BalanceProgress{}, size: 24},
    29  	{obj: btrfs_ioctl_balance_args{}, size: 1024},
    30  	{obj: btrfs_ioctl_ino_lookup_args{}, size: 4096},
    31  	{obj: btrfs_ioctl_search_key{}, size: 104},
    32  	{obj: btrfs_ioctl_search_header{}, size: 32},
    33  	{obj: btrfs_ioctl_search_args{}, size: 4096},
    34  	{obj: btrfs_ioctl_search_args_v2{}, size: 112},
    35  	{obj: btrfs_ioctl_clone_range_args{}, size: 32},
    36  	{obj: btrfs_ioctl_same_extent_info{}, size: 32},
    37  	{obj: btrfs_ioctl_same_args{}, size: 24},
    38  	{obj: btrfs_ioctl_defrag_range_args{}, size: 48},
    39  	{obj: btrfs_ioctl_space_info{}, size: 24},
    40  	{obj: btrfs_ioctl_space_args{}, size: 16},
    41  	{obj: btrfs_data_container{}, size: 16},
    42  	{obj: btrfs_ioctl_ino_path_args{}, size: 56},
    43  	{obj: btrfs_ioctl_logical_ino_args{}, size: 56},
    44  	{obj: btrfs_ioctl_get_dev_stats{}, size: 1032},
    45  	{obj: btrfs_ioctl_quota_ctl_args{}, size: 16},
    46  	{obj: btrfs_ioctl_qgroup_assign_args{}, size: 24},
    47  	{obj: btrfs_ioctl_qgroup_create_args{}, size: 16},
    48  	{obj: btrfs_ioctl_timespec{}, size: 16},
    49  	{obj: btrfs_ioctl_received_subvol_args{}, size: 200},
    50  	{obj: btrfs_ioctl_send_args{}, size: 72},
    51  
    52  	//{obj:btrfs_timespec{},size:12},
    53  	//{obj:btrfs_root_ref{},size:18},
    54  	//{obj:btrfs_root_item{},size:439},
    55  	{obj: btrfs_root_item_raw{}, size: 439},
    56  	{obj: btrfs_root_item_raw_p1{}, size: 439 - 23 - int(unsafe.Sizeof(btrfs_root_item_raw_p3{}))},
    57  	{obj: btrfs_root_item_raw_p3{}, size: 439 - 23 - int(unsafe.Sizeof(btrfs_root_item_raw_p1{}))},
    58  	//{obj:btrfs_inode_item{},size:160},
    59  	{obj: btrfs_inode_item_raw{}, size: 160},
    60  	{obj: timeBlock{}, size: 4 * 12},
    61  }
    62  
    63  func TestSizes(t *testing.T) {
    64  	for _, c := range caseSizes {
    65  		if sz := int(reflect.ValueOf(c.obj).Type().Size()); sz != c.size {
    66  			t.Errorf("unexpected size of %T: %d (exp: %d)", c.obj, sz, c.size)
    67  		}
    68  	}
    69  }