go-hep.org/x/hep@v0.38.1/cmd/root2csv/main_test.go (about)

     1  // Copyright ©2019 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 main // import "go-hep.org/x/hep/cmd/root2csv"
     6  
     7  import (
     8  	"bytes"
     9  	"os"
    10  	"testing"
    11  
    12  	"go-hep.org/x/hep/internal/diff"
    13  )
    14  
    15  func TestROOT2CSV(t *testing.T) {
    16  	for _, tc := range []struct {
    17  		file string
    18  		tree string
    19  		want string
    20  		skip bool
    21  	}{
    22  		{
    23  			file: "../../groot/testdata/simple.root",
    24  			tree: "tree",
    25  			want: "testdata/simple.root.csv",
    26  		},
    27  		{
    28  			file: "../../groot/testdata/leaves.root",
    29  			tree: "tree",
    30  			want: "testdata/leaves.root.csv",
    31  		},
    32  		{
    33  			file: "../../groot/testdata/small-evnt-tree-fullsplit.root",
    34  			tree: "tree",
    35  			want: "testdata/small-evnt-tree-fullsplit.root.csv",
    36  		},
    37  		{
    38  			file: "../../groot/testdata/small-evnt-tree-nosplit.root",
    39  			tree: "tree",
    40  			want: "testdata/small-evnt-tree-nosplit.root.csv",
    41  			skip: true, // FIXME(sbinet)
    42  		},
    43  		{
    44  			file: "../../groot/testdata/graphs.root",
    45  			tree: "tg",
    46  			want: "testdata/graphs-tg.root.csv",
    47  		},
    48  		{
    49  			file: "../../groot/testdata/graphs.root",
    50  			tree: "tge",
    51  			want: "testdata/graphs-tge.root.csv",
    52  		},
    53  		{
    54  			file: "../../groot/testdata/graphs.root",
    55  			tree: "tgae",
    56  			want: "testdata/graphs-tgae.root.csv",
    57  		},
    58  		{
    59  			file: "../../groot/testdata/tcanvas.root",
    60  			tree: "c1/Graph",
    61  			want: "testdata/tcanvas.root.csv",
    62  		},
    63  	} {
    64  		t.Run(tc.file, func(t *testing.T) {
    65  			if tc.skip {
    66  				t.Skipf("not ready (FIXME)")
    67  			}
    68  
    69  			f, err := os.CreateTemp("", "root2csv-")
    70  			if err != nil {
    71  				t.Fatal(err)
    72  			}
    73  			f.Close()
    74  			defer os.Remove(f.Name())
    75  
    76  			err = process(f.Name(), tc.file, tc.tree)
    77  			if err != nil {
    78  				t.Fatal(err)
    79  			}
    80  
    81  			want, err := os.ReadFile(tc.want)
    82  			if err != nil {
    83  				t.Fatal(err)
    84  			}
    85  
    86  			got, err := os.ReadFile(f.Name())
    87  			if err != nil {
    88  				t.Fatal(err)
    89  			}
    90  
    91  			if !bytes.Equal(got, want) {
    92  				t.Fatalf("CSV files differ:\n%s", diff.Format(string(got), string(want)))
    93  			}
    94  		})
    95  	}
    96  
    97  }