go-hep.org/x/hep@v0.38.1/groot/rtree/rbasket_test.go (about)

     1  // Copyright ©2020 The go-hep Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package rtree
     6  
     7  import (
     8  	"reflect"
     9  	"testing"
    10  
    11  	"go-hep.org/x/hep/groot/riofs"
    12  )
    13  
    14  func TestReadAheadBasket(t *testing.T) {
    15  	for _, tc := range []struct {
    16  		fname  string
    17  		tree   string
    18  		branch string
    19  		conc   int
    20  		want   []rspan
    21  	}{
    22  		{
    23  			fname:  "../testdata/simple.root",
    24  			tree:   "tree",
    25  			branch: "two",
    26  			conc:   -1,
    27  			want:   []rspan{{beg: 0, end: 4, pos: 304, sz: 86}},
    28  		},
    29  		{
    30  			fname:  "../testdata/simple.root",
    31  			tree:   "tree",
    32  			branch: "two",
    33  			conc:   0,
    34  			want:   []rspan{{beg: 0, end: 4, pos: 304, sz: 86}},
    35  		},
    36  		{
    37  			fname:  "../testdata/simple.root",
    38  			tree:   "tree",
    39  			branch: "two",
    40  			conc:   1,
    41  			want:   []rspan{{beg: 0, end: 4, pos: 304, sz: 86}},
    42  		},
    43  		{
    44  			fname:  "../testdata/simple.root",
    45  			tree:   "tree",
    46  			branch: "two",
    47  			conc:   10,
    48  			want:   []rspan{{beg: 0, end: 4, pos: 304, sz: 86}},
    49  		},
    50  		{
    51  			fname:  "../testdata/small-flat-tree.root",
    52  			tree:   "tree",
    53  			branch: "Float64",
    54  			conc:   10,
    55  			want:   []rspan{{beg: 0, end: 100, pos: 1551, sz: 297}},
    56  		},
    57  		{
    58  			fname:  "../testdata/small-flat-tree.root",
    59  			tree:   "tree",
    60  			branch: "SliceFloat64",
    61  			conc:   -1,
    62  			want:   []rspan{{beg: 0, end: 100, pos: 8112, sz: 690}},
    63  		},
    64  		{
    65  			fname:  "../testdata/chain.flat.1.root",
    66  			tree:   "tree",
    67  			branch: "SliF64",
    68  			conc:   10,
    69  			want:   []rspan{{beg: 0, end: 5, pos: 3770, sz: 125}},
    70  		},
    71  	} {
    72  		t.Run(tc.fname+"-"+tc.branch, func(t *testing.T) {
    73  			f, err := riofs.Open(tc.fname)
    74  			if err != nil {
    75  				t.Fatal(err)
    76  			}
    77  			defer f.Close()
    78  
    79  			o, err := f.Get(tc.tree)
    80  			if err != nil {
    81  				t.Fatal(err)
    82  			}
    83  
    84  			var (
    85  				tree = o.(Tree)
    86  				b    = tree.Branch(tc.branch)
    87  				beg  = int64(0)
    88  				end  = tree.Entries()
    89  			)
    90  
    91  			ra := newBkReader(b, tc.conc, beg, end)
    92  			defer ra.close()
    93  
    94  			var got []rspan
    95  			for i := range ra.spans {
    96  				rbk, err := ra.read()
    97  				if err != nil {
    98  					t.Fatalf("could not read basket %d: %+v", i, err)
    99  				}
   100  				got = append(got, rbk.span)
   101  			}
   102  
   103  			if !reflect.DeepEqual(got, tc.want) {
   104  				t.Fatalf("invalid spans:\ngot= %#v\nwant=%#v", got, tc.want)
   105  			}
   106  		})
   107  	}
   108  }