public static void GetAllSpecialCaseNumberTest(DBReferType referType, TypeId typeId, bool useAdditionalItems) { var instance = new DBItemSettingDescDatabase { DatabaseReferKind = referType, DatabaseDbTypeId = typeId, DatabaseUseAdditionalItemsFlag = useAdditionalItems }; 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); }; List <DatabaseValueCaseNumber> result = null; var errorOccured = false; try { result = instance.GetAllSpecialCaseNumber(); } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーが発生しないこと Assert.IsFalse(errorOccured); // 取得した要素がそれぞれ意図した値であること Assert.AreEqual(result.Count, 3); Assert.AreEqual((int)result[0], referType.Code); Assert.AreEqual((int)result[1], (int)typeId); var flagValue = useAdditionalItems ? 1 : 0; Assert.AreEqual((int)result[2], flagValue); // プロパティ変更通知が発火していないこと Assert.AreEqual(changedPropertyList.Count, 0); Assert.AreEqual(changedArgCaseList.Count, 0); Assert.AreEqual(changedArgCaseCollection.Count, 0); }
/// <summary> /// DB項目設定セット /// </summary> /// <param name="setting">結果格納インスタンス</param> /// <param name="specialSettingTypes">特殊指定種別リスト</param> /// <param name="itemNames">項目名リスト</param> /// <param name="itemMemos">項目メモリスト</param> /// <param name="descriptionLists">特殊指定選択肢文字列リスト</param> /// <param name="caseNumberLists">特殊指定選択肢数値リスト</param> /// <param name="initValues">初期値リスト</param> /// <exception cref="ArgumentException">ファイルフォーマットが不正の場合</exception> private void SetItemSetting(DBTypeSetting setting, IReadOnlyList <DBItemSpecialSettingType> specialSettingTypes, IReadOnlyList <ItemName> itemNames, IReadOnlyList <ItemMemo> itemMemos, IReadOnlyList <IReadOnlyList <DatabaseValueCaseDescription> > descriptionLists, IReadOnlyList <List <DatabaseValueCaseNumber> > caseNumberLists, IReadOnlyList <DBValueInt> initValues) { // 項目名、項目メモ、文字列パラメータ、数値パラメータ、初期値の長さが一致する必要がある var itemNamesCount = itemNames.Count; var itemMemosCount = itemMemos.Count; var descriptionListsCount = descriptionLists.Count; var caseNumberListsCount = caseNumberLists.Count; var initValuesCount = initValues.Count; if (itemNamesCount != itemMemosCount || itemNamesCount != descriptionListsCount || itemNamesCount != caseNumberListsCount || itemNamesCount != initValuesCount) { throw new ArgumentException( "項目名、項目メモ、文字列パラメータ、数値パラメータ、初期値の要素数が一致しません。(" + $"項目名数:{itemNamesCount}, 項目メモ数:{itemMemosCount}," + $"文字列パラメータ数:{descriptionListsCount}, 数値パラメータ数:{caseNumberListsCount}" + $"初期値数:{initValuesCount})"); } // 特殊指定数が項目数より少ない場合は不正 var specialSettingTypesCount = specialSettingTypes.Count; if (specialSettingTypesCount < itemNamesCount) { throw new ArgumentException( $"特殊指定種別の要素数が不正です。(要素数:{specialSettingTypesCount})"); } var itemSettings = new List <DBItemSetting>(); for (var i = 0; i < itemNamesCount; i++) { var specialSettingDesc = new DBItemSpecialSettingDesc { ItemMemo = itemMemos[i], InitValue = initValues[i] }; var thisDescriptions = descriptionLists[i]; var thisCaseNumbers = caseNumberLists[i]; var thisItemSettingType = specialSettingTypes[i]; try { var caseList = MakeValueCases(thisItemSettingType, thisCaseNumbers, thisDescriptions); specialSettingDesc.ChangeValueType(thisItemSettingType, caseList); if (thisItemSettingType == DBItemSpecialSettingType.ReferDatabase) { specialSettingDesc.DatabaseReferKind = DBReferType.FromCode(thisCaseNumbers[0]); specialSettingDesc.DatabaseDbTypeId = new TypeId(thisCaseNumbers[1]); specialSettingDesc.DatabaseUseAdditionalItemsFlag = thisCaseNumbers[2] == 1; } } catch (Exception ex) { throw new ArgumentException( $"項目{i,2}の特殊指定タイプと特殊指定パラメータが一致しません。" + "詳細はInnerExceptionを確認してください。", ex); } var thisItemName = itemNames[i]; var itemSetting = new DBItemSetting { ItemName = thisItemName, SpecialSettingDesc = specialSettingDesc }; itemSettings.Add(itemSetting); } setting.ItemSettingList.AddRange(itemSettings); }