go-hep.org/x/hep@v0.38.1/groot/rtree/rfunc/rfunc_f32_gen_test.go (about)

     1  // Copyright ©2020 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  // Automatically generated. DO NOT EDIT.
     6  
     7  package rfunc
     8  
     9  import (
    10  	"reflect"
    11  	"testing"
    12  )
    13  
    14  func TestFuncToF32(t *testing.T) {
    15  
    16  	var rvars []string
    17  
    18  	fct := func() float32 {
    19  		return 42
    20  	}
    21  
    22  	form := NewFuncToF32(rvars, fct)
    23  
    24  	if got, want := form.RVars(), rvars; !reflect.DeepEqual(got, want) {
    25  		t.Fatalf("invalid rvars: got=%#v, want=%#v", got, want)
    26  	}
    27  
    28  	var ptrs []any
    29  
    30  	{
    31  		bad := make([]any, 1)
    32  		err := form.Bind(bad)
    33  		if err == nil {
    34  			t.Fatalf("expected an error for invalid args length")
    35  		}
    36  	}
    37  
    38  	err := form.Bind(ptrs)
    39  	if err != nil {
    40  		t.Fatalf("could not bind formula: %+v", err)
    41  	}
    42  
    43  	got := form.Func().(func() float32)()
    44  	if got, want := got, float32(42); !reflect.DeepEqual(got, want) {
    45  		t.Fatalf("invalid output:\ngot= %v (%T)\nwant=%v (%T)", got, got, want, want)
    46  	}
    47  }
    48  
    49  func TestFuncF32ToF32(t *testing.T) {
    50  
    51  	rvars := make([]string, 1)
    52  	rvars[0] = "name-0"
    53  
    54  	fct := func(arg00 float32) float32 {
    55  		return 42
    56  	}
    57  
    58  	form := NewFuncF32ToF32(rvars, fct)
    59  
    60  	if got, want := form.RVars(), rvars; !reflect.DeepEqual(got, want) {
    61  		t.Fatalf("invalid rvars: got=%#v, want=%#v", got, want)
    62  	}
    63  
    64  	ptrs := make([]any, 1)
    65  	ptrs[0] = new(float32)
    66  
    67  	{
    68  		bad := make([]any, len(ptrs))
    69  		copy(bad, ptrs)
    70  		for i := len(ptrs) - 1; i >= 0; i-- {
    71  			bad[i] = any(nil)
    72  			err := form.Bind(bad)
    73  			if err == nil {
    74  				t.Fatalf("expected an error for empty iface")
    75  			}
    76  		}
    77  		bad = append(bad, any(nil))
    78  		err := form.Bind(bad)
    79  		if err == nil {
    80  			t.Fatalf("expected an error for invalid args length")
    81  		}
    82  	}
    83  
    84  	err := form.Bind(ptrs)
    85  	if err != nil {
    86  		t.Fatalf("could not bind formula: %+v", err)
    87  	}
    88  
    89  	got := form.Func().(func() float32)()
    90  	if got, want := got, float32(42); !reflect.DeepEqual(got, want) {
    91  		t.Fatalf("invalid output:\ngot= %v (%T)\nwant=%v (%T)", got, got, want, want)
    92  	}
    93  }
    94  
    95  func TestFuncF32F32ToF32(t *testing.T) {
    96  
    97  	rvars := make([]string, 2)
    98  	rvars[0] = "name-0"
    99  	rvars[1] = "name-1"
   100  
   101  	fct := func(arg00 float32, arg01 float32) float32 {
   102  		return 42
   103  	}
   104  
   105  	form := NewFuncF32F32ToF32(rvars, fct)
   106  
   107  	if got, want := form.RVars(), rvars; !reflect.DeepEqual(got, want) {
   108  		t.Fatalf("invalid rvars: got=%#v, want=%#v", got, want)
   109  	}
   110  
   111  	ptrs := make([]any, 2)
   112  	ptrs[0] = new(float32)
   113  	ptrs[1] = new(float32)
   114  
   115  	{
   116  		bad := make([]any, len(ptrs))
   117  		copy(bad, ptrs)
   118  		for i := len(ptrs) - 1; i >= 0; i-- {
   119  			bad[i] = any(nil)
   120  			err := form.Bind(bad)
   121  			if err == nil {
   122  				t.Fatalf("expected an error for empty iface")
   123  			}
   124  		}
   125  		bad = append(bad, any(nil))
   126  		err := form.Bind(bad)
   127  		if err == nil {
   128  			t.Fatalf("expected an error for invalid args length")
   129  		}
   130  	}
   131  
   132  	err := form.Bind(ptrs)
   133  	if err != nil {
   134  		t.Fatalf("could not bind formula: %+v", err)
   135  	}
   136  
   137  	got := form.Func().(func() float32)()
   138  	if got, want := got, float32(42); !reflect.DeepEqual(got, want) {
   139  		t.Fatalf("invalid output:\ngot= %v (%T)\nwant=%v (%T)", got, got, want, want)
   140  	}
   141  }
   142  
   143  func TestFuncF32F32F32ToF32(t *testing.T) {
   144  
   145  	rvars := make([]string, 3)
   146  	rvars[0] = "name-0"
   147  	rvars[1] = "name-1"
   148  	rvars[2] = "name-2"
   149  
   150  	fct := func(arg00 float32, arg01 float32, arg02 float32) float32 {
   151  		return 42
   152  	}
   153  
   154  	form := NewFuncF32F32F32ToF32(rvars, fct)
   155  
   156  	if got, want := form.RVars(), rvars; !reflect.DeepEqual(got, want) {
   157  		t.Fatalf("invalid rvars: got=%#v, want=%#v", got, want)
   158  	}
   159  
   160  	ptrs := make([]any, 3)
   161  	ptrs[0] = new(float32)
   162  	ptrs[1] = new(float32)
   163  	ptrs[2] = new(float32)
   164  
   165  	{
   166  		bad := make([]any, len(ptrs))
   167  		copy(bad, ptrs)
   168  		for i := len(ptrs) - 1; i >= 0; i-- {
   169  			bad[i] = any(nil)
   170  			err := form.Bind(bad)
   171  			if err == nil {
   172  				t.Fatalf("expected an error for empty iface")
   173  			}
   174  		}
   175  		bad = append(bad, any(nil))
   176  		err := form.Bind(bad)
   177  		if err == nil {
   178  			t.Fatalf("expected an error for invalid args length")
   179  		}
   180  	}
   181  
   182  	err := form.Bind(ptrs)
   183  	if err != nil {
   184  		t.Fatalf("could not bind formula: %+v", err)
   185  	}
   186  
   187  	got := form.Func().(func() float32)()
   188  	if got, want := got, float32(42); !reflect.DeepEqual(got, want) {
   189  		t.Fatalf("invalid output:\ngot= %v (%T)\nwant=%v (%T)", got, got, want, want)
   190  	}
   191  }