Exemple #1
0
        public static void UpdateDatabaseSpecialCaseTest(bool useAdditionalItemFlag,
                                                         int caseNumber, string description, bool isError)
        {
            var instance = new DBItemSettingDescDatabase
            {
                DatabaseUseAdditionalItemsFlag = useAdditionalItemFlag
            };
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };
            var changedArgCaseList = new List <string>();

            instance.ArgCaseList.PropertyChanged += (sender, args) => { changedArgCaseList.Add(args.PropertyName); };
            var changedArgCaseCollection = new List <NotifyCollectionChangedEventArgs>();

            instance.ArgCaseList.CollectionChanged += (sender, args) => { changedArgCaseCollection.Add(args); };

            var errorOccured = false;

            try
            {
                instance.UpdateDatabaseSpecialCase(caseNumber, description);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること(追加項目仕様フラグによらないこと)
            Assert.AreEqual(errorOccured, isError);

            if (!errorOccured)
            {
                foreach (var specialCase in instance.GetAllSpecialCase())
                {
                    if (specialCase.CaseNumber == caseNumber)
                    {
                        // 指定した引数の文字列が正しく更新されていること
                        Assert.AreEqual((string)specialCase.Description, description);
                    }
                    else
                    {
                        // 指定していない引数の文字列が変化していないこと
                        Assert.AreEqual((string)specialCase.Description, "");
                    }
                }
            }

            // 意図したとおりプロパティ変更通知が発火していること
            Assert.AreEqual(changedPropertyList.Count, 0);
            if (!errorOccured)
            {
                Assert.AreEqual(changedArgCaseList.Count, 1);
                Assert.IsTrue(changedArgCaseList[0].Equals(ListConstant.IndexerName));
                Assert.AreEqual(changedArgCaseCollection.Count, 1);
                Assert.IsTrue(changedArgCaseCollection[0].Action == NotifyCollectionChangedAction.Replace);
                Assert.IsTrue(changedArgCaseCollection[0].OldStartingIndex == caseNumber * -1 - 1);
                Assert.IsTrue(changedArgCaseCollection[0].NewStartingIndex == caseNumber * -1 - 1);
            }
            else
            {
                Assert.AreEqual(changedArgCaseList.Count, 0);
                Assert.AreEqual(changedArgCaseCollection.Count, 0);
            }
        }