View Javadoc
1   /*
2    * Copyright (C) 2010, Google Inc. and others
3    *
4    * This program and the accompanying materials are made available under the
5    * terms of the Eclipse Distribution License v. 1.0 which is available at
6    * https://www.eclipse.org/org/documents/edl-v10.php.
7    *
8    * SPDX-License-Identifier: BSD-3-Clause
9    */
10  
11  package org.eclipse.jgit.lib;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertFalse;
15  import static org.junit.Assert.assertNull;
16  import static org.junit.Assert.assertSame;
17  import static org.junit.Assert.assertTrue;
18  
19  import org.junit.Test;
20  
21  public class SymbolicRefTest {
22  	private static final ObjectId ID_A = ObjectId
23  			.fromString("41eb0d88f833b558bddeb269b7ab77399cdf98ed");
24  
25  	private static final ObjectId ID_B = ObjectId
26  			.fromString("698dd0b8d0c299f080559a1cffc7fe029479a408");
27  
28  	private static final String targetName = "refs/heads/a.test.ref";
29  
30  	private static final String name = "refs/remotes/origin/HEAD";
31  
32  	@Test
33  	public void testConstructor() {
34  		Ref t;
35  		SymbolicRef r;
36  
37  		t = new ObjectIdRef.Unpeeled(Ref.Storage.NEW, targetName, null);
38  		r = new SymbolicRef(name, t, 1);
39  		assertSame(Ref.Storage.LOOSE, r.getStorage());
40  		assertSame(name, r.getName());
41  		assertNull("no id on new ref", r.getObjectId());
42  		assertFalse("not peeled", r.isPeeled());
43  		assertNull("no peel id", r.getPeeledObjectId());
44  		assertSame("leaf is t", t, r.getLeaf());
45  		assertSame("target is t", t, r.getTarget());
46  		assertTrue("is symbolic", r.isSymbolic());
47  		assertTrue("holds update index", r.getUpdateIndex() == 1);
48  
49  		t = new ObjectIdRef.Unpeeled(Ref.Storage.PACKED, targetName, ID_A);
50  		r = new SymbolicRef(name, t, 2);
51  		assertSame(Ref.Storage.LOOSE, r.getStorage());
52  		assertSame(name, r.getName());
53  		assertSame(ID_A, r.getObjectId());
54  		assertFalse("not peeled", r.isPeeled());
55  		assertNull("no peel id", r.getPeeledObjectId());
56  		assertSame("leaf is t", t, r.getLeaf());
57  		assertSame("target is t", t, r.getTarget());
58  		assertTrue("is symbolic", r.isSymbolic());
59  		assertTrue("holds update index", r.getUpdateIndex() == 2);
60  	}
61  
62  	@Test
63  	public void testLeaf() {
64  		Ref a;
65  		SymbolicRef b, c, d;
66  
67  		a = new ObjectIdRef.PeeledTag(Ref.Storage.PACKED, targetName, ID_A, ID_B);
68  		b = new SymbolicRef("B", a);
69  		c = new SymbolicRef("C", b);
70  		d = new SymbolicRef("D", c);
71  
72  		assertSame(c, d.getTarget());
73  		assertSame(b, c.getTarget());
74  		assertSame(a, b.getTarget());
75  
76  		assertSame(a, d.getLeaf());
77  		assertSame(a, c.getLeaf());
78  		assertSame(a, b.getLeaf());
79  		assertSame(a, a.getLeaf());
80  
81  		assertSame(ID_A, d.getObjectId());
82  		assertSame(ID_A, c.getObjectId());
83  		assertSame(ID_A, b.getObjectId());
84  
85  		assertTrue(d.isPeeled());
86  		assertTrue(c.isPeeled());
87  		assertTrue(b.isPeeled());
88  
89  		assertSame(ID_B, d.getPeeledObjectId());
90  		assertSame(ID_B, c.getPeeledObjectId());
91  		assertSame(ID_B, b.getPeeledObjectId());
92  	}
93  
94  	@Test
95  	public void testToString() {
96  		Ref a;
97  		SymbolicRef b, c, d;
98  
99  		a = new ObjectIdRef.PeeledTag(Ref.Storage.PACKED, targetName, ID_A, ID_B);
100 		b = new SymbolicRef("B", a);
101 		c = new SymbolicRef("C", b);
102 		d = new SymbolicRef("D", c);
103 
104 		assertEquals("SymbolicRef[D -> C -> B -> " + targetName + "="
105 				+ ID_A.name() + "(-1)]", d.toString());
106 	}
107 }