go-hep.org/x/hep@v0.38.1/groot/riofs/dir_test.go (about)

     1  // Copyright ©2018 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 riofs_test
     6  
     7  import (
     8  	"os"
     9  	"path/filepath"
    10  	"testing"
    11  
    12  	"go-hep.org/x/hep/groot"
    13  	"go-hep.org/x/hep/groot/rbase"
    14  	"go-hep.org/x/hep/groot/riofs"
    15  	"go-hep.org/x/hep/groot/root"
    16  
    17  	_ "go-hep.org/x/hep/groot/riofs/plugin/xrootd"
    18  )
    19  
    20  func TestDirs(t *testing.T) {
    21  	rootdir, err := os.MkdirTemp("", "groot-dir-subdir-")
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  	defer os.RemoveAll(rootdir)
    26  
    27  	fname := filepath.Join(rootdir, "subdirs.root")
    28  
    29  	{
    30  		w, err := groot.Create(fname)
    31  		if err != nil {
    32  			t.Fatal(err)
    33  		}
    34  		defer w.Close()
    35  
    36  		dir1, err := w.Mkdir("dir1")
    37  		if err != nil {
    38  			t.Fatal(err)
    39  		}
    40  
    41  		dir11, err := dir1.Mkdir("dir11")
    42  		if err != nil {
    43  			t.Fatal(err)
    44  		}
    45  
    46  		err = dir11.Put("obj1", rbase.NewObjString("data-obj1"))
    47  		if err != nil {
    48  			t.Fatal(err)
    49  		}
    50  
    51  		dir2, err := w.Mkdir("dir2")
    52  		if err != nil {
    53  			t.Fatal(err)
    54  		}
    55  
    56  		err = dir2.Put("obj2", rbase.NewObjString("data-obj2"))
    57  		if err != nil {
    58  			t.Fatal(err)
    59  		}
    60  
    61  		err = w.Close()
    62  		if err != nil {
    63  			t.Fatal(err)
    64  		}
    65  	}
    66  
    67  	{
    68  		r, err := groot.Open(fname)
    69  		if err != nil {
    70  			t.Fatal(err)
    71  		}
    72  		defer r.Close()
    73  
    74  		var obj root.Object
    75  
    76  		obj, err = r.Get("dir1")
    77  		if err != nil {
    78  			t.Fatal(err)
    79  		}
    80  
    81  		dir1 := obj.(riofs.Directory)
    82  
    83  		obj, err = r.Get("dir2")
    84  		if err != nil {
    85  			t.Fatal(err)
    86  		}
    87  
    88  		dir2 := obj.(riofs.Directory)
    89  
    90  		obj, err = dir1.Get("dir11")
    91  		if err != nil {
    92  			t.Fatal(err)
    93  		}
    94  
    95  		dir11 := obj.(riofs.Directory)
    96  
    97  		obj, err = dir11.Get("obj1")
    98  		if err != nil {
    99  			t.Fatal(err)
   100  		}
   101  
   102  		str1 := obj.(*rbase.ObjString)
   103  		if got, want := str1.String(), "data-obj1"; got != want {
   104  			t.Fatalf("got=%q, want=%q", got, want)
   105  		}
   106  
   107  		obj, err = dir2.Get("obj2")
   108  		if err != nil {
   109  			t.Fatal(err)
   110  		}
   111  
   112  		str2 := obj.(*rbase.ObjString)
   113  		if got, want := str2.String(), "data-obj2"; got != want {
   114  			t.Fatalf("got=%q, want=%q", got, want)
   115  		}
   116  	}
   117  }