github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/parameters_test.go (about)

     1  package expressions_test
     2  
     3  import (
     4  	"fmt"
     5  	"math/rand"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/lmorg/murex/test"
    10  )
    11  
    12  func TestParamHangBug(t *testing.T) {
    13  	const config = `
    14  		config: set proc strict-vars false;
    15  		config: set proc strict-arrays false; 
    16  	`
    17  
    18  	tests := []test.MurexTest{
    19  		// string
    20  		{
    21  			Block:  `out: $FOO{BAR}`,
    22  			Stdout: "{BAR}\n",
    23  		},
    24  		{
    25  			Block:  `out: $ FOO{BAR}`,
    26  			Stdout: "$ FOO{BAR}\n",
    27  		},
    28  		{
    29  			Block:  `out: ${out}`,
    30  			Stdout: "\n",
    31  		},
    32  		{
    33  			Block:  `out: $FOO`,
    34  			Stdout: "\n",
    35  		},
    36  		{
    37  			Block:  `out: $FOO[BAR]`,
    38  			Stdout: "\n",
    39  		},
    40  		{
    41  			Block:  `out: $ FOO[BAR]`,
    42  			Stdout: "$ FOO[BAR]\n",
    43  		},
    44  		{
    45  			Block:  `out: $[out]`,
    46  			Stdout: "$[out]\n",
    47  		},
    48  		{
    49  			Block:  `out: $FOO(BAR)`,
    50  			Stdout: "(BAR)\n",
    51  		},
    52  		{
    53  			Block:  `out: $(out)`,
    54  			Stdout: "\n",
    55  		},
    56  		// array
    57  		{
    58  			Block:  `out: @FOO{BAR}`,
    59  			Stdout: "{BAR}\n",
    60  		},
    61  		{
    62  			Block:  `out: @ FOO{BAR}`,
    63  			Stdout: "@ FOO{BAR}\n",
    64  		},
    65  		{
    66  			Block:  `out: @{out}`,
    67  			Stdout: "\n",
    68  		},
    69  		{
    70  			Block:  `out: @FOO`,
    71  			Stdout: "\n",
    72  		},
    73  		{
    74  			Block:  `out: @ FOO[BAR]`,
    75  			Stdout: "@ FOO[BAR]\n",
    76  		},
    77  		{
    78  			Block:  `out: @ FOO[[BAR]]`,
    79  			Stdout: "@ FOO[[BAR]]\n",
    80  		},
    81  		{
    82  			Block:  `out: @[out]`,
    83  			Stdout: "@[out]\n",
    84  		},
    85  		{
    86  			Block:  `out: @[[out]]`,
    87  			Stdout: "@[[out]]\n",
    88  		},
    89  		{
    90  			Block:  `out: @FOO(BAR)`,
    91  			Stdout: "(BAR)\n",
    92  		},
    93  		{
    94  			Block:  `out: @(out)`,
    95  			Stdout: "@(out)\n",
    96  		},
    97  	}
    98  
    99  	for i := range tests {
   100  		tests[i].Block = config + tests[i].Block
   101  	}
   102  
   103  	test.RunMurexTests(tests, t)
   104  }
   105  
   106  func TestParamVarRange(t *testing.T) {
   107  	rand.Seed(time.Now().Unix())
   108  
   109  	test1, test2, test3 := rand.Int(), rand.Int(), rand.Int()
   110  
   111  	tests := []test.MurexTest{
   112  		{
   113  			Block: fmt.Sprintf(`
   114  				a: [Monday..Friday] -> set: %s%d
   115  				out: @%s%d[2..]
   116  				`,
   117  				t.Name(), test1, t.Name(), test1,
   118  			),
   119  			Stdout: "^Wednesday Thursday Friday\n$",
   120  		},
   121  		{
   122  			Block: fmt.Sprintf(`
   123  				ja: [Monday..Friday] -> set: %s%d
   124  				out: @%s%d[2..3]
   125  				`,
   126  				t.Name(), test2, t.Name(), test2,
   127  			),
   128  			Stdout: "^Wednesday Thursday\n$",
   129  		},
   130  		{
   131  			Block: fmt.Sprintf(`
   132  				ja: [Monday..Friday] -> set: %s%d
   133  				out: @%s%d[..1]
   134  				`,
   135  				t.Name(), test3, t.Name(), test3,
   136  			),
   137  			Stdout: "^Monday Tuesday\n$",
   138  		},
   139  	}
   140  
   141  	test.RunMurexTestsRx(tests, t)
   142  }