1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 compeople AG and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  * 	compeople AG (Stefan Liebig) - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.equinox.p2.tests.metadata;
15 
16 import static org.junit.Assert.assertEquals;
17 import static org.junit.Assert.assertNotNull;
18 import static org.junit.Assert.assertThrows;
19 
20 import org.eclipse.equinox.internal.p2.metadata.ArtifactKey;
21 import org.eclipse.equinox.p2.metadata.IArtifactKey;
22 import org.eclipse.equinox.p2.metadata.Version;
23 import org.junit.Test;
24 
25 /**
26  * Test <code>ArtifactkeyDeSerializer</code>
27  */
28 public class ArtifactKeyParsingTest {
29 	@Test
testSerialize()30 	public void testSerialize() {
31 		IArtifactKey key = new ArtifactKey("classifier", "identifier", Version.create("1.0"));
32 		assertEquals("classifier,identifier,1.0.0", key.toExternalForm());
33 	}
34 
35 	@Test
testSerializeEmptyClassifier()36 	public void testSerializeEmptyClassifier() {
37 		IArtifactKey key = new ArtifactKey("", "identifier", Version.create("1.0"));
38 		assertEquals(",identifier,1.0.0", key.toExternalForm());
39 	}
40 
41 	@Test
testDeserialize()42 	public void testDeserialize() {
43 		IArtifactKey key = ArtifactKey.parse("classifier,identifier,1.0.0");
44 		assertNotNull(key);
45 		assertEquals("classifier", key.getClassifier());
46 		assertEquals("identifier", key.getId());
47 		assertEquals(Version.create("1.0"), key.getVersion());
48 	}
49 
50 	@Test
testDeserializeEmptyClassifier()51 	public void testDeserializeEmptyClassifier() {
52 		IArtifactKey key = ArtifactKey.parse(",identifier,1.0.0");
53 		assertNotNull(key);
54 		assertEquals("", key.getClassifier());
55 		assertEquals("identifier", key.getId());
56 		assertEquals(Version.create("1.0"), key.getVersion());
57 	}
58 
59 	@Test
testDeserializeEmptyIdentifier()60 	public void testDeserializeEmptyIdentifier() {
61 		IArtifactKey key = ArtifactKey.parse("classifier,,1.0.0");
62 		assertNotNull(key);
63 		assertEquals("classifier", key.getClassifier());
64 		assertEquals("", key.getId());
65 		assertEquals(Version.create("1.0"), key.getVersion());
66 	}
67 
68 	@Test
testDeserializeEmptyVersion()69 	public void testDeserializeEmptyVersion() {
70 		IArtifactKey key = ArtifactKey.parse("classifier,identifier,");
71 		assertNotNull(key);
72 		assertEquals("classifier", key.getClassifier());
73 		assertEquals("identifier", key.getId());
74 		assertEquals(Version.create("0.0"), key.getVersion());
75 	}
76 
77 	@Test
testDeserializeEmptyEverything()78 	public void testDeserializeEmptyEverything() {
79 		IArtifactKey key = ArtifactKey.parse(",,");
80 		assertNotNull(key);
81 		assertEquals("", key.getClassifier());
82 		assertEquals("", key.getId());
83 		assertEquals(Version.create("0.0"), key.getVersion());
84 	}
85 
86 	@Test
testDeserializeTooFewPartsI()87 	public void testDeserializeTooFewPartsI() {
88 		assertThrows(IllegalArgumentException.class, () -> ArtifactKey.parse(""));
89 	}
90 
91 	@Test
testDeserializeTooManyPartsI()92 	public void testDeserializeTooManyPartsI() {
93 		assertThrows(IllegalArgumentException.class, () -> ArtifactKey.parse(",,,,"));
94 	}
95 
96 	@Test
testDeserializeTooFewPartsII()97 	public void testDeserializeTooFewPartsII() {
98 		assertThrows(IllegalArgumentException.class, () -> ArtifactKey.parse("classifier"));
99 	}
100 }
101