コード例 #1
0
 public void ReplacingDonor()
 {
     var donation = new Donation(10, new DateTime(2011, 01, 01), "Markus Mustermann", 4711);
     donation.Donor = "ABC";
     donation.DonorNo = 12345;
     Assert.AreEqual("20110101123451", donation.BookingId);
 }
コード例 #2
0
 public void TwoDonationsOnSameDate()
 {
     var donation = new Donation(10, new DateTime(2011, 01, 01), "Markus Mustermann", 4711);
     var secondDonation = new Donation(100, new DateTime(2011, 01, 01), "Markus Mustermann", 4711);
     Assert.AreEqual("20110101047111", donation.BookingId);
     Assert.AreEqual("20110101047112", secondDonation.BookingId);
 }
コード例 #3
0
        public void ApplyReplacements(Donation donation)
        {
            if (!ApplyDonationReplacements(donation))
                return;

            if (!ApplyStringReplacements(donation))
                return;

            ApplyRegexReplacements(RegexReplacements, donation);
        }
コード例 #4
0
 public int GetBookingId(Donation donation)
 {
     var donationInfo = GetDonationInfo(donation);
     if (m_Donations.ContainsKey(donationInfo))
     {
         m_Donations[donationInfo].Add(donation.Amount);
         return m_Donations[donationInfo].Count;
     }
     m_Donations.Add(donationInfo, new List<decimal> { donation.Amount });
     return 1;
 }
コード例 #5
0
 public static void DonationEqual(Donation expected, Donation actual)
 {
     if (expected.DonorNo != UInt32.MaxValue)
         Assert.AreEqual(expected.DonorNo, actual.DonorNo);
     Assert.AreEqual(expected.Donor, actual.Donor);
     Assert.AreEqual(expected.Date, actual.Date);
     Assert.AreEqual(expected.Amount, actual.Amount);
     Assert.AreEqual(expected.Remarks, actual.Remarks);
     Assert.AreEqual(expected.TenderedAmount, actual.TenderedAmount);
     Assert.AreEqual(expected.TenderedCurrency, actual.TenderedCurrency);
 }
コード例 #6
0
        public void AccountSpecificReplacement()
        {
            MyReplacementManager.CreateReplacementFile(@"
            # Comment
            [999]
            Markus Mustermann=997; ""Mustermann, Markus""
            F. Mueller=996; Mueller, Franz
            Anton=995;Berta");
            var donation = new Donation(80, new DateTime(2010, 06, 01),
                "ungen. ueberw. durch Markus Mustermann", 999);
            MyReplacementManager.Instance.ApplyReplacements(donation);

            AssertEx.DonationEqual(new Donation(80, new DateTime(2010, 06, 01), "Mustermann, Markus", 997),
                donation);
        }
コード例 #7
0
 protected override Donation CreateDonation(string[] partsOfLine, CultureInfo cultureInfo)
 {
     var donation = new Donation
     {
         DonorNo = 998,
         Date = Convert.ToDateTime(partsOfLine[1], cultureInfo),
         Amount = Convert.ToDecimal(partsOfLine[2], cultureInfo)
     };
     if (partsOfLine[3] == "S")
     {
         donation.Amount = -donation.Amount;
     }
     donation.Donor = partsOfLine[5];
     return donation;
 }
コード例 #8
0
        protected override Donation CreateDonation(string[] partsOfLine, CultureInfo cultureInfo)
        {
            if (!Replacements.IncludeEntry(m_AccountNo, partsOfLine[DonorIndex]))
                return null;

            // 30.10.2012	100,00	H	UM 867	Umb. von Frieder Friederich
            // [1]          [2]    [3]  [4]     [5]
            var donation = new Donation
            {
                Date = Convert.ToDateTime(partsOfLine[1], cultureInfo),
                Amount = Convert.ToDecimal(partsOfLine[2], cultureInfo),
                Donor = partsOfLine[5],
                DonorNo = (uint)partsOfLine[5].GetHashCode()
            };
            if (partsOfLine[3] == "S")
            {
                donation.Amount = -donation.Amount;
            }
            return donation;
        }
コード例 #9
0
        protected override Donation CreateDonation(string[] partsOfLine, CultureInfo cultureInfo)
        {
            if (Replacements.ExcludeEntry(m_AccountNo, partsOfLine[DonorIndex]))
                return null;

            // 23.11.2012	US$	209,64	162,20	H	8021	SWZ Member gift
            // [1]          [2] [3]     [4]    [5]  [6]     [7]
            var donation = new Donation
            {
                Date = Convert.ToDateTime(partsOfLine[1], cultureInfo),
                Amount = Convert.ToDecimal(partsOfLine[4], cultureInfo),
                Donor = partsOfLine[DonorIndex],
                Remarks = string.Format("Netto; {0} {1}", partsOfLine[2],
                    partsOfLine[3]),
                TenderedAmount = Convert.ToDecimal(partsOfLine[3], cultureInfo),
                TenderedCurrency = partsOfLine[2] == "US$" ? "USD" : partsOfLine[2]
            };
            if (partsOfLine[5] == "S")
            {
                donation.Amount = -donation.Amount;
            }
            donation.DonorNo = (uint)donation.Donor.GetHashCode();
            return donation;
        }
コード例 #10
0
 protected virtual void AppendSecondLine(Donation donation, string[] partsOfLine)
 {
     if (donation != null)
         donation.Donor = string.Format("{0} {1}", donation.Donor, partsOfLine[DonorIndex]);
 }
コード例 #11
0
 protected override void AppendSecondLine(Donation donation, string[] partsOfLine)
 {
     // just ignore
 }
コード例 #12
0
 public void AddDonation()
 {
     var donation = new Donation(10, new DateTime(2010, 11, 12), "Mustermann", 12345);
     Assert.AreEqual(1, m_Manager.GetBookingId(donation));
 }
コード例 #13
0
 private bool ApplyStringReplacements(Donation donation)
 {
     if (ReplacementInfo.ContainsKey(Replacements))
     {
         foreach (var searchText in ReplacementInfo[Replacements].Keys)
         {
             if (donation.Donor.Contains(searchText))
             {
                 donation.Donor = GetReplacement(Replacements, searchText).Donor;
             }
         }
     }
     return !string.IsNullOrEmpty(donation.Donor);
 }
コード例 #14
0
        public void Regex_ReplaceEntireString()
        {
            MyReplacementManager.CreateReplacementFile(@"
            [Regex]
            Pattern=^Umb\..+Friederich$
            Replace=Friederich, Frieder");
            var donation = new Donation(0, DateTime.Now, "Umb. von Frieder Friederich", 0);

            MyReplacementManager.Instance.ApplyReplacements(donation);

            Assert.AreEqual("Friederich, Frieder", donation.Donor);
        }
コード例 #15
0
 private bool ApplyDonationReplacements(Donation donation)
 {
     if (ReplacementInfo.ContainsKey((int)donation.DonorNo))
     {
         foreach (var searchText in ReplacementInfo[(int)donation.DonorNo].Keys)
         {
             if (donation.Donor.Contains(searchText))
             {
                 var newDonor = GetReplacement((int)donation.DonorNo, searchText) as NewDonor;
                 donation.DonorNo = newDonor.DonorNo;
                 donation.Donor = newDonor.Donor;
                 break;
             }
         }
     }
     return !string.IsNullOrEmpty(donation.Donor);
 }
コード例 #16
0
        public void Regex_ComplexPattern()
        {
            MyReplacementManager.CreateReplacementFile(@"
            [Regex]
            Pattern=^.+(F[^ ]+) (F[a-z]+)$
            Replace=$2, $1");
            var donation = new Donation(0, DateTime.Now, "Umb. von Frieder Friederich", 0);

            MyReplacementManager.Instance.ApplyReplacements(donation);

            Assert.AreEqual("Friederich, Frieder", donation.Donor);
        }
コード例 #17
0
        public void Replacements_AnonDonation()
        {
            MyReplacementManager.CreateReplacementFile(@"
            # Comment
            [999]
            Markus Mustermann=997; ""Mustermann, Markus""
            F. Mueller=996; Mueller, Franz
            Anton=995;Berta
            [Replacements]
            Umb. von Frieder Friederich=Friederich, Frieder
            Berta=Caesar");
            var donation = new Donation(80, new DateTime(2010, 06, 01),
                "ungen. ueberw. durch Anton", 999);
            MyReplacementManager.Instance.ApplyReplacements(donation);

            AssertEx.DonationEqual(new Donation(80, new DateTime(2010, 06, 01), "Caesar", 995),
                donation);
        }
コード例 #18
0
        public void Regex_UseSearchText()
        {
            MyReplacementManager.CreateReplacementFile(@"
            [Regex]
            Pattern=^.+(Frieder Friederich)$
            Replace=$1");
            var donation = new Donation(0, DateTime.Now, "Umb. von Frieder Friederich", 0);

            MyReplacementManager.Instance.ApplyReplacements(donation);

            Assert.AreEqual("Frieder Friederich", donation.Donor);
        }
コード例 #19
0
        public void Regex_ReplacePartOfString()
        {
            MyReplacementManager.CreateReplacementFile(@"
            [Regex]
            Pattern=ie
            Replace=ei");
            var donation = new Donation(0, DateTime.Now, "Umb. von Frieder Friederich", 0);

            MyReplacementManager.Instance.ApplyReplacements(donation);

            Assert.AreEqual("Umb. von Freider Freiderich", donation.Donor);
        }
コード例 #20
0
 protected virtual Donation CreateDonation(string[] partsOfLine, CultureInfo cultureInfo)
 {
     var donation = new Donation {
         DonorNo = Convert.ToUInt32(partsOfLine[1]),
         Date = Convert.ToDateTime(partsOfLine[2], cultureInfo),
         Amount = Convert.ToDecimal(partsOfLine[3], cultureInfo)
     };
     if (partsOfLine[4] == "S")
     {
         donation.Amount = -donation.Amount;
     }
     donation.Donor = partsOfLine[6];
     return donation;
 }
コード例 #21
0
 private bool ApplyRegexReplacements(int index, Donation donation)
 {
     if (ReplacementInfo.ContainsKey(index))
     {
         foreach (var pattern in ReplacementInfo[index].Keys)
         {
             donation.Donor = Regex.Replace(donation.Donor, pattern,
                 GetReplacement(index, pattern).Donor);
         }
     }
     return !string.IsNullOrEmpty(donation.Donor);
 }
コード例 #22
0
 protected virtual Donation EndDonation(Donation donation)
 {
     if (donation != null)
         Replacements.ApplyReplacements(donation);
     return donation;
 }
コード例 #23
0
        public void Regex_MultiplePatterns()
        {
            MyReplacementManager.CreateReplacementFile(@"
            [Regex]
            Pattern=ie
            Replace=ei
            Pattern=""Umb\. von ""
            Replace=
            Pattern=Frieder
            Replace=Hugo
            Pattern=r
            Replace=x");
            var donation = new Donation(0, DateTime.Now, "Umb. von Frieder Friederich", 0);

            MyReplacementManager.Instance.ApplyReplacements(donation);

            Assert.AreEqual("Fxeidex Fxeidexich", donation.Donor);
        }
コード例 #24
0
 private DonationInfo GetDonationInfo(Donation donation)
 {
     return new DonationInfo(donation.Date, donation.DonorNo);
 }
コード例 #25
0
 public void BookingIdFromDate()
 {
     var donation = new Donation(10, new DateTime(2011, 01, 01), "Markus Mustermann", 4711);
     Assert.AreEqual("20110101047111", donation.BookingId);
 }