github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/expressions/expressions_test.go (about)

     1  package expressions_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	_ "github.com/lmorg/murex/builtins"
     7  	"github.com/lmorg/murex/test"
     8  )
     9  
    10  func TestExpressionsBuiltin(t *testing.T) {
    11  	tests := []test.MurexTest{
    12  		{
    13  			Block:  `TestExpressionsBuiltin0=1+1+1+1+1+1+1+1+1+1`,
    14  			Stdout: ``,
    15  		},
    16  		{
    17  			Block:  `null;TestExpressionsBuiltin0=1+1+1+1+1+1+1+1+1+1`,
    18  			Stdout: ``,
    19  		},
    20  		{
    21  			Block:  `null;TestExpressionsBuiltin1=(1+1+1+1+1+1+1+1+1+1)`,
    22  			Stdout: ``,
    23  		},
    24  		{
    25  			Block:  `TestExpressionsBuiltin2=1+1+1+1+1+1+1+1+1+1;null`,
    26  			Stdout: ``,
    27  		},
    28  		{
    29  			Block:  `TestExpressionsBuiltin3=(1+1+1+1+1+1+1+1+1+1);null`,
    30  			Stdout: ``,
    31  		},
    32  		{
    33  			Block:  `null;TestExpressionsBuiltin4=1+1+1+1+1+1+1+1+1+1;null`,
    34  			Stdout: ``,
    35  		},
    36  		{
    37  			Block:  `null;TestExpressionsBuiltin5=(1+1+1+1+1+1+1+1+1+1);null`,
    38  			Stdout: ``,
    39  		},
    40  		{
    41  			Block:  `null;TestExpressionsBuiltin6=1+1+1+1+(1+1)+1+1+1+1;null`,
    42  			Stdout: ``,
    43  		},
    44  		{
    45  			Block:  `null;TestExpressionsBuiltin7=(1+1+1+1+(1+1)+1+1+1+1);null`,
    46  			Stdout: ``,
    47  		},
    48  		/////
    49  		{
    50  			Block:  `null;TestExpressionsBuiltin0=1+1+1+1+1+1+1+1+1+1;out $TestExpressionsBuiltin0`,
    51  			Stdout: "10\n",
    52  		},
    53  		{
    54  			Block:  `null;TestExpressionsBuiltin1=(1+1+1+1+1+1+1+1+1+1);out $TestExpressionsBuiltin1`,
    55  			Stdout: "10\n",
    56  		},
    57  		{
    58  			Block:  `TestExpressionsBuiltin2=1+1+1+1+1+1+1+1+1+1;null;out $TestExpressionsBuiltin2`,
    59  			Stdout: "10\n",
    60  		},
    61  		{
    62  			Block:  `TestExpressionsBuiltin3=(1+1+1+1+1+1+1+1+1+1);null;out $TestExpressionsBuiltin3`,
    63  			Stdout: "10\n",
    64  		},
    65  		{
    66  			Block:  `null;TestExpressionsBuiltin4=1+1+1+1+1+1+1+1+1+1;null;out $TestExpressionsBuiltin4`,
    67  			Stdout: "10\n",
    68  		},
    69  		{
    70  			Block:  `null;TestExpressionsBuiltin5=(1+1+1+1+1+1+1+1+1+1);null;out $TestExpressionsBuiltin5`,
    71  			Stdout: "10\n",
    72  		},
    73  		{
    74  			Block:  `null;TestExpressionsBuiltin6=1+1+1+1+(1+1)+1+1+1+1;null;out $TestExpressionsBuiltin6`,
    75  			Stdout: "10\n",
    76  		},
    77  		{
    78  			Block:  `null;TestExpressionsBuiltin7=(1+1+1+1+(1+1)+1+1+1+1);null;out $TestExpressionsBuiltin7`,
    79  			Stdout: "10\n",
    80  		},
    81  		/////
    82  		{
    83  			Block:  `null;1+1+1+1+1+1+1+1+1+1`,
    84  			Stdout: `10`,
    85  		},
    86  		{
    87  			Block:  `null;(1+1+1+1+1+1+1+1+1+1)`,
    88  			Stdout: `1+1+1+1+1+1+1+1+1+1`,
    89  		},
    90  		{
    91  			Block:  `1+1+1+1+1+1+1+1+1+1;null`,
    92  			Stdout: `10`,
    93  		},
    94  		{
    95  			Block:  `(1+1+1+1+1+1+1+1+1+1);null`,
    96  			Stdout: `1+1+1+1+1+1+1+1+1+1`,
    97  		},
    98  		{
    99  			Block:  `null;1+1+1+1+1+1+1+1+1+1;null`,
   100  			Stdout: `10`,
   101  		},
   102  		{
   103  			Block:  `null;(1+1+1+1+1+1+1+1+1+1);null`,
   104  			Stdout: `1+1+1+1+1+1+1+1+1+1`,
   105  		},
   106  		{
   107  			Block:  `null;1+1+1+1+(1+1)+1+1+1+1;null`,
   108  			Stdout: `10`,
   109  		},
   110  		{
   111  			Block:  `null;(1+1+1+1+(1+1)+1+1+1+1);null`,
   112  			Stdout: `1+1+1+1+(1+1)+1+1+1+1`,
   113  		},
   114  		/////
   115  		{
   116  			Block:  `1+1+1+1+1+1+1+1+1+1`,
   117  			Stdout: `10`,
   118  		},
   119  		{
   120  			Block:  `null;1+1+1+1+1+1+1+1+1+1`,
   121  			Stdout: `10`,
   122  		},
   123  		{
   124  			Block:  `(1+1+1+1+1+1+1+1+1+1)`,
   125  			Stdout: `1+1+1+1+1+1+1+1+1+1`,
   126  		},
   127  		{
   128  			Block:  `1+1+1+1+1+1+1+1+1+1;null`,
   129  			Stdout: `10`,
   130  		},
   131  		{
   132  			Block:  `(1+1+1+1+1+1+1+1+1+1);null`,
   133  			Stdout: `1+1+1+1+1+1+1+1+1+1`,
   134  		},
   135  		{
   136  			Block:  `null;1+1+1+1+1+1+1+1+1+1;null`,
   137  			Stdout: `10`,
   138  		},
   139  		{
   140  			Block:  `null;(1+1+1+1+1+1+1+1+1+1);null`,
   141  			Stdout: `1+1+1+1+1+1+1+1+1+1`,
   142  		},
   143  		{
   144  			Block:  `null;1+1+1+1+(1+1)+1+1+1+1;null`,
   145  			Stdout: `10`,
   146  		},
   147  		{
   148  			Block:  `null;(1+1+1+1+(1+1)+1+1+1+1);null`,
   149  			Stdout: `1+1+1+1+(1+1)+1+1+1+1`,
   150  		},
   151  		/////
   152  		{
   153  			Block:  `3*(3+1)`,
   154  			Stdout: `12`,
   155  		},
   156  	}
   157  
   158  	test.RunMurexTests(tests, t)
   159  }
   160  
   161  func TestExpressionsScalars(t *testing.T) {
   162  	tests := []test.MurexTest{
   163  		{
   164  			Block:  `TestExpressionsScalars0="foobar";$TestExpressionsScalars0=="foobar"`,
   165  			Stdout: `true`,
   166  		},
   167  		{
   168  			Block:  `TestExpressionsScalars1="foobar";%[1,2,$TestExpressionsScalars1]`,
   169  			Stdout: `[1,2,"foobar"]`,
   170  		},
   171  	}
   172  
   173  	test.RunMurexTests(tests, t)
   174  }
   175  
   176  func TestExpressionsBuiltinSubExpr(t *testing.T) {
   177  	tests := []test.MurexTest{
   178  		{
   179  			Block:  `(1+1);null`,
   180  			Stdout: `1+1`,
   181  		},
   182  		{
   183  			Block:  `(1+1) ;null`,
   184  			Stdout: `1+1`,
   185  		},
   186  		{
   187  			Block:  `(1+1) ; null`,
   188  			Stdout: `1+1`,
   189  		},
   190  		/////
   191  		{
   192  			Block:  `bob=(1+1);null`,
   193  			Stdout: ``,
   194  		},
   195  		{
   196  			Block:  `bob=(1+1) ;null`,
   197  			Stdout: ``,
   198  		},
   199  		{
   200  			Block:  `bob=(1+1) ; null`,
   201  			Stdout: ``,
   202  		},
   203  	}
   204  
   205  	test.RunMurexTests(tests, t)
   206  }
   207  
   208  func TestExpressionsBuiltinStrings(t *testing.T) {
   209  	tests := []test.MurexTest{
   210  		{
   211  			Block:  `%(bob)`,
   212  			Stdout: `bob`,
   213  		},
   214  	}
   215  
   216  	test.RunMurexTests(tests, t)
   217  }