|
18 | 18 | import static org.junit.jupiter.api.Assertions.assertTrue; |
19 | 19 | import static org.junit.platform.commons.test.PreconditionAssertions.assertPreconditionViolationFor; |
20 | 20 |
|
| 21 | +import java.io.ByteArrayInputStream; |
| 22 | +import java.io.ByteArrayOutputStream; |
| 23 | +import java.io.IOException; |
| 24 | +import java.io.ObjectInputStream; |
| 25 | +import java.io.ObjectOutputStream; |
| 26 | +import java.util.Base64; |
21 | 27 | import java.util.Optional; |
22 | 28 |
|
23 | 29 | import org.junit.jupiter.api.Nested; |
@@ -292,6 +298,75 @@ void removesLastSegment() { |
292 | 298 |
|
293 | 299 | } |
294 | 300 |
|
| 301 | + @Nested |
| 302 | + class Serialization { |
| 303 | + |
| 304 | + final UniqueId uniqueId = UniqueId.root("engine", "junit-jupiter"); |
| 305 | + |
| 306 | + @Test |
| 307 | + void roundTrip() throws IOException, ClassNotFoundException { |
| 308 | + var bytesOut = new ByteArrayOutputStream(); |
| 309 | + var out = new ObjectOutputStream(bytesOut); |
| 310 | + out.writeObject(uniqueId); |
| 311 | + |
| 312 | + var bytesIn = new ByteArrayInputStream(bytesOut.toByteArray()); |
| 313 | + var in = new ObjectInputStream(bytesIn); |
| 314 | + var actual = in.readObject(); |
| 315 | + |
| 316 | + assertEquals(uniqueId, actual); |
| 317 | + assertEquals(uniqueId.toString(), actual.toString()); |
| 318 | + } |
| 319 | + |
| 320 | + @Test |
| 321 | + void deserializeromJunit60() throws IOException, ClassNotFoundException { |
| 322 | + var uniqueIdFromJunit60 = Base64.getMimeDecoder().decode(""" |
| 323 | + rO0ABXNyACJvcmcuanVuaXQucGxhdGZvcm0uZW5naW5lLlVuaXF1ZUlkAAAAAAAAAAECAAJMAAhzZWdtZW50c3QAEExqYXZhL3V0 |
| 324 | + aWwvTGlzdDtMAA51bmlxdWVJZEZvcm1hdHQAKkxvcmcvanVuaXQvcGxhdGZvcm0vZW5naW5lL1VuaXF1ZUlkRm9ybWF0O3hwc3IA |
| 325 | + EWphdmEudXRpbC5Db2xsU2VyV46rtjobqBEDAAFJAAN0YWd4cAAAAAF3BAAAAAFzcgAqb3JnLmp1bml0LnBsYXRmb3JtLmVuZ2lu |
| 326 | + ZS5VbmlxdWVJZCRTZWdtZW50AAAAAAAAAAECAAJMAAR0eXBldAASTGphdmEvbGFuZy9TdHJpbmc7TAAFdmFsdWVxAH4AB3hwdAAG |
| 327 | + ZW5naW5ldAANanVuaXQtanVwaXRlcnhzcgAob3JnLmp1bml0LnBsYXRmb3JtLmVuZ2luZS5VbmlxdWVJZEZvcm1hdAAAAAAAAAAB |
| 328 | + AgAGQwAMY2xvc2VTZWdtZW50QwALb3BlblNlZ21lbnRDABBzZWdtZW50RGVsaW1pdGVyQwASdHlwZVZhbHVlU2VwYXJhdG9yTAAT |
| 329 | + ZW5jb2RlZENoYXJhY3Rlck1hcHQAE0xqYXZhL3V0aWwvSGFzaE1hcDtMAA5zZWdtZW50UGF0dGVybnQAGUxqYXZhL3V0aWwvcmVn |
| 330 | + ZXgvUGF0dGVybjt4cABdAFsALwA6c3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNo |
| 331 | + b2xkeHA/QAAAAAAADHcIAAAAEAAAAAZzcgATamF2YS5sYW5nLkNoYXJhY3RlcjSLR9lrGiZ4AgABQwAFdmFsdWV4cAAldAADJTI1 |
| 332 | + c3EAfgARADp0AAMlM0FzcQB+ABEAW3QAAyU1QnNxAH4AEQArdAADJTJCc3EAfgARAF10AAMlNURzcQB+ABEAL3QAAyUyRnhzcgAX |
| 333 | + amF2YS51dGlsLnJlZ2V4LlBhdHRlcm5GZ9VrbkkCDQIAAkkABWZsYWdzTAAHcGF0dGVybnEAfgAHeHAAAAAgdAAXXFFbXEUoLisp |
| 334 | + XFE6XEUoLispXFFdXEU="""); |
| 335 | + |
| 336 | + var bytesIn = new ByteArrayInputStream(uniqueIdFromJunit60); |
| 337 | + var in = new ObjectInputStream(bytesIn); |
| 338 | + var actual = in.readObject(); |
| 339 | + |
| 340 | + assertEquals(uniqueId, actual); |
| 341 | + assertEquals(uniqueId.toString(), actual.toString()); |
| 342 | + } |
| 343 | + |
| 344 | + @Test |
| 345 | + void deserializeFromJunit60IgnoresCustomFormat() throws IOException, ClassNotFoundException { |
| 346 | + var uniqueIdWithCustomFormatFromJunit60 = Base64.getMimeDecoder().decode(""" |
| 347 | + rO0ABXNyACJvcmcuanVuaXQucGxhdGZvcm0uZW5naW5lLlVuaXF1ZUlkAAAAAAAAAAECAAJMAAhzZWdtZW50c3QAEExqYXZhL3V0 |
| 348 | + aWwvTGlzdDtMAA51bmlxdWVJZEZvcm1hdHQAKkxvcmcvanVuaXQvcGxhdGZvcm0vZW5naW5lL1VuaXF1ZUlkRm9ybWF0O3hwc3IA |
| 349 | + EWphdmEudXRpbC5Db2xsU2VyV46rtjobqBEDAAFJAAN0YWd4cAAAAAF3BAAAAAFzcgAqb3JnLmp1bml0LnBsYXRmb3JtLmVuZ2lu |
| 350 | + ZS5VbmlxdWVJZCRTZWdtZW50AAAAAAAAAAECAAJMAAR0eXBldAASTGphdmEvbGFuZy9TdHJpbmc7TAAFdmFsdWVxAH4AB3hwdAAG |
| 351 | + ZW5naW5ldAANanVuaXQtanVwaXRlcnhzcgAob3JnLmp1bml0LnBsYXRmb3JtLmVuZ2luZS5VbmlxdWVJZEZvcm1hdAAAAAAAAAAB |
| 352 | + AgAGQwAMY2xvc2VTZWdtZW50QwALb3BlblNlZ21lbnRDABBzZWdtZW50RGVsaW1pdGVyQwASdHlwZVZhbHVlU2VwYXJhdG9yTAAT |
| 353 | + ZW5jb2RlZENoYXJhY3Rlck1hcHQAE0xqYXZhL3V0aWwvSGFzaE1hcDtMAA5zZWdtZW50UGF0dGVybnQAGUxqYXZhL3V0aWwvcmVn |
| 354 | + ZXgvUGF0dGVybjt4cAB9AHsALAA9c3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNo |
| 355 | + b2xkeHA/QAAAAAAADHcIAAAAEAAAAAZzcgATamF2YS5sYW5nLkNoYXJhY3RlcjSLR9lrGiZ4AgABQwAFdmFsdWV4cAAldAADJTI1 |
| 356 | + c3EAfgARAHt0AAMlN0JzcQB+ABEAK3QAAyUyQnNxAH4AEQAsdAADJTJDc3EAfgARAH10AAMlN0RzcQB+ABEAPXQAAyUzRHhzcgAX |
| 357 | + amF2YS51dGlsLnJlZ2V4LlBhdHRlcm5GZ9VrbkkCDQIAAkkABWZsYWdzTAAHcGF0dGVybnEAfgAHeHAAAAAgdAAXXFF7XEUoLisp |
| 358 | + XFE9XEUoLispXFF9XEU="""); |
| 359 | + |
| 360 | + var bytesIn = new ByteArrayInputStream(uniqueIdWithCustomFormatFromJunit60); |
| 361 | + var in = new ObjectInputStream(bytesIn); |
| 362 | + var actual = in.readObject(); |
| 363 | + |
| 364 | + assertEquals(uniqueId, actual); |
| 365 | + assertEquals(uniqueId.toString(), actual.toString()); |
| 366 | + } |
| 367 | + |
| 368 | + } |
| 369 | + |
295 | 370 | private static void assertSegment(Segment segment, String expectedType, String expectedValue) { |
296 | 371 | assertEquals(expectedType, segment.getType(), "segment type"); |
297 | 372 | assertEquals(expectedValue, segment.getValue(), "segment value"); |
|
0 commit comments