github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/lists/mtac_test.go (about) 1 package lists 2 3 import ( 4 "testing" 5 6 _ "github.com/lmorg/murex/builtins/types/json" 7 _ "github.com/lmorg/murex/builtins/types/string" 8 "github.com/lmorg/murex/lang/types" 9 "github.com/lmorg/murex/test" 10 ) 11 12 type methodTest struct { 13 Stdin string 14 Stdout string 15 Error error 16 } 17 18 func TestMtacString(t *testing.T) { 19 tests := []methodTest{ 20 { 21 Stdin: "a\nb\nc\nd\ne\n", 22 Stdout: "e\nd\nc\nb\na\n", 23 }, 24 { 25 Stdin: "a\nb\nc\nd\ne", 26 Stdout: "e\nd\nc\nb\na\n", 27 }, 28 { 29 Stdin: "e\nd\nc\nb\na\n", 30 Stdout: "a\nb\nc\nd\ne\n", 31 }, 32 { 33 Stdin: "e\nd\nc\nb\na", 34 Stdout: "a\nb\nc\nd\ne\n", 35 }, 36 { 37 Stdin: "aaa\nbbb\nccc\nddd\neee\n", 38 Stdout: "eee\nddd\nccc\nbbb\naaa\n", 39 }, 40 { 41 Stdin: "aaa\nbbb\nccc\nddd\neee", 42 Stdout: "eee\nddd\nccc\nbbb\naaa\n", 43 }, 44 { 45 Stdin: "eee\nddd\nccc\nbbb\naaa\n", 46 Stdout: "aaa\nbbb\nccc\nddd\neee\n", 47 }, 48 { 49 Stdin: "eee\nddd\nccc\nbbb\naaa", 50 Stdout: "aaa\nbbb\nccc\nddd\neee\n", 51 }, 52 { 53 Stdin: "1\n2\n3\n4\n5\n", 54 Stdout: "5\n4\n3\n2\n1\n", 55 }, 56 { 57 Stdin: "1\n2\n3\n4\n5", 58 Stdout: "5\n4\n3\n2\n1\n", 59 }, 60 { 61 Stdin: "5\n4\n3\n2\n1\n", 62 Stdout: "1\n2\n3\n4\n5\n", 63 }, 64 { 65 Stdin: "5\n4\n3\n2\n1", 66 Stdout: "1\n2\n3\n4\n5\n", 67 }, 68 } 69 70 for i := range tests { 71 test.RunMethodTest(t, cmdMtac, "mtac", tests[i].Stdin, types.String, []string{}, tests[i].Stdout, nil) 72 } 73 } 74 75 func TestMtacGeneric(t *testing.T) { 76 tests := []methodTest{ 77 { 78 Stdin: "a\nb\nc\nd\ne\n", 79 Stdout: "e\nd\nc\nb\na\n", 80 }, 81 { 82 Stdin: "a\nb\nc\nd\ne", 83 Stdout: "e\nd\nc\nb\na\n", 84 }, 85 { 86 Stdin: "e\nd\nc\nb\na\n", 87 Stdout: "a\nb\nc\nd\ne\n", 88 }, 89 { 90 Stdin: "e\nd\nc\nb\na", 91 Stdout: "a\nb\nc\nd\ne\n", 92 }, 93 { 94 Stdin: "aaa\nbbb\nccc\nddd\neee\n", 95 Stdout: "eee\nddd\nccc\nbbb\naaa\n", 96 }, 97 { 98 Stdin: "aaa\nbbb\nccc\nddd\neee", 99 Stdout: "eee\nddd\nccc\nbbb\naaa\n", 100 }, 101 { 102 Stdin: "eee\nddd\nccc\nbbb\naaa\n", 103 Stdout: "aaa\nbbb\nccc\nddd\neee\n", 104 }, 105 { 106 Stdin: "eee\nddd\nccc\nbbb\naaa", 107 Stdout: "aaa\nbbb\nccc\nddd\neee\n", 108 }, 109 { 110 Stdin: "1\n2\n3\n4\n5\n", 111 Stdout: "5\n4\n3\n2\n1\n", 112 }, 113 { 114 Stdin: "1\n2\n3\n4\n5", 115 Stdout: "5\n4\n3\n2\n1\n", 116 }, 117 { 118 Stdin: "5\n4\n3\n2\n1\n", 119 Stdout: "1\n2\n3\n4\n5\n", 120 }, 121 { 122 Stdin: "5\n4\n3\n2\n1", 123 Stdout: "1\n2\n3\n4\n5\n", 124 }, 125 } 126 127 for i := range tests { 128 test.RunMethodTest(t, cmdMtac, "mtac", tests[i].Stdin, types.Generic, []string{}, tests[i].Stdout, nil) 129 } 130 } 131 132 func TestMtacJsonString(t *testing.T) { 133 tests := []methodTest{ 134 { 135 Stdin: `["a","b","c","d","e"]`, 136 Stdout: `["e","d","c","b","a"]`, 137 }, 138 { 139 Stdin: `["e","d","c","b","a"]`, 140 Stdout: `["a","b","c","d","e"]`, 141 }, 142 { 143 Stdin: `["aaa","bbb","ccc","ddd","eee"]`, 144 Stdout: `["eee","ddd","ccc","bbb","aaa"]`, 145 }, 146 { 147 Stdin: `["eee","ddd","ccc","bbb","aaa"]`, 148 Stdout: `["aaa","bbb","ccc","ddd","eee"]`, 149 }, 150 { 151 Stdin: `["1","2","3","4","5"]`, 152 Stdout: `["5","4","3","2","1"]`, 153 }, 154 { 155 Stdin: `["5","4","3","2","1"]`, 156 Stdout: `["1","2","3","4","5"]`, 157 }, 158 { 159 Stdin: `["111","222","333","444","555"]`, 160 Stdout: `["555","444","333","222","111"]`, 161 }, 162 { 163 Stdin: `["555","444","333","222","111"]`, 164 Stdout: `["111","222","333","444","555"]`, 165 }, 166 } 167 168 for i := range tests { 169 test.RunMethodTest(t, cmdMtac, "mtac", tests[i].Stdin, types.Json, []string{}, tests[i].Stdout, nil) 170 } 171 } 172 173 func TestMtacJsonInt(t *testing.T) { 174 tests := []methodTest{ 175 { 176 Stdin: `[1,2,3,4,5]`, 177 Stdout: `[5,4,3,2,1]`, 178 }, 179 { 180 Stdin: `[5,4,3,2,1]`, 181 Stdout: `[1,2,3,4,5]`, 182 }, 183 { 184 Stdin: `[111,222,333,444,555]`, 185 Stdout: `[555,444,333,222,111]`, 186 }, 187 { 188 Stdin: `[555,444,333,222,111]`, 189 Stdout: `[111,222,333,444,555]`, 190 }, 191 } 192 193 for i := range tests { 194 test.RunMethodTest(t, cmdMtac, "mtac", tests[i].Stdin, types.Json, []string{}, tests[i].Stdout, nil) 195 } 196 }