2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.concepts;
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertFalse;
12 import static org.junit.jupiter.api.Assertions.assertNotNull;
13 import static org.junit.jupiter.api.Assertions.assertTrue;
15 import java.io.ByteArrayInputStream;
16 import java.io.ByteArrayOutputStream;
17 import java.io.ObjectInputStream;
18 import java.io.ObjectOutputStream;
19 import java.util.HexFormat;
20 import org.junit.jupiter.api.Test;
23 private static final HexFormat HEX_FORMAT = HexFormat.of().withUpperCase().withDelimiter(":");
24 private static final String SERIALIZED = """
25 AC:ED:00:05:73:72:00:2A:6F:72:67:2E:6F:70:65:6E:64:61:79:6C:69:67:68:74:2E:79:61:6E:67:74:\
26 6F:6F:6C:73:2E:63:6F:6E:63:65:70:74:73:2E:53:65:6D:56:65:72:00:00:00:00:00:00:00:01:02:00:\
27 03:49:00:05:6D:61:6A:6F:72:49:00:05:6D:69:6E:6F:72:49:00:05:70:61:74:63:68:78:70:00:00:00:\
28 01:00:00:00:02:00:00:00:03""";
32 final var semVer = new SemVer(5);
33 assertNotNull(semVer);
35 assertEquals(5, semVer.major());
36 assertEquals(0, semVer.minor());
37 assertEquals(0, semVer.patch());
39 final var semVer2 = SemVer.valueOf("1.2.3");
40 assertNotNull(semVer2);
42 assertEquals(1, semVer2.major());
43 assertEquals(2, semVer2.minor());
44 assertEquals(3, semVer2.patch());
46 final var semVer3 = SemVer.valueOf("1");
47 assertNotNull(semVer3);
49 assertEquals(1, semVer3.major());
50 assertEquals(0, semVer3.minor());
51 assertEquals(0, semVer3.patch());
53 final var semVer4 = SemVer.valueOf("1.2");
54 assertNotNull(semVer4);
56 assertEquals(1, semVer4.major());
57 assertEquals(2, semVer4.minor());
58 assertEquals(0, semVer4.patch());
60 assertEquals(1, semVer2.compareTo(semVer3));
61 assertEquals(-1, semVer3.compareTo(semVer2));
62 assertEquals(0, semVer2.compareTo(semVer2));
64 assertTrue(semVer2.equals(semVer2));
65 assertFalse(semVer2.equals("not equal"));
66 assertFalse(semVer2.equals(semVer3));
68 assertEquals(semVer2.hashCode(), semVer2.hashCode());
70 assertEquals("1.0.0", semVer3.toString());
74 void testSerialize() throws Exception {
76 try (var bos = new ByteArrayOutputStream()) {
77 try (var oos = new ObjectOutputStream(bos)) {
78 oos.writeObject(new SemVer(1, 2, 3));
80 bytes = bos.toByteArray();
83 assertEquals(SERIALIZED, HEX_FORMAT.formatHex(bytes));
87 void testDeserialize() throws Exception {
89 try (var oos = new ObjectInputStream(new ByteArrayInputStream(HEX_FORMAT.parseHex(SERIALIZED)))) {
90 value = oos.readObject();
92 assertEquals(new SemVer(1, 2, 3), value);