1 /*
 2  * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
 3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 4  *
 5  * This code is free software; you can redistribute it and/or modify it
 6  * under the terms of the GNU General Public License version 2 only, as
 7  * published by the Free Software Foundation.
 8  *
 9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 package org.openjdk.skara.vcs.openjdk;
24 
25 import org.junit.jupiter.api.Test;
26 import static org.junit.jupiter.api.Assertions.*;
27 
28 import org.openjdk.skara.vcs.Tag;
29 
30 class OpenJDKTagTests {
31     @Test
32     void parseTags() {
33         var tag = new Tag("jdk-10+20");
34         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
35         assertEquals(20, jdkTag.buildNum());
36         var previousTag = jdkTag.previous().orElseThrow();
37         assertEquals(19, previousTag.buildNum());
38     }
39 
40     @Test
41     void parseSingleDigitTags() {
42         var tag = new Tag("jdk-10+10");
43         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
44         assertEquals(10, jdkTag.buildNum());
45         var previousTag = jdkTag.previous().orElseThrow();
46         assertEquals("jdk-10+9", previousTag.tag().name());
47         assertEquals(9, previousTag.buildNum());
48     }
49 
50     @Test
51     void parseLegacyTags() {
52         var tag = new Tag("jdk7-b147");
53         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
54         assertEquals(147, jdkTag.buildNum());
55         var previousTag = jdkTag.previous().orElseThrow();
56         assertEquals(146, previousTag.buildNum());
57     }
58 
59     @Test
60     void parseSingleDigitLegacyTags() {
61         var tag = new Tag("jdk7-b10");
62         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
63         assertEquals(10, jdkTag.buildNum());
64         var previousTag = jdkTag.previous().orElseThrow();
65         assertEquals("jdk7-b09", previousTag.tag().name());
66         assertEquals(9, previousTag.buildNum());
67     }
68 
69     @Test
70     void parseHotspotTags() {
71         var tag = new Tag("hs23.6-b19");
72         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
73         assertEquals(19, jdkTag.buildNum());
74         var previousTag = jdkTag.previous().orElseThrow();
75         assertEquals(18, previousTag.buildNum());
76     }
77 
78     @Test
79     void parseSingleDigitHotspotTags() {
80         var tag = new Tag("hs23.6-b10");
81         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
82         assertEquals(10, jdkTag.buildNum());
83         var previousTag = jdkTag.previous().orElseThrow();
84         assertEquals("hs23.6-b09", previousTag.tag().name());
85         assertEquals(9, previousTag.buildNum());
86     }
87 
88     @Test
89     void noPrevious() {
90         var tag = new Tag("jdk-10+0");
91         var jdkTag = OpenJDKTag.create(tag).orElseThrow();
92         assertEquals(0, jdkTag.buildNum());
93         assertFalse(jdkTag.previous().isPresent());
94     }
95 }