public void Test_Construct_WithValueDef_ShouldSetValueDef()
        {
            //---------------Set up test pack-------------------

            var relDef = GetRelDef <FakeBO2>();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var valueGenerator = new ValidValueGeneratorFromBOList <FakeBO2>(relDef, GetEmptyList <FakeBO2>());

            //---------------Test Result -----------------------
            Assert.AreSame(relDef, valueGenerator.SingleValueDef);
        }
        public void Test_Construct_WithList_ShouldSetTheList()
        {
            //---------------Set up test pack-------------------
            var availableItems = GetList();

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var valueGenerator = new ValidValueGeneratorFromBOList <FakeBO2>(GetRelDef <FakeBO2>(), availableItems);

            //---------------Test Result -----------------------
            Assert.AreSame(availableItems, valueGenerator.AvailableItemsList);
        }
        public void Test_Construct_WithoutAList_LoadListFromDataStore()
        {
            //---------------Set up test pack-------------------
            new FakeBO2().Save();
            new FakeBO2().Save();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------

            var validValueGeneratorFromLoadedList = new ValidValueGeneratorFromBOList <FakeBO2>(GetRelDef <FakeBO2>());
            //---------------Test Result -----------------------
            var availableItemsList = validValueGeneratorFromLoadedList.AvailableItemsList;

            Assert.IsNotNull(availableItemsList);
        }
        public void Test_GenerateValue_WhenSavedItems_ShouldReturnSavedItems()
        {
            //---------------Set up test pack-------------------
            var savedItems     = Create3SavedBOs();
            var valueGenerator = new ValidValueGeneratorFromBOList <FakeBO2>(GetRelDef <FakeBO2>(), null);

            //---------------Assert Precondition----------------
            Assert.AreEqual(3, LoadBOs().Count);
            Assert.AreEqual(3, valueGenerator.AvailableItemsList.Count);
            //---------------Execute Test ----------------------
            var value1 = valueGenerator.GenerateValidValue() as FakeBO2;
            var value2 = valueGenerator.GenerateValidValue() as FakeBO2;

            //---------------Test Result -----------------------
            savedItems.ShouldContain(value2);
            savedItems.ShouldContain(value1);
        }
        public void Test_Construct_WithNullLIst_LoadListFromDataStore()
        {
            //---------------Set up test pack-------------------
            var bo1 = CreateSavedBO();
            var bo2 = CreateSavedBO();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------

            var validValueGeneratorFromLoadedList = new ValidValueGeneratorFromBOList <FakeBO2>(GetRelDef <FakeBO2>(), null);
            //---------------Test Result -----------------------
            var availableItemsList = validValueGeneratorFromLoadedList.AvailableItemsList;

            Assert.IsNotNull(availableItemsList);
            Assert.IsTrue(availableItemsList.Contains(bo1));
            Assert.IsTrue(availableItemsList.Contains(bo2));
        }
        public void Test_GenerateValue_WhenUseDifferentValueDefs_ShouldNotGenerateSequentialValues_FixBug1267()
        {
            //---------------Set up test pack-------------------
            var fakeBo2s        = GetList();
            var relDef1         = GetRelDef <FakeBO2>();
            var relDef2         = GetRelDef <FakeBO2>();
            var valueGenerator1 = new ValidValueGeneratorFromBOList <FakeBO2>(relDef1, fakeBo2s);
            var valueGenerator2 = new ValidValueGeneratorFromBOList <FakeBO2>(relDef2, fakeBo2s);

            //---------------Assert Precondition----------------
            Assert.AreNotSame(valueGenerator1.SingleValueDef, valueGenerator2.SingleValueDef);
            //---------------Execute Test ----------------------
            var valueFromGenerator1 = valueGenerator1.GenerateValidValue();
            var valueFromGenerator2 = valueGenerator2.GenerateValidValue();

            //---------------Test Result -----------------------
            Assert.AreEqual(valueFromGenerator1, valueFromGenerator2, "Should both return the first value since generating for different prop defs");
        }
        public void Test_GenerateValue_WhenUseDifferentGeneratorInstances_ButSameValueDef_ShouldGenerateDifferentValues()
        {
            //---------------Set up test pack-------------------
            var relDef = GetRelDef <FakeBO2>();

            Create3SavedBOs();
            var valueGenerator1 = new ValidValueGeneratorFromBOList <FakeBO2>(relDef, null);
            var valueGenerator2 = new ValidValueGeneratorFromBOList <FakeBO2>(relDef, null);

            //---------------Assert Precondition----------------
            Assert.AreSame(relDef, valueGenerator1.SingleValueDef);
            Assert.AreSame(relDef, valueGenerator1.SingleValueDef);
            Assert.AreNotSame(valueGenerator1, valueGenerator2);
            //---------------Execute Test ----------------------
            var valueFromGenerator1 = valueGenerator1.GenerateValidValue();
            var valueFromGenerator2 = valueGenerator2.GenerateValidValue();

            //---------------Test Result -----------------------
            Assert.AreNotEqual(valueFromGenerator2, valueFromGenerator1);
        }