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

     1  package ranges_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	_ "github.com/lmorg/murex/builtins/core/index"
     7  	_ "github.com/lmorg/murex/builtins/core/mkarray"
     8  	_ "github.com/lmorg/murex/builtins/core/ranges"
     9  	_ "github.com/lmorg/murex/builtins/types/string"
    10  	_ "github.com/lmorg/murex/lang/expressions"
    11  	"github.com/lmorg/murex/test"
    12  )
    13  
    14  func TestRangeLegacyByIndex(t *testing.T) {
    15  	tests := []test.MurexTest{
    16  		// FLAGGED
    17  
    18  		// Include
    19  		{
    20  			Block:  `a: [January..December] -> @[6..10]i`,
    21  			Stdout: "June\nJuly\nAugust\nSeptember\nOctober\n",
    22  		},
    23  		{
    24  			Block:  `a: [January..December] -> @[6..]i`,
    25  			Stdout: "June\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
    26  		},
    27  		{
    28  			Block:  `a: [January..December] -> @[..6]i`,
    29  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
    30  		},
    31  
    32  		// Exclude
    33  		{
    34  			Block:  `a: [January..December] -> @[6..10]ie`,
    35  			Stdout: "July\nAugust\nSeptember\n",
    36  		},
    37  		{
    38  			Block:  `a: [January..December] -> @[6..]ie`,
    39  			Stdout: "July\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
    40  		},
    41  		{
    42  			Block:  `a: [January..December] -> @[..6]ie`,
    43  			Stdout: "January\nFebruary\nMarch\nApril\nMay\n",
    44  		},
    45  	}
    46  
    47  	test.RunMurexTests(tests, t)
    48  }
    49  
    50  func TestRangeIndexByIndex(t *testing.T) {
    51  	tests := []test.MurexTest{
    52  		// FLAGGED
    53  
    54  		// Include
    55  		{
    56  			Block:  `a: [January..December] -> [6..10]i`,
    57  			Stdout: "June\nJuly\nAugust\nSeptember\nOctober\n",
    58  		},
    59  		{
    60  			Block:  `a: [January..December] -> [6..]i`,
    61  			Stdout: "June\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
    62  		},
    63  		{
    64  			Block:  `a: [January..December] -> [..6]i`,
    65  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
    66  		},
    67  
    68  		// Exclude
    69  		{
    70  			Block:  `a: [January..December] -> [6..10]ie`,
    71  			Stdout: "July\nAugust\nSeptember\n",
    72  		},
    73  		{
    74  			Block:  `a: [January..December] -> [6..]ie`,
    75  			Stdout: "July\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
    76  		},
    77  		{
    78  			Block:  `a: [January..December] -> [..6]ie`,
    79  			Stdout: "January\nFebruary\nMarch\nApril\nMay\n",
    80  		},
    81  
    82  		// DEFAULTED
    83  
    84  		// Include
    85  		{
    86  			Block:  `a: [January..December] -> [6..10]`,
    87  			Stdout: "June\nJuly\nAugust\nSeptember\nOctober\n",
    88  		},
    89  		{
    90  			Block:  `a: [January..December] -> [6..]`,
    91  			Stdout: "June\nJuly\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
    92  		},
    93  		{
    94  			Block:  `a: [January..December] -> [..6]`,
    95  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
    96  		},
    97  
    98  		// Exclude
    99  		{
   100  			Block:  `a: [January..December] -> [6..10]e`,
   101  			Stdout: "July\nAugust\nSeptember\n",
   102  		},
   103  		{
   104  			Block:  `a: [January..December] -> [6..]e`,
   105  			Stdout: "July\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
   106  		},
   107  		{
   108  			Block:  `a: [January..December] -> [..6]e`,
   109  			Stdout: "January\nFebruary\nMarch\nApril\nMay\n",
   110  		},
   111  	}
   112  
   113  	test.RunMurexTests(tests, t)
   114  }
   115  
   116  func TestRangeIndexByNegativeIndex(t *testing.T) {
   117  	tests := []test.MurexTest{
   118  		// FLAGGED
   119  
   120  		// Include
   121  		{
   122  			Block:  `a: [January..December] -> [-6..-3]i`,
   123  			Stdout: "July\nAugust\nSeptember\n",
   124  		},
   125  		{
   126  			Block:  `a: [January..December] -> [-6..]i`,
   127  			Stdout: "July\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
   128  		},
   129  		/*{
   130  			Block:  `a: [January..December] -> [..-6]i`,
   131  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
   132  		},*/
   133  
   134  		// Exclude
   135  		{
   136  			Block:  `a: [January..December] -> [-6..-3]ie`,
   137  			Stdout: "August\nSeptember\n",
   138  		},
   139  		{
   140  			Block:  `a: [January..December] -> [-6..]ie`,
   141  			Stdout: "August\nSeptember\nOctober\nNovember\nDecember\n",
   142  		},
   143  		/*{
   144  			Block:  `a: [January..December] -> [..-6]ie`,
   145  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
   146  		},*/
   147  
   148  		// DEFAULTED
   149  
   150  		// Include
   151  		{
   152  			Block:  `a: [January..December] -> [-6..-3]`,
   153  			Stdout: "July\nAugust\nSeptember\n",
   154  		},
   155  		{
   156  			Block:  `a: [January..December] -> [-6..]`,
   157  			Stdout: "July\nAugust\nSeptember\nOctober\nNovember\nDecember\n",
   158  		},
   159  		/*{
   160  			Block:  `a: [January..December] -> [..-6]`,
   161  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
   162  		},*/
   163  
   164  		// Exclude
   165  		{
   166  			Block:  `a: [January..December] -> [-6..-3]e`,
   167  			Stdout: "August\nSeptember\n",
   168  		},
   169  		{
   170  			Block:  `a: [January..December] -> [-6..]e`,
   171  			Stdout: "August\nSeptember\nOctober\nNovember\nDecember\n",
   172  		},
   173  		/*{
   174  			Block:  `a: [January..December] -> [..-6]e`,
   175  			Stdout: "January\nFebruary\nMarch\nApril\nMay\nJune\n",
   176  		},*/
   177  	}
   178  
   179  	test.RunMurexTests(tests, t)
   180  }