public void ProteinDictionary_CreateFromExisting_VerifyDictionaryContents_Test()
        {
            // Arrange
            var dictionary = new ProteinDictionary();

            // add proteins so we have something that already exists
            dictionary.Add(1, CreateValidProtein(1));
            dictionary.Add(2, CreateValidProtein(2));
            dictionary.Add(3, CreateValidProtein(3));
            // build the collection of proteins to load
            var values  = new List <Protein>();
            var protein = CreateValidProtein(2);

            protein.MaximumDays = 3;
            protein.KFactor     = 26.4;
            values.Add(protein);
            values.Add(CreateValidProtein(3));
            // Act
            dictionary = ProteinDictionary.CreateFromExisting(dictionary, values);
            // Assert
            Assert.AreEqual(3, dictionary.Count);
            // check project 1
            Assert.AreEqual(1, dictionary[1].ProjectNumber);
            // check project 2
            Assert.AreEqual(2, dictionary[2].ProjectNumber);
            Assert.AreEqual(3, dictionary[2].MaximumDays);
            Assert.AreEqual(26.4, dictionary[2].KFactor);
            // check project 3
            Assert.AreEqual(3, dictionary[3].ProjectNumber);
        }
        public void ProteinDictionary_CreateFromExisting_VerifyChanges_Test()
        {
            // Arrange
            var dictionary = new ProteinDictionary();

            // add proteins so we have something that already exists
            dictionary.Add(1, CreateValidProtein(1));
            dictionary.Add(2, CreateValidProtein(2));
            dictionary.Add(3, CreateValidProtein(3));
            // build the collection of proteins to load
            var values  = new List <Protein>();
            var protein = CreateValidProtein(1);

            protein.Credit = 100;
            values.Add(protein);
            protein             = CreateValidProtein(2);
            protein.MaximumDays = 3;
            protein.KFactor     = 26.4;
            values.Add(protein);
            values.Add(CreateValidProtein(3));
            values.Add(CreateValidProtein(4));
            // Act
            dictionary = ProteinDictionary.CreateFromExisting(dictionary, values);
            var results = dictionary.Changes.ToList();

            // Assert
            Assert.AreEqual(4, results.Count);
            // check index 0
            Assert.AreEqual(1, results[0].ProjectNumber);
            Assert.AreEqual(ProteinDictionaryChangeResult.Changed, results[0].Result);
            var changes = results[0].Changes.ToList();

            Assert.AreEqual(1, changes.Count);
            Assert.AreEqual("Credit", changes[0].PropertyName);
            Assert.AreEqual("1", changes[0].Previous);
            Assert.AreEqual("100", changes[0].Current);
            // check index 1
            Assert.AreEqual(2, results[1].ProjectNumber);
            Assert.AreEqual(ProteinDictionaryChangeResult.Changed, results[1].Result);
            changes = results[1].Changes.ToList();
            Assert.AreEqual(2, changes.Count);
            Assert.AreEqual("MaximumDays", changes[0].PropertyName);
            Assert.AreEqual("1", changes[0].Previous);
            Assert.AreEqual("3", changes[0].Current);
            Assert.AreEqual("KFactor", changes[1].PropertyName);
            Assert.AreEqual("0", changes[1].Previous);
            Assert.AreEqual("26.4", changes[1].Current);
            // check index 2
            Assert.AreEqual(3, results[2].ProjectNumber);
            Assert.AreEqual(ProteinDictionaryChangeResult.NoChange, results[2].Result);
            Assert.IsNull(results[2].Changes);
            // check index 3
            Assert.AreEqual(4, results[3].ProjectNumber);
            Assert.AreEqual(ProteinDictionaryChangeResult.Added, results[3].Result);
            Assert.IsNull(results[3].Changes);
        }
 public void ProteinDictionary_CreateFromExisting_ThrowsWhenProteinsIsNull_Test()
 {
     Assert.Throws <ArgumentNullException>(() => ProteinDictionary.CreateFromExisting(new ProteinDictionary(), null));
 }