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  }