View Javadoc
1   /*
2    * Copyright (C) 2008, 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.treewalk;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertFalse;
15  import static org.junit.Assert.assertNotNull;
16  import static org.junit.Assert.assertSame;
17  import static org.junit.Assert.assertTrue;
18  
19  import org.eclipse.jgit.junit.RepositoryTestCase;
20  import org.eclipse.jgit.lib.ObjectId;
21  import org.eclipse.jgit.lib.ObjectReader;
22  import org.junit.Test;
23  
24  public class EmptyTreeIteratorTest extends RepositoryTestCase {
25  	@Test
26  	public void testAtEOF() throws Exception {
27  		final EmptyTreeIterator etp = new EmptyTreeIterator();
28  		assertTrue(etp.first());
29  		assertTrue(etp.eof());
30  	}
31  
32  	@Test
33  	public void testCreateSubtreeIterator() throws Exception {
34  		final EmptyTreeIterator etp = new EmptyTreeIterator();
35  		try (ObjectReader reader = db.newObjectReader()) {
36  			final AbstractTreeIterator sub = etp.createSubtreeIterator(reader);
37  			assertNotNull(sub);
38  			assertTrue(sub.first());
39  			assertTrue(sub.eof());
40  			assertTrue(sub instanceof EmptyTreeIterator);
41  		}
42  	}
43  
44  	@Test
45  	public void testEntryObjectId() throws Exception {
46  		final EmptyTreeIterator etp = new EmptyTreeIterator();
47  		assertSame(ObjectId.zeroId(), etp.getEntryObjectId());
48  		assertNotNull(etp.idBuffer());
49  		assertEquals(0, etp.idOffset());
50  		assertEquals(ObjectId.zeroId(), ObjectId.fromRaw(etp.idBuffer()));
51  	}
52  
53  	@Test
54  	public void testNextDoesNothing() throws Exception {
55  		final EmptyTreeIterator etp = new EmptyTreeIterator();
56  		etp.next(1);
57  		assertTrue(etp.first());
58  		assertTrue(etp.eof());
59  		assertEquals(ObjectId.zeroId(), ObjectId.fromRaw(etp.idBuffer()));
60  
61  		etp.next(1);
62  		assertTrue(etp.first());
63  		assertTrue(etp.eof());
64  		assertEquals(ObjectId.zeroId(), ObjectId.fromRaw(etp.idBuffer()));
65  	}
66  
67  	@Test
68  	public void testBackDoesNothing() throws Exception {
69  		final EmptyTreeIterator etp = new EmptyTreeIterator();
70  		etp.back(1);
71  		assertTrue(etp.first());
72  		assertTrue(etp.eof());
73  		assertEquals(ObjectId.zeroId(), ObjectId.fromRaw(etp.idBuffer()));
74  
75  		etp.back(1);
76  		assertTrue(etp.first());
77  		assertTrue(etp.eof());
78  		assertEquals(ObjectId.zeroId(), ObjectId.fromRaw(etp.idBuffer()));
79  	}
80  
81  	@Test
82  	public void testStopWalkCallsParent() throws Exception {
83  		final boolean called[] = new boolean[1];
84  		assertFalse(called[0]);
85  
86  		final EmptyTreeIterator parent = new EmptyTreeIterator() {
87  			@Override
88  			public void stopWalk() {
89  				called[0] = true;
90  			}
91  		};
92  		try (ObjectReader reader = db.newObjectReader()) {
93  			parent.createSubtreeIterator(reader).stopWalk();
94  		}
95  		assertTrue(called[0]);
96  	}
97  }