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 }