using du=DomainUtil;
using ut=Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using s=System;
using u=Util;
using System.Linq;
namespace GlobalBOTest
{
/// <summary>
///This is a test class for TransactionBuilderTest and is intended
///to contain all TransactionBuilderTest Unit Tests
///</summary>
[ut.TestClass()]
public class TransactionBuilderTest
{
private ut.TestContext testContextInstance;
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public ut.TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region Additional test attributes
//
//You can use the following additional attributes as you write your tests:
//
//Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext)
//{
//}
//
//Use ClassCleanup to run code after all tests in a class have run
//[ClassCleanup()]
//public static void MyClassCleanup()
//{
//}
//
//Use TestInitialize to run code before running each test
//[TestInitialize()]
//public void MyTestInitialize()
//{
//}
//
//Use TestCleanup to run code after each test has run
//[TestCleanup()]
//public void MyTestCleanup()
//{
//}
//
#endregion
/// <summary>
///A test for CreateTransaction
///</summary>
[ut.TestMethod()]
public void CreateTransactionTest()
{
int[] arrParticipantIDs = new int[3] { 1001, 1002, 1003 };
du.ITransaction aTransaction;
du.TransactionNWAllocatedAccntDltUpdate aNWAccntsUpdate;
du.TransactionItemUpdate aItemsUpdate;
aNWAccntsUpdate = new du.TransactionNWAllocatedAccntDltUpdate(arrParticipantIDs);
aItemsUpdate = new du.TransactionItemUpdate(arrParticipantIDs);
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 60, new int[] { 1, 2, 3 });
aItemsUpdate.AddItem("misc", 10001, true, 60, new float[] { 1F, 2F, 3F });
ut.Assert.IsTrue(du.TransactionFactory.GetAmountNWDltsExceedAllocDltsBy(aNWAccntsUpdate, aItemsUpdate) == 0);
aTransaction = du.TransactionFactory.Create(null, null, null, null, "", s.DateTime.MinValue, arrParticipantIDs, aNWAccntsUpdate, aItemsUpdate);
ut.Assert.IsTrue(aTransaction != null);
aNWAccntsUpdate = new du.TransactionNWAllocatedAccntDltUpdate(arrParticipantIDs);
aItemsUpdate = new du.TransactionItemUpdate(arrParticipantIDs);
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 60, new int[] { 1, 2, 3 });
aItemsUpdate.AddItem("misc", 10001, true, 59, new float[] { 1F, 2F, 3F });
ut.Assert.IsTrue(du.TransactionFactory.GetAmountNWDltsExceedAllocDltsBy(aNWAccntsUpdate, aItemsUpdate) == 1);
aNWAccntsUpdate = new du.TransactionNWAllocatedAccntDltUpdate(arrParticipantIDs);
aItemsUpdate = new du.TransactionItemUpdate(arrParticipantIDs);
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 59, new int[] { 1, 2, 3 });
aItemsUpdate.AddItem("misc", 10001, true, 60, new float[] { 1F, 2F, 3F });
ut.Assert.IsTrue(du.TransactionFactory.GetAmountNWDltsExceedAllocDltsBy(aNWAccntsUpdate, aItemsUpdate) == -1);
aNWAccntsUpdate = new du.TransactionNWAllocatedAccntDltUpdate(arrParticipantIDs);
aItemsUpdate = new du.TransactionItemUpdate(arrParticipantIDs);
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 60, new int[] { 1, 2, 3 });
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 20, new int[] { 3, 2, 1 });
aItemsUpdate.AddItem("misc1", 10001, true, 20, new float[] { 1F, 2F, 3F });
aItemsUpdate.AddItem("misc2", 10002, true, 20, new float[] { 0F, 2F, 3F });
aItemsUpdate.AddItem("misc3", 10003, true, 20, new float[] { 1F, .37F, 3F });
aItemsUpdate.AddItem("misc4", 10004, true, 20, new float[] { 1F, 2F, 3F });
ut.Assert.IsTrue(du.TransactionFactory.GetAmountNWDltsExceedAllocDltsBy(aNWAccntsUpdate, aItemsUpdate) == 0);
aTransaction = du.TransactionFactory.Create(null, null, null, null, "", s.DateTime.MinValue, arrParticipantIDs, aNWAccntsUpdate, aItemsUpdate);
ut.Assert.IsTrue(aTransaction != null);
aNWAccntsUpdate = new du.TransactionNWAllocatedAccntDltUpdate(arrParticipantIDs);
aItemsUpdate = new du.TransactionItemUpdate(arrParticipantIDs);
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 60, new int[] { 1, 2, 3 });
aNWAccntsUpdate.AddNWAllocatedAccntDlt(101, false, 6, new int[] { 3, 2, 1 });
aItemsUpdate.AddItem("misc1", 10001, true, 44, new float[] { 1F, 5F, 5F });
aItemsUpdate.AddItem("misc2", 10002, true, 22, new float[] { 5F, 5F, 1F });
ut.Assert.AreEqual(0, du.TransactionFactory.GetAmountNWDltsExceedAllocDltsBy(aNWAccntsUpdate, aItemsUpdate));
aTransaction = du.TransactionFactory.Create(null, null, null, null, "", s.DateTime.MinValue, arrParticipantIDs, aNWAccntsUpdate, aItemsUpdate);
ut.Assert.AreEqual(3, aTransaction.ParticipantCount);
ut.Assert.AreEqual( 2, aTransaction.NWAccntDltCount);
ut.Assert.AreEqual( 2, aTransaction.ItemCount);
ut.Assert.AreEqual(60, aTransaction.GetNWAccntDlt(0).Amount);
ut.Assert.AreEqual( 6, aTransaction.GetNWAccntDlt(1).Amount);
ut.Assert.AreEqual(44, aTransaction.GetItem(0).ParticipantAmounts.Sum());
ut.Assert.AreEqual(22, aTransaction.GetItem(1).ParticipantAmounts.Sum());
// ut.Assert.AreEqual(10, aTransaction.GetNWAllocatedAccntDlt(0).GetParticipantAmount(0));
// ut.Assert.AreEqual(20, aTransaction.GetNWAllocatedAccntDlt(0).GetParticipantAmount(1));
// ut.Assert.AreEqual(30, aTransaction.GetNWAllocatedAccntDlt(0).GetParticipantAmount(2));
// ut.Assert.AreEqual( 3, aTransaction.GetNWAllocatedAccntDlt(1).GetParticipantAmount(0));
// ut.Assert.AreEqual( 2, aTransaction.GetNWAllocatedAccntDlt(1).GetParticipantAmount(1));
// ut.Assert.AreEqual( 1, aTransaction.GetNWAllocatedAccntDlt(1).GetParticipantAmount(2));
ut.Assert.AreEqual( 4, aTransaction.GetItem(0).ParticipantAmounts[0]);
ut.Assert.AreEqual(20, aTransaction.GetItem(0).ParticipantAmounts[1]);
ut.Assert.AreEqual(20, aTransaction.GetItem(0).ParticipantAmounts[2]);
ut.Assert.AreEqual(10, aTransaction.GetItem(1).ParticipantAmounts[0]);
ut.Assert.AreEqual(10, aTransaction.GetItem(1).ParticipantAmounts[1]);
ut.Assert.AreEqual( 2, aTransaction.GetItem(1).ParticipantAmounts[2]);
ut.Assert.AreEqual( 1, aTransaction.GetWashAmount(0));
ut.Assert.AreEqual( 8, aTransaction.GetWashAmount(1));
ut.Assert.AreEqual(-9, aTransaction.GetWashAmount(2));
int i;
i = -1;
foreach (DTO.NWAccntDlt o in aTransaction.NWAccntDlts)
{
i++;
ut.Assert.AreSame(aTransaction.GetNWAccntDlt(i), o);
}
i = -1;
foreach (DTO.Item o in aTransaction.Items)
{
i++;
ut.Assert.AreSame(aTransaction.GetItem(i), o);
}
}
}
}