public void Test_Success_WhenAddingObjectsOfDifferentTypesWithSameDataAccessors() { //---------------Set up test pack------------------- IDataAccessor defaultDataAccessor = new DataAccessorInMemory(); DataStoreInMemory dataStore1 = new DataStoreInMemory(); DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1); MyBO.LoadDefaultClassDef(); MyRelatedBo.LoadClassDef(); MyBO bo1 = new MyBO(); MyRelatedBo bo2 = new MyRelatedBo(); Dictionary <Type, IDataAccessor> dataAccessors = new Dictionary <Type, IDataAccessor>(); dataAccessors.Add(typeof(MyBO), dataAccessorInMemory1); dataAccessors.Add(typeof(MyRelatedBo), dataAccessorInMemory1); //---------------Execute Test ---------------------- ITransactionCommitter transactionCommitter1 = new TransactionCommitterMultiSource(defaultDataAccessor, dataAccessors); transactionCommitter1.AddBusinessObject(bo1); transactionCommitter1.AddBusinessObject(bo2); transactionCommitter1.CommitTransaction(); //---------------Test Result ----------------------- Assert.IsNotNull(dataStore1.Find <MyBO>(bo1.ID)); Assert.IsNotNull(dataStore1.Find <MyRelatedBo>(bo2.ID)); //---------------Tear down ------------------------- }
public void Test_ClearDeadThreads() { //---------------Set up test pack------------------- var dataAccessorMain = new DataAccessorInMemory(); var dataAccessor = new DataAccessorThreadSplitter(dataAccessorMain); var expectedDataAccessorForThread = new DataAccessorInMemory(); var thread = new Thread(() => { dataAccessor.AddDataAccessorForThread(expectedDataAccessorForThread); Thread.Sleep(100); }); thread.Start(); //---------------Assert preconditions--------------- Assert.AreSame(expectedDataAccessorForThread, dataAccessor.GetDataAccessorForThread(thread)); //---------------Execute Test ---------------------- thread.Join(); dataAccessor.ClearDeadThreads(); //---------------Test Result ----------------------- try { Assert.IsNull(dataAccessor.GetDataAccessorForThread(thread)); Assert.Fail("An exception should be thrown"); } catch (HabaneroDeveloperException ex) { StringAssert.Contains("Data accessor for thread does not exist", ex.Message); } }
public void Test_SavingToMultipleSources() { //---------------Set up test pack------------------- DataStoreInMemory dataStore1 = new DataStoreInMemory(); DataStoreInMemory dataStore2 = new DataStoreInMemory(); DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1); DataAccessorInMemory dataAccessorInMemory2 = new DataAccessorInMemory(dataStore2); DataAccessorMultiSource dataAccessor = new DataAccessorMultiSource(new DataAccessorInMemory()); dataAccessor.AddDataAccessor(typeof(MyBO), dataAccessorInMemory1); dataAccessor.AddDataAccessor(typeof(MyRelatedBo), dataAccessorInMemory2); MyBO.LoadDefaultClassDef(); MyRelatedBo.LoadClassDef(); var bo1 = new MyBO(); var bo2 = new MyRelatedBo(); //---------------Execute Test ---------------------- ITransactionCommitter committer1 = dataAccessor.CreateTransactionCommitter(); committer1.AddBusinessObject(bo1); committer1.CommitTransaction(); ITransactionCommitter committer2 = dataAccessor.CreateTransactionCommitter(); committer2.AddBusinessObject(bo2); committer2.CommitTransaction(); //---------------Test Result ----------------------- Assert.IsNotNull(dataStore1.Find <MyBO>(bo1.ID)); Assert.IsNotNull(dataStore2.Find <MyRelatedBo>(bo2.ID)); //---------------Tear down ------------------------- }
public void Test_StandardConstructor_CreatesADataStore() { //---------------Set up test pack------------------- //---------------Execute Test ---------------------- DataAccessorInMemory dataAccessorInMemory = new DataAccessorInMemory(); //---------------Test Result ----------------------- Assert.IsNotNull(dataAccessorInMemory.DataStoreInMemory); }
public void TestFixtureSetup() { //Code that is executed before any test is run in this class. If multiple tests // are executed then it will still only be called once. ClassDef.ClassDefs.Clear(); _dataStore = new DataStoreInMemory(); _dataAccessor = new DataAccessorInMemory(_dataStore); BORegistry.DataAccessor = _dataAccessor; ContactPersonTestBO.LoadDefaultClassDef(); }
public void Test_Constructor_UsesPassedInDataStore() { //---------------Set up test pack------------------- DataStoreInMemory dataStore = MockRepository.GenerateMock <DataStoreInMemory>(); //---------------Execute Test ---------------------- DataAccessorInMemory dataAccessorInMemory = new DataAccessorInMemory(dataStore); //---------------Test Result ----------------------- Assert.AreSame(dataStore, dataAccessorInMemory.DataStoreInMemory); }
public void Test_UsesBusinessObjectLoaderInMemory() { //---------------Set up test pack------------------- //---------------Execute Test ---------------------- DataAccessorInMemory dataAccessorInMemory = new DataAccessorInMemory(); //---------------Test Result ----------------------- Assert.IsInstanceOf(typeof(BusinessObjectLoaderInMemory), dataAccessorInMemory.BusinessObjectLoader); }
public void TestDataAccessorInMemoryConstructor() { //---------------Set up test pack------------------- //---------------Execute Test ---------------------- IDataAccessor dataAccessor = new DataAccessorInMemory(); //---------------Test Result ----------------------- Assert.IsInstanceOf(typeof(BusinessObjectLoaderInMemory), dataAccessor.BusinessObjectLoader); //---------------Tear Down ------------------------- }
public void TestDataAccessorInMemory_CreateTransactionCommitter() { //---------------Set up test pack------------------- //---------------Execute Test ---------------------- IDataAccessor dataAccessor = new DataAccessorInMemory(); //---------------Test Result ----------------------- Assert.IsInstanceOf(typeof(TransactionCommitterInMemory), dataAccessor.CreateTransactionCommitter()); //---------------Tear Down ------------------------- }
public void SetupTest() { //Runs every time that any testmethod is executed //base.SetupTest(); ClassDef.ClassDefs.Clear(); _dataStore = new DataStoreInMemory(); _dataAccessor = new DataAccessorInMemory(_dataStore); BORegistry.DataAccessor = _dataAccessor; ContactPersonTestBO.LoadClassDefOrganisationTestBORelationship_MultipleReverse(); OrganisationTestBO.LoadDefaultClassDef(); }
public void Test_DefaultDataAccessor_OneObject() { //---------------Set up test pack------------------- DataStoreInMemory dataStore = new DataStoreInMemory(); IDataAccessor defaultDataAccessor = new DataAccessorInMemory(dataStore); MyBO.LoadDefaultClassDef(); MyBO bo = new MyBO(); //---------------Execute Test ---------------------- ITransactionCommitter transactionCommitter = new TransactionCommitterMultiSource(defaultDataAccessor, new Dictionary <Type, IDataAccessor>()); transactionCommitter.AddBusinessObject(bo); transactionCommitter.CommitTransaction(); //---------------Test Result ----------------------- Assert.IsNotNull(dataStore.Find <MyBO>(bo.ID)); //---------------Tear down ------------------------- }
public void Test_ShouldThrowError_WhenAddingObjectsOfDifferentTypesWithDifferentDataAccessors() { //---------------Set up test pack------------------- IDataAccessor defaultDataAccessor = new DataAccessorInMemory(); DataStoreInMemory dataStore1 = new DataStoreInMemory(); DataStoreInMemory dataStore2 = new DataStoreInMemory(); DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1); DataAccessorInMemory dataAccessorInMemory2 = new DataAccessorInMemory(dataStore2); MyBO.LoadDefaultClassDef(); MyRelatedBo.LoadClassDef(); MyBO bo1 = new MyBO(); MyRelatedBo bo2 = new MyRelatedBo(); Dictionary <Type, IDataAccessor> dataAccessors = new Dictionary <Type, IDataAccessor>(); dataAccessors.Add(typeof(MyBO), dataAccessorInMemory1); dataAccessors.Add(typeof(MyRelatedBo), dataAccessorInMemory2); //---------------Execute Test ---------------------- try { ITransactionCommitter transactionCommitter1 = new TransactionCommitterMultiSource(defaultDataAccessor, dataAccessors); transactionCommitter1.AddBusinessObject(bo1); transactionCommitter1.AddBusinessObject(bo2); transactionCommitter1.CommitTransaction(); Assert.Fail("Error should have occurred"); } catch (HabaneroDeveloperException ex) //---------------Test Result ----------------------- { Assert.IsNull(dataStore1.Find <MyBO>(bo1.ID)); Assert.IsNull(dataStore1.Find <MyRelatedBo>(bo2.ID)); Assert.IsNull(dataStore2.Find <MyBO>(bo1.ID)); Assert.IsNull(dataStore2.Find <MyRelatedBo>(bo2.ID)); StringAssert.Contains("MyRelatedBo", ex.DeveloperMessage); StringAssert.Contains("was added to a TransactionCommitterMultiSource which has been set up with a different source to this type", ex.DeveloperMessage); //correct } //---------------Tear down ------------------------- }
public void Test_WithThread() { //---------------Set up test pack------------------- var dataAccessorMain = new DataAccessorInMemory(); var dataAccessor = new DataAccessorThreadSplitter(dataAccessorMain); var expectedDataAccessorForThread = new DataAccessorInMemory(); var thread = new Thread(() => { dataAccessor.AddDataAccessorForThread(expectedDataAccessorForThread); Thread.Sleep(1000); }); thread.Start(); Thread.Sleep(500); //---------------Execute Test ---------------------- var dataAccessorForThread = dataAccessor.GetDataAccessorForThread(thread); //---------------Test Result ----------------------- Assert.AreSame(expectedDataAccessorForThread, dataAccessorForThread); }
public void Test_LoadingFromMultipleSources() { //---------------Set up test pack------------------- DataStoreInMemory dataStore1 = new DataStoreInMemory(); DataStoreInMemory dataStore2 = new DataStoreInMemory(); MyBO.LoadDefaultClassDef(); TransactionCommitterInMemory committer1 = new TransactionCommitterInMemory(dataStore1); var bo1 = new MyBO(); committer1.AddBusinessObject(bo1); committer1.CommitTransaction(); MyRelatedBo.LoadClassDef(); TransactionCommitterInMemory committer2 = new TransactionCommitterInMemory(dataStore2); var bo2 = new MyRelatedBo(); committer2.AddBusinessObject(bo2); committer2.CommitTransaction(); DataAccessorInMemory dataAccessorInMemory1 = new DataAccessorInMemory(dataStore1); DataAccessorInMemory dataAccessorInMemory2 = new DataAccessorInMemory(dataStore2); //---------------Execute Test ---------------------- //---------------Test Result ----------------------- DataAccessorMultiSource dataAccessor = new DataAccessorMultiSource(new DataAccessorInMemory()); dataAccessor.AddDataAccessor(typeof(MyBO), dataAccessorInMemory1); dataAccessor.AddDataAccessor(typeof(MyRelatedBo), dataAccessorInMemory2); var loadedBo1 = dataAccessor.BusinessObjectLoader.GetBusinessObject <MyBO>(bo1.ID); var loadedBo2 = dataAccessor.BusinessObjectLoader.GetBusinessObject <MyRelatedBo>(bo2.ID); //---------------Tear down ------------------------- Assert.AreSame(loadedBo1, bo1); Assert.AreSame(loadedBo2, bo2); }