Beispiel #1
0
        public void Test_GetBusinessObjectForProp_ID_WithDatabase()
        {
            ClassDef.ClassDefs.Clear();
            TestUsingDatabase.SetupDBDataAccessor();

            BOWithIntID.DeleteAllBOWithIntID();
            IClassDef        autoIncClassDef = BOWithIntID.LoadClassDefWithIntID();
            IBusinessObject  businessObject  = GetBusinessObjectStub();
            BOPropLookupList boProp          = (BOPropLookupList)businessObject.Props[_propDef_int.PropertyName];
            BOWithIntID      bo1             = new BOWithIntID {
                TestField = "PropValue", IntID = 55
            };

            object expectedID = bo1.IntID;

            bo1.Save();
            //---------------Assert Precondition----------------
            Assert.AreEqual(typeof(int), _propDef_int.PropertyType);
            Assert.IsNull(boProp.Value);
            Assert.IsFalse(bo1.Status.IsNew);
            Assert.IsNotNull(bo1.IntID);
            //---------------Execute Test ----------------------
            boProp.Value = expectedID;
            IBusinessObject objectForProp = boProp.GetBusinessObjectForProp(autoIncClassDef);

            //---------------Test Result -----------------------
            Assert.IsNotNull(objectForProp);
        }
Beispiel #2
0
 public void Setup()
 {
     ClassDef.ClassDefs.Clear();
     BOWithIntID.LoadClassDefWithIntID();
     FixtureEnvironment.SetupInMemoryDataAccessor();
     FixtureEnvironment.SetupNewIsolatedBusinessObjectManager();
 }
Beispiel #3
0
        public void TestMutableCompositeKeyObject_TwoObjectsWithSameFieldNameAndValueAsPrimaryKey()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            BOWithIntID_DifferentType.LoadClassDefWithIntID_CompositeKey();
            BOWithIntID.LoadClassDefWithIntID_WithCompositeKey();
            DataStoreInMemory dataStore = new DataStoreInMemory();

            BORegistry.DataAccessor = new DataAccessorInMemory(dataStore);
            new Car();
            BOWithIntID boWithIntID = new BOWithIntID {
                IntID = TestUtil.GetRandomInt()
            };

            boWithIntID.Save();
            BOWithIntID_DifferentType intID_DifferentType = new BOWithIntID_DifferentType();

            intID_DifferentType.IntID = boWithIntID.IntID;
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            intID_DifferentType.Save();
            //---------------Test Result -----------------------
            Assert.AreEqual(2, dataStore.Count);

            Assert.IsTrue(dataStore.AllObjects.ContainsKey(boWithIntID.ID.ObjectID));
            Assert.IsTrue(dataStore.AllObjects.ContainsKey(intID_DifferentType.ID.ObjectID));

            IBusinessObject returnedBOWitID          = dataStore.AllObjects[boWithIntID.ID.ObjectID];
            IBusinessObject returnedBOWitID_diffType = dataStore.AllObjects[intID_DifferentType.ID.ObjectID];

            Assert.AreSame(boWithIntID, returnedBOWitID);
            Assert.AreSame(intID_DifferentType, returnedBOWitID_diffType);
        }
Beispiel #4
0
        public void Test_MutableKeyObject_TwoObjectsWithSameFieldNameAndValueAsPrimaryKey()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            BOWithIntID_DifferentType.LoadClassDefWithIntID();
            BOWithIntID.LoadClassDefWithIntID();
            DataStoreInMemory dataStore = new DataStoreInMemory();

            BORegistry.DataAccessor = new DataAccessorInMemory(dataStore);
            new Car();
            BOWithIntID boWithIntID = new BOWithIntID();

            boWithIntID.IntID = TestUtil.GetRandomInt();
            boWithIntID.Save();
            BOWithIntID_DifferentType intID_DifferentType = new BOWithIntID_DifferentType();

            intID_DifferentType.IntID = TestUtil.GetRandomInt();
            intID_DifferentType.Save();
            //---------------Assert Precondition----------------
            Assert.AreEqual(2, dataStore.Count);
            //---------------Execute Test ----------------------
//            dataStore.Add(intID_DifferentType);
//            // in the save process the ID is updated to the persisted field values, so the hash of the ID changes
//            // this is why the object is removed and re-added to the BusinessObjectManager (to ensure the dictionary
//            // of objects is hashed on the correct, updated value.
//            intID_DifferentType.Save();
            IBusinessObject returnedBOWitID          = dataStore.AllObjects[boWithIntID.ID.ObjectID];
            IBusinessObject returnedBOWitID_diffType = dataStore.AllObjects[intID_DifferentType.ID.ObjectID];

            //---------------Test Result -----------------------
            Assert.AreSame(boWithIntID, returnedBOWitID);
            Assert.AreSame(intID_DifferentType, returnedBOWitID_diffType);
        }
Beispiel #5
0
        public void TestPropertyValueToDisplay_BusinessObjectLookupList_NotInList()
        {
            IBusinessObject businessObject = GetBusinessObjectStub();
            BOProp          boProp         = (BOProp)businessObject.Props[_propDef_int.PropertyName];
            BOWithIntID     bo1            = new BOWithIntID {
                TestField = "PropValue"
            };
            string expectedPropValueToDisplay = bo1.ToString();

            bo1.IntID = 55;
            object expctedID = bo1.IntID;

            bo1.Save();
            //---------------Assert Precondition----------------
            Assert.AreEqual(typeof(int), _propDef_int.PropertyType);
            Assert.IsNull(boProp.Value);
            Assert.IsFalse(bo1.Status.IsNew);
            Assert.IsNotNull(bo1.IntID);
            //---------------Execute Test ----------------------
            boProp.Value = expctedID;
            //---------------Test Result -----------------------
            Assert.IsNotNull(boProp.Value);
            Assert.AreEqual(expctedID, boProp.Value);
            Assert.AreEqual(expectedPropValueToDisplay, boProp.PropertyValueToDisplay);
        }
Beispiel #6
0
        public static ClassDef LoadClassDefWith_SingleTableInherit()
        {
            ClassDef  itsClassDef          = CreateClassDef();
            IClassDef classDef_BOWithIntID = BOWithIntID.LoadClassDefWithIntID_DiscriminatorField();

            itsClassDef.SuperClassDef = new SuperClassDef(classDef_BOWithIntID, ORMapping.SingleTableInheritance)
            {
                Discriminator = "Type_field"
            };
            itsClassDef.TableName = "bowithintid";
            ClassDef.ClassDefs.Add(itsClassDef);
            return(itsClassDef);
        }
        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();
            BOWithIntID.LoadClassDefWithIntID();
            _propDef_int = new PropDef("PropName", typeof (int), PropReadWriteRule.ReadWrite, null);
            _validBusinessObject = new BOWithIntID {TestField = _validLookupValue};
            _validIntID = 3;
            _validBusinessObject.IntID = _validIntID;
            _collection_IntId = new BusinessObjectCollection<BOWithIntID> {_validBusinessObject};

            _propDef_int.LookupList = new BusinessObjectLookupListStub(typeof (BOWithIntID), _collection_IntId);
        }
Beispiel #8
0
        public void Test_GetBusinessObject_NewBusinessObject_NotInList_NoClassDefOverloadedMethod()
        {
            //Check Validation of lookup list does not make invalid
            ClassDef.ClassDefs.Clear();
            BOWithIntID.LoadClassDefWithIntID();
            BOPropLookupList boProp             = new BOPropLookupList(_propDef_int);
            BOWithIntID      unSavedBoWithIntID = new BOWithIntID {
                IntID = TestUtil.GetRandomInt(), TestField = TestUtil.GetRandomString()
            };

            boProp.Value = unSavedBoWithIntID;
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            IBusinessObject returnedBusinessObject = boProp.GetBusinessObjectForProp();

            //---------------Test Result -----------------------
            Assert.AreSame(unSavedBoWithIntID, returnedBusinessObject);
        }
Beispiel #9
0
        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();
            BOWithIntID.LoadClassDefWithIntID();
            _propDef_int         = new PropDef("PropName", typeof(int), PropReadWriteRule.ReadWrite, null);
            _validBusinessObject = new BOWithIntID {
                TestField = _validLookupValue
            };
            _validIntID = 3;
            _validBusinessObject.IntID = _validIntID;
            _collection_IntId          = new BusinessObjectCollection <BOWithIntID> {
                _validBusinessObject
            };

            _propDef_int.LookupList = new BusinessObjectLookupListStub(typeof(BOWithIntID), _collection_IntId);
        }
Beispiel #10
0
        public void Test_CreateWithValue_ClassDef()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            int         value           = TestUtil.GetRandomInt();
            IClassDef   autoIncClassDef = BOWithIntID.LoadClassDefWithIntID();
            BOWithIntID bo = new BOWithIntID {
                TestField = "PropValue", IntID = value
            };
            object expectedID = bo.ID;

            //---------------Execute Test ----------------------
            BOPrimaryKey key = BOPrimaryKey.CreateWithValue((ClassDef)autoIncClassDef, value);

            //---------------Test Result -----------------------

            Assert.AreEqual(expectedID.ToString(), key.ToString());
            //---------------Tear Down -------------------------
        }
Beispiel #11
0
        public void Test_SetValue_NewBusinessObject_NotInList()
        {
            //Assert.Fail("Not yet implemented");
            //Check Validation of lookup list does not make invalid

            BOProp      boProp           = new BOPropLookupList(_propDef_int);
            BOWithIntID savedBoWithIntID = new BOWithIntID();

            savedBoWithIntID.IntID     = TestUtil.GetRandomInt();
            savedBoWithIntID.TestField = TestUtil.GetRandomString();
            //---------------Assert Precondition----------------
            Assert.AreEqual(typeof(int), _propDef_int.PropertyType);
            //---------------Execute Test ----------------------
            boProp.Value = savedBoWithIntID;
            //---------------Test Result -----------------------
            Assert.AreEqual(savedBoWithIntID.ID.GetAsValue(), boProp.Value);
            Assert.AreEqual(savedBoWithIntID.TestField, boProp.PropertyValueToDisplay);
            Assert.AreEqual("", boProp.IsValidMessage);
            Assert.IsTrue(boProp.IsValid);
        }
Beispiel #12
0
        public void Test_GetBusinessObject_SavedBusinessObject_NotInList()
        {
            //Assert.Fail("Not yet implemented");
            //Check Validation of lookup list does not make invalid
            ClassDef.ClassDefs.Clear();
            IClassDef        classDefWithIntID  = BOWithIntID.LoadClassDefWithIntID();
            BOPropLookupList boProp             = new BOPropLookupList(_propDef_int);
            BOWithIntID      unSavedBoWithIntID = new BOWithIntID {
                IntID = TestUtil.GetRandomInt(), TestField = TestUtil.GetRandomString()
            };

            unSavedBoWithIntID.Save();
            FixtureEnvironment.ClearBusinessObjectManager();
            boProp.Value = unSavedBoWithIntID;
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            IBusinessObject returnedBusinessObject = boProp.GetBusinessObjectForProp(classDefWithIntID);

            //---------------Test Result -----------------------
            Assert.AreSame(unSavedBoWithIntID, returnedBusinessObject);
        }
Beispiel #13
0
        public void Test_InMemoryLoader_LoadWithIntID()
        {
            ClassDef.ClassDefs.Clear();
            IClassDef   autoIncClassDef = BOWithIntID.LoadClassDefWithIntID();
            BOWithIntID bo1             = new BOWithIntID {
                TestField = "PropValue", IntID = 55
            };

            bo1.Save();
            IPrimaryKey id = bo1.ID;

            //---------------Assert Precondition----------------
            Assert.IsFalse(bo1.Status.IsNew);
            Assert.IsNotNull(bo1.IntID);
            //---------------Execute Test ----------------------
            BOWithIntID returnedBO = (BOWithIntID)BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject
                                         (autoIncClassDef, id);

            //---------------Test Result -----------------------
            Assert.IsNotNull(returnedBO);
        }
 public void Test_ChangeObject_NonObjectIdDoesNot_ChangeKeyInObjectManager()
 {
     //---------------Set up test pack-------------------
     var boMan = BusinessObjectManager.Instance;
     boMan.ClearLoadedObjects();
     BOWithIntID.LoadClassDefWithIntID();
     var boWithIntID = new BOWithIntID();
     //---------------Assert Precondition----------------
     Assert.AreEqual(1, boMan.Count);
     Assert.IsTrue(boMan.Contains(boWithIntID));
     var objectID = boWithIntID.ID.ObjectID;
     Assert.IsTrue(boMan.Contains(objectID));
     //---------------Execute Test ----------------------
     boWithIntID.IntID = 2;
     //---------------Test Result -----------------------
     Assert.AreEqual(1, boMan.Count);
     Assert.IsTrue(boMan.Contains(boWithIntID));
     Assert.IsTrue(boMan.Contains(objectID));
     Assert.IsTrue(boMan.Contains(boWithIntID.ID.ObjectID));
 }
        public void Test_NewObject_ObjectManagerUpdated_WhenIdChangedOnce()
        {
            //--------------- Set up test pack ------------------
            FixtureEnvironment.ClearBusinessObjectManager();
            BOWithIntID.LoadClassDefWithIntID();
            var boWithIntID = new BOWithIntID();
            var firstIntID = TestUtil.GetRandomInt();
            var secondIntID = TestUtil.GetRandomInt();
            boWithIntID.IntID = firstIntID;

            //---------------Assert Precondition----------------
            Assert.IsTrue(boWithIntID.Status.IsNew);
            Assert.AreEqual(1, BusinessObjectManager.Instance.Count);
            Assert.AreNotEqual(firstIntID, secondIntID);
            Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
            Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID.ID));
            Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID.ID.ObjectID));
            //---------------Execute Test ----------------------

            boWithIntID.IntID = secondIntID;
            //---------------Test Result -----------------------
            Assert.IsTrue(boWithIntID.Status.IsNew);
            Assert.AreEqual(1, BusinessObjectManager.Instance.Count);
            Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
            Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID.ID.ObjectID));
            Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID.ID));
        }
 public void Test_ObjectRemovedFromObjectManager_Int()
 {
     //--------------- Set up test pack ------------------
     FixtureEnvironment.ClearBusinessObjectManager();
     BOWithIntID.LoadClassDefWithIntID();
     var boWithIntID = new BOWithIntID();
     //--------------- Test Preconditions ----------------
     Assert.AreEqual(1, BusinessObjectManager.Instance.Count);
     Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
     //--------------- Execute Test ----------------------
     boWithIntID = null;
     GC.Collect();
     GC.WaitForPendingFinalizers();
     //--------------- Test Result -----------------------
     Assert.AreEqual(0, BusinessObjectManager.Instance.Count);
 }
 public void Test_SavedObjectInObjectManager_Int()
 {
     //---------------Set up test pack-------------------
     FixtureEnvironment.ClearBusinessObjectManager();
     BOWithIntID.LoadClassDefWithIntID();
     var boWithIntID = new BOWithIntID {IntID = TestUtil.GetRandomInt()};
     //---------------Assert Precondition----------------
     Assert.IsTrue(boWithIntID.Status.IsNew);
     Assert.AreEqual(1, BusinessObjectManager.Instance.Count);
     Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
     //---------------Execute Test ----------------------
     boWithIntID.Save();
     //---------------Test Result -----------------------
     Assert.IsFalse(boWithIntID.Status.IsNew);
     Assert.AreEqual(1, BusinessObjectManager.Instance.Count);
     Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
     Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID.ID));
 }
 public void TestGetBusinessObjectByIDInt_CriteriaString_Untyped()
 {
     //---------------Set up test pack-------------------
     ClassDef.ClassDefs.Clear();
     IClassDef classDef = BOWithIntID.LoadClassDefWithIntID();
     BOWithIntID bo = new BOWithIntID { IntID = TestUtil.GetRandomInt() };
     bo.Save();
     BORegistry.BusinessObjectManager = new BusinessObjectManagerSpy();//Ensures a new BOMan is created and used for each test
 
     //---------------Execute Test ----------------------
     BOWithIntID bo1 = (BOWithIntID) BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject
         (classDef,  string.Format("IntID = {0}", bo.IntID));
     //---------------Test Result -----------------------
     Assert.IsNotNull(bo1);
     BOWithIntID bo2 = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject<BOWithIntID>(bo1.ID);
     Assert.AreSame(bo1, bo2);
 }
 public void Test_TestInheritedObjectCanStillGetObjectOutOfManager_HOwDoesKeyKnowType()
 {
     //---------------Set up test pack-------------------
     var boMan = BusinessObjectManager.Instance;
     BOWithIntID_Child.LoadClassDefWith_SingleTableInherit();
     const int id = 3;
     var boWithIntID = new BOWithIntID {IntID = id};
     boMan.ClearLoadedObjects();
     var boWithIntID_Child = new BOWithIntID_Child {IntID = id};
     boMan.ClearLoadedObjects();
     //---------------Assert Precondition----------------
     Assert.AreEqual(0, boMan.Count);
     //---------------Execute Test ----------------------
     boMan.Add(boWithIntID);
     boMan.Add(boWithIntID_Child);
     //--------------Test Result-------------------------
     Assert.AreEqual(2, boMan.Count);
 }
 public void TestPropertyValueToDisplay_BusinessObjectLookupList_NotInList()
 {
     IBusinessObject businessObject = GetBusinessObjectStub();
     BOProp boProp = (BOProp) businessObject.Props[_propDef_int.PropertyName];
     BOWithIntID bo1 = new BOWithIntID {TestField = "PropValue"};
     string expectedPropValueToDisplay = bo1.ToString();
     bo1.IntID = 55;
     object expctedID = bo1.IntID;
     bo1.Save();
     //---------------Assert Precondition----------------
     Assert.AreEqual(typeof (int), _propDef_int.PropertyType);
     Assert.IsNull(boProp.Value);
     Assert.IsFalse(bo1.Status.IsNew);
     Assert.IsNotNull(bo1.IntID);
     //---------------Execute Test ----------------------
     boProp.Value = expctedID;
     //---------------Test Result -----------------------
     Assert.IsNotNull(boProp.Value);
     Assert.AreEqual(expctedID, boProp.Value);
     Assert.AreEqual(expectedPropValueToDisplay, boProp.PropertyValueToDisplay);
 }
        public void Test_SetValue_NewBusinessObject_NotInList()
        {
            //Assert.Fail("Not yet implemented");
            //Check Validation of lookup list does not make invalid

            BOProp boProp = new BOPropLookupList(_propDef_int);
            BOWithIntID savedBoWithIntID = new BOWithIntID();
            savedBoWithIntID.IntID = TestUtil.GetRandomInt();
            savedBoWithIntID.TestField = TestUtil.GetRandomString();
            //---------------Assert Precondition----------------
            Assert.AreEqual(typeof(int), _propDef_int.PropertyType);
            //---------------Execute Test ----------------------
            boProp.Value = savedBoWithIntID;
            //---------------Test Result -----------------------
            Assert.AreEqual(savedBoWithIntID.ID.GetAsValue(), boProp.Value);
            Assert.AreEqual(savedBoWithIntID.TestField, boProp.PropertyValueToDisplay);
            Assert.AreEqual("", boProp.IsValidMessage);
            Assert.IsTrue(boProp.IsValid);
        }
 public void Test_TwoObjectTypesWithTheSameIDField_EdidtedToHaveTheSamevalue_CanBeAddedToObjectMan()
 {
     //--------------- Set up test pack ------------------
     var boMan = BusinessObjectManager.Instance;
     boMan.ClearLoadedObjects();
     BOWithIntID.LoadClassDefWithIntID();
     BOWithIntID_DifferentType.LoadClassDefWithIntID();
     const int id = 3;
     var boWithIntID = new BOWithIntID {IntID = id};
     var boWithIntID_DifferentType = new BOWithIntID_DifferentType {IntID = 6};
     //--------------- Test Preconditions ----------------
     Assert.AreEqual(2, boMan.Count);
     //--------------- Execute Test ----------------------
     boWithIntID_DifferentType.IntID = boWithIntID.IntID;
     //--------------- Test Result -----------------------
     Assert.AreEqual(2, boMan.Count);
     Assert.IsTrue(boMan.Contains(boWithIntID_DifferentType));
     Assert.IsTrue(boMan.Contains(boWithIntID));
 }
     Test_TwoObjectTypesWithTheSameIDField_EditedToHaveTheSamevalue_CanBeAddedToObjectMan_AsString_LastPersistedValue
     ()
 {
     //--------------- Set up test pack ------------------
     BusinessObjectManagerStub.SetNewBusinessObjectManager();
     var boMan = (BusinessObjectManagerStub) BusinessObjectManagerStub.Instance;
     boMan.ClearLoadedObjects();
     BOWithIntID.LoadClassDefWithIntID();
     BOWithIntID_DifferentType.LoadClassDefWithIntID();
     const int id = 3;
     var boWithIntID = new BOWithIntID {IntID = id};
     var boWithIntID_DifferentType = new BOWithIntID_DifferentType {IntID = 6};
     boWithIntID_DifferentType.IntID = boWithIntID.IntID;
     boMan.ClearLoadedObjects();
     //--------------- Test Preconditions ----------------
     Assert.AreEqual(0, boMan.Count);
     //--------------- Execute Test ----------------------
     boMan.AddBusinessObject(boWithIntID, boWithIntID.ID.ObjectID);
     boMan.AddBusinessObject(boWithIntID_DifferentType, boWithIntID_DifferentType.ID.ObjectID);
     //--------------- Test Result -----------------------
     Assert.AreEqual(2, boMan.Count);
     Assert.IsTrue(boMan.Contains(boWithIntID_DifferentType));
     Assert.IsTrue(boMan.Contains(boWithIntID));
 }
 public void Test_GetBusinessObjectForProp_ID_WithDatabase()
 {
     ClassDef.ClassDefs.Clear();
     DatabaseConnection.CurrentConnection =
         new DatabaseConnectionMySql("MySql.Data", "MySql.Data.MySqlClient.MySqlConnection");
     DatabaseConnection.CurrentConnection.ConnectionString = MyDBConnection.GetDatabaseConfig().GetConnectionString();
     DatabaseConnection.CurrentConnection.GetConnection();
     BORegistry.DataAccessor = new DataAccessorDB();
     BOWithIntID.DeleteAllBOWithIntID();
     IClassDef autoIncClassDef = BOWithIntID.LoadClassDefWithIntID();
     IBusinessObject businessObject = GetBusinessObjectStub();
     BOPropLookupList boProp = (BOPropLookupList) businessObject.Props[_propDef_int.PropertyName];
     BOWithIntID bo1 = new BOWithIntID {TestField = "PropValue", IntID = 55};
     object expectedID = bo1.IntID;
     bo1.Save();
     //---------------Assert Precondition----------------
     Assert.AreEqual(typeof(int), _propDef_int.PropertyType);
     Assert.IsNull(boProp.Value);
     Assert.IsFalse(bo1.Status.IsNew);
     Assert.IsNotNull(bo1.IntID);
     //---------------Execute Test ----------------------
     boProp.Value = expectedID;
     IBusinessObject objectForProp = boProp.GetBusinessObjectForProp(autoIncClassDef);
     //---------------Test Result -----------------------
     Assert.IsNotNull(objectForProp);
 }
        public void Test_FindFirst_Generic_TwoObjectTypesWithTheSameIDField_HaveSameValue()
        {
            //--------------- Set up test pack ------------------
            BusinessObjectManagerStub.SetNewBusinessObjectManager();
            var boMan = (BusinessObjectManagerStub) BusinessObjectManagerStub.Instance;
            boMan.ClearLoadedObjects();
            BOWithIntID.LoadClassDefWithIntID();
            BOWithIntID_DifferentType.LoadClassDefWithIntID();
            const int id = 3;
            var boWithIntID = new BOWithIntID {IntID = id};
            var boWithIntID_DifferentType = new BOWithIntID_DifferentType {IntID = id};
            //--------------- Test Preconditions ----------------
            Assert.AreEqual(2, boMan.Count);
            Assert.IsTrue(boMan.Contains(boWithIntID_DifferentType));
            Assert.IsTrue(boMan.Contains(boWithIntID));
            //--------------- Execute Test ----------------------
            //BusinessObjectCollection<BOWithIntID> found = boMan.FindFirst<BOWithIntID>(new Criteria("IntID", Criteria.ComparisonOp.Equals, id));
            var criteria = new Criteria("IntID", Criteria.ComparisonOp.Equals, id);
            var found = BusinessObjectManager.Instance.FindFirst(criteria, typeof (BOWithIntID));

            //--------------- Test Result -----------------------
            Assert.IsNotNull(found);
            Assert.AreSame(boWithIntID, found);
            Assert.AreEqual(2, boMan.Count);
            Assert.IsTrue(boMan.Contains(boWithIntID_DifferentType));
            Assert.IsTrue(boMan.Contains(boWithIntID));
        }
 public void Test_GetBusinessObject_PersistedBusinessObject_NoClassDefOverloadedMethod()
 {
     //Check Validation of lookup list does not make invalid
     ClassDef.ClassDefs.Clear();
     BOWithIntID.LoadClassDefWithIntID();
     BOPropLookupList boProp = new BOPropLookupList(_propDef_int);
     BOWithIntID savedBoWithIntID = new BOWithIntID {IntID = TestUtil.GetRandomInt(), TestField = TestUtil.GetRandomString()};
     savedBoWithIntID.Save();
     boProp.Value = savedBoWithIntID;
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     IBusinessObject returnedBusinessObject = boProp.GetBusinessObjectForProp();
     //---------------Test Result -----------------------
     Assert.AreSame(savedBoWithIntID, returnedBusinessObject);
 }
        public void Test_CreateWithValue_Type()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            int value = TestUtil.GetRandomInt();
            BOWithIntID.LoadClassDefWithIntID();
            BOWithIntID bo = new BOWithIntID { TestField = "PropValue", IntID = value };
            object expectedID = bo.ID;
            
            //---------------Execute Test ----------------------
            BOPrimaryKey key = BOPrimaryKey.CreateWithValue(typeof(BOWithIntID), value);
            //---------------Test Result -----------------------

            Assert.AreEqual(expectedID.ToString(), key.ToString());
            //---------------Tear Down -------------------------          
        }
        public void Test_MutableKeyObject_TwoObjectsWithSameFieldNameAndValueAsPrimaryKey()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            BOWithIntID_DifferentType.LoadClassDefWithIntID();
            BOWithIntID.LoadClassDefWithIntID();
            DataStoreInMemory dataStore = new DataStoreInMemory();
            BORegistry.DataAccessor = new DataAccessorInMemory(dataStore);
            new Car();
            BOWithIntID boWithIntID = new BOWithIntID();
            boWithIntID.IntID = TestUtil.GetRandomInt();
            boWithIntID.Save();
            BOWithIntID_DifferentType intID_DifferentType = new BOWithIntID_DifferentType();
            intID_DifferentType.IntID = TestUtil.GetRandomInt();
            intID_DifferentType.Save();
            //---------------Assert Precondition----------------
            Assert.AreEqual(2, dataStore.Count);
            //---------------Execute Test ----------------------
//            dataStore.Add(intID_DifferentType);
//            // in the save process the ID is updated to the persisted field values, so the hash of the ID changes
//            // this is why the object is removed and re-added to the BusinessObjectManager (to ensure the dictionary
//            // of objects is hashed on the correct, updated value.
//            intID_DifferentType.Save();
            IBusinessObject returnedBOWitID = dataStore.AllObjects[boWithIntID.ID.ObjectID];
            IBusinessObject returnedBOWitID_diffType = dataStore.AllObjects[intID_DifferentType.ID.ObjectID];

            //---------------Test Result -----------------------
            Assert.AreSame(boWithIntID, returnedBOWitID);
            Assert.AreSame(intID_DifferentType, returnedBOWitID_diffType);
        }
 public void Test_GetBusinessObjectForProp()
 {
     ClassDef.ClassDefs.Clear();
     IClassDef autoIncClassDef = BOWithIntID.LoadClassDefWithIntID();
     IBusinessObject businessObject = GetBusinessObjectStub();
     BOPropLookupList boProp = (BOPropLookupList) businessObject.Props[_propDef_int.PropertyName];
     BOWithIntID bo1 = new BOWithIntID {TestField = "PropValue", IntID = 55};
     object expctedID = bo1.IntID;
     bo1.Save();
     //---------------Assert Precondition----------------
     Assert.AreEqual(typeof(int), _propDef_int.PropertyType);
     Assert.IsNull(boProp.Value);
     Assert.IsFalse(bo1.Status.IsNew);
     Assert.IsNotNull(bo1.IntID);
     //---------------Execute Test ----------------------
     boProp.Value = expctedID;
     IBusinessObject objectForProp = boProp.GetBusinessObjectForProp(autoIncClassDef);
     //---------------Test Result -----------------------
     Assert.IsNotNull(objectForProp);
 }
        public void TestMutableCompositeKeyObject_TwoObjectsWithSameFieldNameAndValueAsPrimaryKey()
        {
            //---------------Set up test pack-------------------
            ClassDef.ClassDefs.Clear();
            BOWithIntID_DifferentType.LoadClassDefWithIntID_CompositeKey();
            BOWithIntID.LoadClassDefWithIntID_WithCompositeKey();
            DataStoreInMemory dataStore = new DataStoreInMemory();
            BORegistry.DataAccessor = new DataAccessorInMemory(dataStore);
            new Car();
            BOWithIntID boWithIntID = new BOWithIntID {IntID = TestUtil.GetRandomInt()};
            boWithIntID.Save();
            BOWithIntID_DifferentType intID_DifferentType = new BOWithIntID_DifferentType();
            intID_DifferentType.IntID = boWithIntID.IntID;
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            intID_DifferentType.Save();
            //---------------Test Result -----------------------
            Assert.AreEqual(2, dataStore.Count);

            Assert.IsTrue(dataStore.AllObjects.ContainsKey(boWithIntID.ID.ObjectID));
            Assert.IsTrue(dataStore.AllObjects.ContainsKey(intID_DifferentType.ID.ObjectID));

            IBusinessObject returnedBOWitID = dataStore.AllObjects[boWithIntID.ID.ObjectID];
            IBusinessObject returnedBOWitID_diffType = dataStore.AllObjects[intID_DifferentType.ID.ObjectID];

            Assert.AreSame(boWithIntID, returnedBOWitID);
            Assert.AreSame(intID_DifferentType, returnedBOWitID_diffType);
        }
 public void Test_InMemoryLoader_LoadWithIntID()
 {
     ClassDef.ClassDefs.Clear();
     IClassDef autoIncClassDef = BOWithIntID.LoadClassDefWithIntID();
     BOWithIntID bo1 = new BOWithIntID { TestField = "PropValue", IntID = 55 };
     bo1.Save();
     IPrimaryKey id = bo1.ID;
     //---------------Assert Precondition----------------
     Assert.IsFalse(bo1.Status.IsNew);
     Assert.IsNotNull(bo1.IntID);
     //---------------Execute Test ----------------------
     BOWithIntID returnedBO = (BOWithIntID) BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject
                                                (autoIncClassDef, id);
     //---------------Test Result -----------------------
     Assert.IsNotNull(returnedBO);
 }
 public void Test_ChangeKey()
 {
     //--------------- Set up test pack ------------------
     FixtureEnvironment.ClearBusinessObjectManager();
     BOWithIntID.LoadClassDefWithIntID();
     var boWithIntID = new BOWithIntID();
     //--------------- Test Preconditions ----------------
     Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
     //--------------- Execute Test ----------------------
     boWithIntID.IntID = TestUtil.GetRandomInt();
     //--------------- Test Result -----------------------
     Assert.IsTrue(BusinessObjectManager.Instance.Contains(boWithIntID));
 }
 public void Test_GetBusinessObject_SavedBusinessObject_NotInList()
 {
     //Assert.Fail("Not yet implemented");
     //Check Validation of lookup list does not make invalid
     ClassDef.ClassDefs.Clear();
     IClassDef classDefWithIntID = BOWithIntID.LoadClassDefWithIntID();
     BOPropLookupList boProp = new BOPropLookupList(_propDef_int);
     BOWithIntID unSavedBoWithIntID = new BOWithIntID {IntID = TestUtil.GetRandomInt(), TestField = TestUtil.GetRandomString()};
     unSavedBoWithIntID.Save();
     FixtureEnvironment.ClearBusinessObjectManager();
     boProp.Value = unSavedBoWithIntID;
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     IBusinessObject returnedBusinessObject = boProp.GetBusinessObjectForProp(classDefWithIntID);
     //---------------Test Result -----------------------
     Assert.AreSame(unSavedBoWithIntID, returnedBusinessObject);
 }
 public void TestGetBusinessObjectByIDInt_ByCriteriaObject()
 {
     //---------------Set up test pack-------------------
     ClassDef.ClassDefs.Clear();
     BOWithIntID.LoadClassDefWithIntID();
     BOWithIntID bo = new BOWithIntID {IntID = TestUtil.GetRandomInt()};
     bo.Save();
     BORegistry.BusinessObjectManager = new BusinessObjectManagerSpy();//Ensures a new BOMan is created and used for each test
 
     Criteria criteria = new Criteria("IntID", Criteria.ComparisonOp.Equals, bo.IntID.ToString());
     //---------------Execute Test ----------------------
     BOWithIntID bo1 = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject<BOWithIntID>(criteria);
     //---------------Test Result -----------------------
     Assert.IsNotNull(bo1); 
     BOWithIntID bo2 = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject<BOWithIntID>(bo1.ID);
     Assert.AreSame(bo1, bo2);
 }