aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/PersonIdentTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/PersonIdentTest.java')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/PersonIdentTest.java141
1 files changed, 141 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/PersonIdentTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/PersonIdentTest.java
new file mode 100644
index 0000000000..943a68b82c
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/PersonIdentTest.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2006-2007, Shawn O. Pearce <spearce@spearce.org> and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.lib;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.time.Instant;
+import java.time.ZoneId;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.junit.Test;
+
+public class PersonIdentTest {
+
+ @Test
+ public void test001_NewIdent() {
+ final PersonIdent p = new PersonIdent("A U Thor", "author@example.com",
+ new Date(1142878501000L), TimeZone.getTimeZone("EST"));
+ assertEquals("A U Thor", p.getName());
+ assertEquals("author@example.com", p.getEmailAddress());
+ assertEquals(1142878501000L, p.getWhen().getTime());
+ assertEquals("A U Thor <author@example.com> 1142878501 -0500",
+ p.toExternalString());
+ }
+
+ @Test
+ public void test002_NewIdent() {
+ final PersonIdent p = new PersonIdent("A U Thor", "author@example.com",
+ new Date(1142878501000L), TimeZone.getTimeZone("GMT+0230"));
+ assertEquals("A U Thor", p.getName());
+ assertEquals("author@example.com", p.getEmailAddress());
+ assertEquals(1142878501000L, p.getWhen().getTime());
+ assertEquals("A U Thor <author@example.com> 1142878501 +0230",
+ p.toExternalString());
+ }
+
+ @Test
+ public void testNewIdentInstant() {
+ PersonIdent p = new PersonIdent("A U Thor", "author@example.com",
+ Instant.ofEpochMilli(1142878501000L),
+ ZoneId.of("America/New_York"));
+ assertEquals("A U Thor", p.getName());
+ assertEquals("author@example.com", p.getEmailAddress());
+ assertEquals(Instant.ofEpochMilli(1142878501000L),
+ p.getWhenAsInstant());
+ assertEquals("A U Thor <author@example.com> 1142878501 -0500",
+ p.toExternalString());
+ assertEquals(ZoneId.of("GMT-05:00").getRules().getOffset(
+ Instant.ofEpochMilli(1142878501000L)), p.getZoneOffset());
+ }
+
+ @Test
+ public void testNewIdentInstant2() {
+ final PersonIdent p = new PersonIdent("A U Thor", "author@example.com",
+ Instant.ofEpochMilli(1142878501000L),
+ ZoneId.of("Asia/Kolkata"));
+ assertEquals("A U Thor", p.getName());
+ assertEquals("author@example.com", p.getEmailAddress());
+ assertEquals(Instant.ofEpochMilli(1142878501000L),
+ p.getWhenAsInstant());
+ assertEquals("A U Thor <author@example.com> 1142878501 +0530",
+ p.toExternalString());
+ assertEquals(ZoneId.of("GMT+05:30").getRules().getOffset(
+ Instant.ofEpochMilli(1142878501000L)), p.getZoneOffset());
+ }
+
+ @SuppressWarnings("unused")
+ @Test(expected = IllegalArgumentException.class)
+ public void nullForNameShouldThrowIllegalArgumentException() {
+ new PersonIdent(null, "author@example.com");
+ }
+
+ @SuppressWarnings("unused")
+ @Test(expected = IllegalArgumentException.class)
+ public void nullForEmailShouldThrowIllegalArgumentException() {
+ new PersonIdent("A U Thor", null);
+ }
+
+ @Test
+ public void testToExternalStringTrimsNameAndEmail() throws Exception {
+ PersonIdent personIdent = new PersonIdent(" \u0010A U Thor ",
+ " author@example.com \u0009");
+
+ assertEquals(" \u0010A U Thor ", personIdent.getName());
+ assertEquals(" author@example.com \u0009", personIdent.getEmailAddress());
+
+ String externalString = personIdent.toExternalString();
+ assertTrue(externalString.startsWith("A U Thor <author@example.com>"));
+ }
+
+ @Test
+ public void testToExternalStringTrimsAllWhitespace() {
+ String ws = " \u0001 \n ";
+ PersonIdent personIdent = new PersonIdent(ws, ws);
+ assertEquals(ws, personIdent.getName());
+ assertEquals(ws, personIdent.getEmailAddress());
+
+ String externalString = personIdent.toExternalString();
+ assertTrue(externalString.startsWith(" <>"));
+ }
+
+ @Test
+ public void testToExternalStringTrimsOtherBadCharacters() {
+ String name = " Foo\r\n<Bar> ";
+ String email = " Baz>\n\u1234<Quux ";
+ PersonIdent personIdent = new PersonIdent(name, email);
+ assertEquals(name, personIdent.getName());
+ assertEquals(email, personIdent.getEmailAddress());
+
+ String externalString = personIdent.toExternalString();
+ assertTrue(externalString.startsWith("Foo\rBar <Baz\u1234Quux>"));
+ }
+
+ @Test
+ public void testEmptyNameAndEmail() {
+ PersonIdent personIdent = new PersonIdent("", "");
+ assertEquals("", personIdent.getName());
+ assertEquals("", personIdent.getEmailAddress());
+
+ String externalString = personIdent.toExternalString();
+ assertTrue(externalString.startsWith(" <>"));
+ }
+
+ @Test
+ public void testAppendSanitized() {
+ StringBuilder r = new StringBuilder();
+ PersonIdent.appendSanitized(r, " Baz>\n\u1234<Quux ");
+ assertEquals("Baz\u1234Quux", r.toString());
+ }
+}
+