go-hep.org/x/hep@v0.38.1/groot/riofs/file_example_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 "compress/flate" 9 "fmt" 10 "log" 11 "os" 12 13 "go-hep.org/x/hep/groot" 14 "go-hep.org/x/hep/groot/rbase" 15 "go-hep.org/x/hep/groot/riofs" 16 "go-hep.org/x/hep/groot/root" 17 ) 18 19 func ExampleCreate_empty() { 20 const fname = "empty.root" 21 defer os.Remove(fname) 22 23 w, err := groot.Create(fname) 24 if err != nil { 25 log.Fatal(err) 26 } 27 defer w.Close() 28 29 // empty file. close it. 30 err = w.Close() 31 if err != nil { 32 log.Fatalf("could not close empty file: %v", err) 33 } 34 35 // read back. 36 r, err := groot.Open(fname) 37 if err != nil { 38 log.Fatalf("could not open empty file: %v", err) 39 } 40 defer r.Close() 41 42 fmt.Printf("file: %q\n", r.Name()) 43 44 // Output: 45 // file: "empty.root" 46 } 47 48 func ExampleCreate() { 49 const fname = "objstring.root" 50 defer os.Remove(fname) 51 52 w, err := groot.Create(fname) 53 if err != nil { 54 log.Fatal(err) 55 } 56 defer w.Close() 57 58 var ( 59 k = "my-objstring" 60 v = rbase.NewObjString("Hello World from Go-HEP!") 61 ) 62 63 err = w.Put(k, v) 64 if err != nil { 65 log.Fatal(err) 66 } 67 68 fmt.Printf("wkeys: %d\n", len(w.Keys())) 69 70 err = w.Close() 71 if err != nil { 72 log.Fatalf("could not close file: %v", err) 73 } 74 75 r, err := groot.Open(fname) 76 if err != nil { 77 log.Fatalf("could not open file: %v", err) 78 } 79 defer r.Close() 80 81 fmt.Printf("rkeys: %d\n", len(r.Keys())) 82 83 for _, k := range r.Keys() { 84 fmt.Printf("key: name=%q, type=%q\n", k.Name(), k.ClassName()) 85 } 86 87 obj, err := r.Get(k) 88 if err != nil { 89 log.Fatal(err) 90 } 91 rv := obj.(root.ObjString) 92 fmt.Printf("objstring=%q\n", rv) 93 94 // Output: 95 // wkeys: 1 96 // rkeys: 1 97 // key: name="my-objstring", type="TObjString" 98 // objstring="Hello World from Go-HEP!" 99 } 100 101 func ExampleCreate_withZlib() { 102 const fname = "objstring-zlib.root" 103 defer os.Remove(fname) 104 105 w, err := groot.Create(fname, riofs.WithZlib(flate.BestCompression)) 106 if err != nil { 107 log.Fatal(err) 108 } 109 defer w.Close() 110 111 var ( 112 k = "my-objstring" 113 v = rbase.NewObjString("Hello World from Go-HEP!") 114 ) 115 116 err = w.Put(k, v) 117 if err != nil { 118 log.Fatal(err) 119 } 120 121 err = w.Close() 122 if err != nil { 123 log.Fatalf("could not close writable file: %v", err) 124 } 125 126 r, err := groot.Open(fname) 127 if err != nil { 128 log.Fatalf("could not open file: %v", err) 129 } 130 defer r.Close() 131 132 for _, k := range r.Keys() { 133 fmt.Printf("key: name=%q, type=%q\n", k.Name(), k.ClassName()) 134 } 135 136 obj, err := r.Get(k) 137 if err != nil { 138 log.Fatalf("could not get key %q: %v", k, err) 139 } 140 rv := obj.(root.ObjString) 141 fmt.Printf("objstring=%q\n", rv) 142 143 // Output: 144 // key: name="my-objstring", type="TObjString" 145 // objstring="Hello World from Go-HEP!" 146 }