[JGIT PATCH 09/12] Add tests for basic RevObject methods related to type, flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx>
---
 .../org/spearce/jgit/revwalk/RevObjectTest.java    |  171 ++++++++++++++++++++
 .../org/spearce/jgit/revwalk/RevWalkTestCase.java  |   18 ++
 2 files changed, 189 insertions(+), 0 deletions(-)
 create mode 100644 org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevObjectTest.java

diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevObjectTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevObjectTest.java
new file mode 100644
index 0000000..0eaafbf
--- /dev/null
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevObjectTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2009, Google Inc.
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ * - Neither the name of the Git Development Community nor the
+ *   names of its contributors may be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.spearce.jgit.revwalk;
+
+import org.spearce.jgit.lib.AnyObjectId;
+import org.spearce.jgit.lib.Constants;
+
+public class RevObjectTest extends RevWalkTestCase {
+	public void testId() throws Exception {
+		final RevCommit a = commit();
+		assertSame(a, a.getId());
+	}
+
+	public void testEqualsIsIdentity() throws Exception {
+		final RevCommit a1 = commit();
+		final RevCommit b1 = commit();
+
+		assertTrue(a1.equals(a1));
+		assertTrue(a1.equals((Object) a1));
+		assertFalse(a1.equals(b1));
+
+		assertFalse(a1.equals(a1.copy()));
+		assertFalse(a1.equals((Object) a1.copy()));
+		assertFalse(a1.equals(""));
+
+		final RevWalk rw2 = new RevWalk(db);
+		final RevCommit a2 = rw2.parseCommit(a1);
+		final RevCommit b2 = rw2.parseCommit(b1);
+		assertNotSame(a1, a2);
+		assertNotSame(b1, b2);
+
+		assertFalse(a1.equals(a2));
+		assertFalse(b1.equals(b2));
+
+		assertEquals(a1.hashCode(), a2.hashCode());
+		assertEquals(b1.hashCode(), b2.hashCode());
+
+		assertTrue(AnyObjectId.equals(a1, a2));
+		assertTrue(AnyObjectId.equals(b1, b2));
+	}
+
+	public void testRevObjectTypes() throws Exception {
+		assertEquals(Constants.OBJ_TREE, emptyTree.getType());
+		assertEquals(Constants.OBJ_COMMIT, commit().getType());
+		assertEquals(Constants.OBJ_BLOB, blob("").getType());
+		assertEquals(Constants.OBJ_TAG, tag("emptyTree", emptyTree).getType());
+	}
+
+	public void testHasRevFlag() throws Exception {
+		final RevCommit a = commit();
+		assertFalse(a.has(RevFlag.UNINTERESTING));
+		a.flags |= RevWalk.UNINTERESTING;
+		assertTrue(a.has(RevFlag.UNINTERESTING));
+	}
+
+	public void testHasAnyFlag() throws Exception {
+		final RevCommit a = commit();
+		final RevFlag flag1 = rw.newFlag("flag1");
+		final RevFlag flag2 = rw.newFlag("flag2");
+		final RevFlagSet s = new RevFlagSet();
+		s.add(flag1);
+		s.add(flag2);
+
+		assertFalse(a.hasAny(s));
+		a.flags |= flag1.mask;
+		assertTrue(a.hasAny(s));
+	}
+
+	public void testHasAllFlag() throws Exception {
+		final RevCommit a = commit();
+		final RevFlag flag1 = rw.newFlag("flag1");
+		final RevFlag flag2 = rw.newFlag("flag2");
+		final RevFlagSet s = new RevFlagSet();
+		s.add(flag1);
+		s.add(flag2);
+
+		assertFalse(a.hasAll(s));
+		a.flags |= flag1.mask;
+		assertFalse(a.hasAll(s));
+		a.flags |= flag2.mask;
+		assertTrue(a.hasAll(s));
+	}
+
+	public void testAddRevFlag() throws Exception {
+		final RevCommit a = commit();
+		final RevFlag flag1 = rw.newFlag("flag1");
+		final RevFlag flag2 = rw.newFlag("flag2");
+		assertEquals(0, a.flags);
+
+		a.add(flag1);
+		assertEquals(flag1.mask, a.flags);
+
+		a.add(flag2);
+		assertEquals(flag1.mask | flag2.mask, a.flags);
+	}
+
+	public void testAddRevFlagSet() throws Exception {
+		final RevCommit a = commit();
+		final RevFlag flag1 = rw.newFlag("flag1");
+		final RevFlag flag2 = rw.newFlag("flag2");
+		final RevFlagSet s = new RevFlagSet();
+		s.add(flag1);
+		s.add(flag2);
+
+		assertEquals(0, a.flags);
+
+		a.add(s);
+		assertEquals(flag1.mask | flag2.mask, a.flags);
+	}
+
+	public void testRemoveRevFlag() throws Exception {
+		final RevCommit a = commit();
+		final RevFlag flag1 = rw.newFlag("flag1");
+		final RevFlag flag2 = rw.newFlag("flag2");
+		a.add(flag1);
+		a.add(flag2);
+		assertEquals(flag1.mask | flag2.mask, a.flags);
+		a.remove(flag2);
+		assertEquals(flag1.mask, a.flags);
+	}
+
+	public void testRemoveRevFlagSet() throws Exception {
+		final RevCommit a = commit();
+		final RevFlag flag1 = rw.newFlag("flag1");
+		final RevFlag flag2 = rw.newFlag("flag2");
+		final RevFlag flag3 = rw.newFlag("flag3");
+		final RevFlagSet s = new RevFlagSet();
+		s.add(flag1);
+		s.add(flag2);
+		a.add(flag3);
+		a.add(s);
+		assertEquals(flag1.mask | flag2.mask | flag3.mask, a.flags);
+		a.remove(s);
+		assertEquals(flag3.mask, a.flags);
+	}
+}
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevWalkTestCase.java b/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevWalkTestCase.java
index f83be8d..501aa13 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevWalkTestCase.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/revwalk/RevWalkTestCase.java
@@ -40,9 +40,11 @@
 import java.util.Date;
 
 import org.spearce.jgit.lib.Commit;
+import org.spearce.jgit.lib.Constants;
 import org.spearce.jgit.lib.ObjectWriter;
 import org.spearce.jgit.lib.PersonIdent;
 import org.spearce.jgit.lib.RepositoryTestCase;
+import org.spearce.jgit.lib.Tag;
 import org.spearce.jgit.lib.Tree;
 
 /** Support for tests of the {@link RevWalk} class. */
@@ -67,6 +69,11 @@ protected void tick(final int secDelta) {
 		nowTick += secDelta * 1000L;
 	}
 
+	protected RevBlob blob(final String content) throws Exception {
+		return rw.lookupBlob(ow.writeBlob(content
+				.getBytes(Constants.CHARACTER_ENCODING)));
+	}
+
 	protected RevCommit commit(final RevCommit... parents) throws Exception {
 		return commit(1, parents);
 	}
@@ -83,6 +90,17 @@ protected RevCommit commit(final int secDelta, final RevCommit... parents)
 		return rw.lookupCommit(ow.writeCommit(c));
 	}
 
+	protected RevTag tag(final String name, final RevObject dst)
+			throws Exception {
+		final Tag t = new Tag(db);
+		t.setType(Constants.typeString(dst.getType()));
+		t.setObjId(dst.toObjectId());
+		t.setTag(name);
+		t.setTagger(new PersonIdent(jcommitter, new Date(nowTick)));
+		t.setMessage("");
+		return (RevTag) rw.lookupAny(ow.writeTag(t), Constants.OBJ_TAG);
+	}
+
 	protected <T extends RevObject> T parse(final T t) throws Exception {
 		rw.parse(t);
 		return t;
-- 
1.6.2.1.286.g8173

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux