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 }