github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/utils/semver/semver_test.go (about) 1 package semver_test 2 3 import ( 4 "testing" 5 6 "github.com/lmorg/murex/test/count" 7 "github.com/lmorg/murex/utils/json" 8 "github.com/lmorg/murex/utils/semver" 9 ) 10 11 func TestParse(t *testing.T) { 12 tests := []struct { 13 String string 14 Expected semver.Version 15 Error bool 16 }{ 17 { 18 String: "1", 19 Expected: semver.Version{ 20 Major: 1, 21 }, 22 }, 23 { 24 String: "1.2", 25 Expected: semver.Version{ 26 Major: 1, 27 Minor: 2, 28 }, 29 }, 30 { 31 String: "1.2.3", 32 Expected: semver.Version{ 33 Major: 1, 34 Minor: 2, 35 Patch: 3, 36 }, 37 }, 38 { 39 String: "1.2.3.4", 40 Error: true, 41 }, 42 } 43 44 count.Tests(t, len(tests)) 45 46 for i, test := range tests { 47 actual, err := semver.Parse(test.String) 48 if (err != nil) != test.Error { 49 t.Errorf("Unexpected error in test %d:", i) 50 t.Logf(" Expected: %v", test.Expected) 51 t.Logf(" Actual: %v", *actual) 52 t.Logf(" exp err: %v", test.Error) 53 t.Logf(" act err: %v", err) 54 } 55 56 if actual == nil { 57 continue 58 } 59 60 expS := json.LazyLogging(test.Expected) 61 actS := json.LazyLogging(*actual) 62 63 if expS != actS { 64 t.Errorf("Expected doesn't match actual in test %d:", i) 65 t.Logf(" Expected: %v", expS) 66 t.Logf(" Actual: %v", actS) 67 t.Logf(" exp err: %v", test.Error) 68 t.Logf(" act err: %v", err) 69 } 70 } 71 } 72 73 func TestCompare(t *testing.T) { 74 tests := []struct { 75 Version string 76 Comparison string 77 Expected bool 78 Error bool 79 }{ 80 { 81 Version: "1.2.3", 82 Comparison: "> 0", 83 Expected: true, 84 }, 85 { 86 Version: "1.2.3", 87 Comparison: ">= 0", 88 Expected: true, 89 }, 90 { 91 Version: "1.2.3", 92 Comparison: "= 0", 93 Expected: false, 94 }, 95 { 96 Version: "1.2.3", 97 Comparison: "<= 0", 98 Expected: false, 99 }, 100 { 101 Version: "1.2.3", 102 Comparison: "< 0", 103 Expected: false, 104 }, 105 { 106 Version: "1.2.3", 107 Comparison: "> 1", 108 Expected: false, 109 }, 110 { 111 Version: "1.2.3", 112 Comparison: ">= 1", 113 Expected: true, 114 }, 115 { 116 Version: "1.2.3", 117 Comparison: "= 1", 118 Expected: true, 119 }, 120 { 121 Version: "1.2.3", 122 Comparison: "<= 1", 123 Expected: true, 124 }, 125 { 126 Version: "1.2.3", 127 Comparison: "< 1", 128 Expected: false, 129 }, 130 { 131 Version: "1.2.3", 132 Comparison: "> 2", 133 Expected: false, 134 }, 135 { 136 Version: "1.2.3", 137 Comparison: ">= 2", 138 Expected: false, 139 }, 140 { 141 Version: "1.2.3", 142 Comparison: "= 2", 143 Expected: false, 144 }, 145 { 146 Version: "1.2.3", 147 Comparison: "<= 2", 148 Expected: true, 149 }, 150 { 151 Version: "1.2.3", 152 Comparison: "< 2", 153 Expected: true, 154 }, 155 /// 156 { 157 Version: "1.2.3", 158 Comparison: "> 1.1", 159 Expected: true, 160 }, 161 { 162 Version: "1.2.3", 163 Comparison: ">= 1.1", 164 Expected: true, 165 }, 166 { 167 Version: "1.2.3", 168 Comparison: "= 1.1", 169 Expected: false, 170 }, 171 { 172 Version: "1.2.3", 173 Comparison: "<= 1.1", 174 Expected: false, 175 }, 176 { 177 Version: "1.2.3", 178 Comparison: "< 1.1", 179 Expected: false, 180 }, 181 { 182 Version: "1.2.3", 183 Comparison: "> 1.2", 184 Expected: false, 185 }, 186 { 187 Version: "1.2.3", 188 Comparison: ">= 1.2", 189 Expected: true, 190 }, 191 { 192 Version: "1.2.3", 193 Comparison: "= 1.2", 194 Expected: true, 195 }, 196 { 197 Version: "1.2.3", 198 Comparison: "<= 1.2", 199 Expected: true, 200 }, 201 { 202 Version: "1.2.3", 203 Comparison: "< 1.2", 204 Expected: false, 205 }, 206 { 207 Version: "1.2.3", 208 Comparison: "> 1.3", 209 Expected: false, 210 }, 211 { 212 Version: "1.2.3", 213 Comparison: ">= 2.3", 214 Expected: false, 215 }, 216 { 217 Version: "1.2.3", 218 Comparison: "= 2.3", 219 Expected: false, 220 }, 221 { 222 Version: "1.2.3", 223 Comparison: "<= 2.3", 224 Expected: true, 225 }, 226 { 227 Version: "1.2.3", 228 Comparison: "< 2.3", 229 Expected: true, 230 }, 231 /// 232 { 233 Version: "1.2.3", 234 Comparison: "> 1.2.2", 235 Expected: true, 236 }, 237 { 238 Version: "1.2.3", 239 Comparison: ">= 1.2.2", 240 Expected: true, 241 }, 242 { 243 Version: "1.2.3", 244 Comparison: "= 1.2.2", 245 Expected: false, 246 }, 247 { 248 Version: "1.2.3", 249 Comparison: "<= 1.2.2", 250 Expected: false, 251 }, 252 { 253 Version: "1.2.3", 254 Comparison: "< 1.2.2", 255 Expected: false, 256 }, 257 { 258 Version: "1.2.3", 259 Comparison: "> 1.2.3", 260 Expected: false, 261 }, 262 { 263 Version: "1.2.3", 264 Comparison: ">= 1.2.3", 265 Expected: true, 266 }, 267 { 268 Version: "1.2.3", 269 Comparison: "= 1.2.3", 270 Expected: true, 271 }, 272 { 273 Version: "1.2.3", 274 Comparison: "<= 1.2.3", 275 Expected: true, 276 }, 277 { 278 Version: "1.2.3", 279 Comparison: "< 1.2.3", 280 Expected: false, 281 }, 282 { 283 Version: "1.2.3", 284 Comparison: "> 1.2.4", 285 Expected: false, 286 }, 287 { 288 Version: "1.2.3", 289 Comparison: ">= 1.2.4", 290 Expected: false, 291 }, 292 { 293 Version: "1.2.3", 294 Comparison: "= 1.2.4", 295 Expected: false, 296 }, 297 { 298 Version: "1.2.3", 299 Comparison: "<= 1.2.4", 300 Expected: true, 301 }, 302 { 303 Version: "1.2.3", 304 Comparison: "< 1.2.4", 305 Expected: true, 306 }, 307 } 308 309 count.Tests(t, len(tests)) 310 311 for i, test := range tests { 312 actual, err := semver.Compare(test.Version, test.Comparison) 313 if (err != nil) != test.Error || test.Expected != actual { 314 t.Errorf("Unexpected result from test %d:", i) 315 t.Logf(" Version: '%s'", test.Version) 316 t.Logf(" Comparison: '%s'", test.Comparison) 317 t.Logf(" Expected: %v", test.Expected) 318 t.Logf(" Actual: %v", actual) 319 t.Logf(" exp err: %v", test.Error) 320 t.Logf(" act err: %v", err) 321 } 322 } 323 }