Beispiel #1
0
 public virtual void TestAuthorScriptConverter()
 {
     // -1 h timezone offset
     PersonIdent ident = new PersonIdent("Author name", "*****@*****.**", 123456789123L
         , -60);
     string convertedAuthor = git.Rebase().ToAuthorScript(ident);
     string[] lines = convertedAuthor.Split("\n");
     NUnit.Framework.Assert.AreEqual("GIT_AUTHOR_NAME='Author name'", lines[0]);
     NUnit.Framework.Assert.AreEqual("GIT_AUTHOR_EMAIL='*****@*****.**'", lines[1]);
     NUnit.Framework.Assert.AreEqual("GIT_AUTHOR_DATE='123456789 -0100'", lines[2]);
     PersonIdent parsedIdent = git.Rebase().ParseAuthor(Sharpen.Runtime.GetBytesForString
         (convertedAuthor, "UTF-8"));
     NUnit.Framework.Assert.AreEqual(ident.GetName(), parsedIdent.GetName());
     NUnit.Framework.Assert.AreEqual(ident.GetEmailAddress(), parsedIdent.GetEmailAddress
         ());
     // this is rounded to the last second
     NUnit.Framework.Assert.AreEqual(123456789000L, parsedIdent.GetWhen().GetTime());
     NUnit.Framework.Assert.AreEqual(ident.GetTimeZoneOffset(), parsedIdent.GetTimeZoneOffset
         ());
     // + 9.5h timezone offset
     ident = new PersonIdent("Author name", "*****@*****.**", 123456789123L, +570);
     convertedAuthor = git.Rebase().ToAuthorScript(ident);
     lines = convertedAuthor.Split("\n");
     NUnit.Framework.Assert.AreEqual("GIT_AUTHOR_NAME='Author name'", lines[0]);
     NUnit.Framework.Assert.AreEqual("GIT_AUTHOR_EMAIL='*****@*****.**'", lines[1]);
     NUnit.Framework.Assert.AreEqual("GIT_AUTHOR_DATE='123456789 +0930'", lines[2]);
     parsedIdent = git.Rebase().ParseAuthor(Sharpen.Runtime.GetBytesForString(convertedAuthor
         , "UTF-8"));
     NUnit.Framework.Assert.AreEqual(ident.GetName(), parsedIdent.GetName());
     NUnit.Framework.Assert.AreEqual(ident.GetEmailAddress(), parsedIdent.GetEmailAddress
         ());
     NUnit.Framework.Assert.AreEqual(123456789000L, parsedIdent.GetWhen().GetTime());
     NUnit.Framework.Assert.AreEqual(ident.GetTimeZoneOffset(), parsedIdent.GetTimeZoneOffset
         ());
 }
Beispiel #2
0
        /// <summary>
        /// Format committer, author or tagger ident according to this formatter's
        /// specification.
        /// </summary>
        /// <remarks>
        /// Format committer, author or tagger ident according to this formatter's
        /// specification.
        /// </remarks>
        /// <param name="ident"></param>
        /// <returns>formatted version of date, time and time zone</returns>
        public virtual string FormatDate(PersonIdent ident)
        {
            switch (format)
            {
                case GitDateFormatter.Format.RAW:
                {
                    int offset = ident.GetTimeZoneOffset();
                    string sign = offset < 0 ? "-" : "+";
                    int offset2;
                    if (offset < 0)
                    {
                        offset2 = -offset;
                    }
                    else
                    {
                        offset2 = offset;
                    }
                    int hours = offset2 / 60;
                    int minutes = offset2 % 60;
                    return string.Format("%d %s%02d%02d", ident.GetWhen().GetTime() / 1000, sign, hours
                        , minutes);
                }

                case GitDateFormatter.Format.RELATIVE:
                {
                    return RelativeDateFormatter.Format(ident.GetWhen());
                }

                case GitDateFormatter.Format.LOCALELOCAL:
                case GitDateFormatter.Format.LOCAL:
                {
                    dateTimeInstance.SetTimeZone(SystemReader.GetInstance().GetTimeZone());
                    return dateTimeInstance.Format(ident.GetWhen());
                }

                case GitDateFormatter.Format.LOCALE:
                {
                    TimeZoneInfo tz = ident.GetTimeZone();
                    if (tz == null)
                    {
                        tz = SystemReader.GetInstance().GetTimeZone();
                    }
                    dateTimeInstance.SetTimeZone(tz);
                    dateTimeInstance2.SetTimeZone(tz);
                    return dateTimeInstance.Format(ident.GetWhen()) + " " + dateTimeInstance2.Format(
                        ident.GetWhen());
                }

                default:
                {
                    tz = ident.GetTimeZone();
                    if (tz == null)
                    {
                        tz = SystemReader.GetInstance().GetTimeZone();
                    }
                    dateTimeInstance.SetTimeZone(ident.GetTimeZone());
                    return dateTimeInstance.Format(ident.GetWhen());
                    break;
                }
            }
        }