/// <summary> /// 選択肢一覧を生成する。 /// </summary> /// <param name="type">特殊指定タイプ</param> /// <param name="numbers">選択肢番号リスト</param> /// <param name="descriptions">選択肢文字列リスト</param> /// <returns>選択肢リスト</returns> /// <exception cref="ArgumentException">選択肢番号リストまたは文字列リストが不正の場合</exception> private IReadOnlyList <DatabaseValueCase> MakeValueCases(DBItemSpecialSettingType type, IReadOnlyList <DatabaseValueCaseNumber> numbers, IReadOnlyList <DatabaseValueCaseDescription> descriptions) { if (type == DBItemSpecialSettingType.Normal) { return(MakeValueCasesNormal(numbers, descriptions)); } if (type == DBItemSpecialSettingType.LoadFile) { return(MakeValueCasesLoadFile(numbers, descriptions)); } if (type == DBItemSpecialSettingType.ReferDatabase) { return(MakeValueCasesReferDatabase(descriptions)); } if (type == DBItemSpecialSettingType.Manual) { return(MakeValueCasesManual(numbers, descriptions)); } // 通常ここには来ない throw new InvalidOperationException( "定義されていない特殊指定タイプです。"); }
/// <summary> /// 項目特殊指定 /// </summary> /// <param name="status">読み込み経過状態</param> /// <returns>項目項目特殊指定リスト</returns> private List <DBItemSpecialSettingType> ReadItemSpecialSettingType(FileReadStatus status) { var length = status.ReadInt(); status.IncreaseIntOffset(); Logger.Debug(FileIOMessage.SuccessRead(typeof(DBTypeSettingReader), "項目特殊指定数", length)); var result = new List <DBItemSpecialSettingType>(); for (var i = 0; i < length; i++) { var value = status.ReadByte(); status.IncreaseByteOffset(); var type = DBItemSpecialSettingType.FromByte(value); Logger.Debug(FileIOMessage.SuccessRead(typeof(DBTypeSettingReader), $" 項目特殊指定{i,2}", type)); result.Add(type); } return(result); }
public static void ItemTypeTest(DBItemSpecialSettingType settingType, DBItemType type, bool isSetError) { var specialDesc = new DBItemSpecialSettingDesc(); specialDesc.ChangeValueType(settingType, null); var instance = new DBItemSetting { SpecialSettingDesc = specialDesc }; var changedPropertyList = new List <string>(); instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); }; var errorOccured = false; try { instance.ItemType = type; } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーフラグが一致すること Assert.AreEqual(errorOccured, isSetError); errorOccured = false; try { var _ = instance.SpecialSettingDesc; } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーが発生しないこと Assert.IsFalse(errorOccured); // 意図したとおりプロパティ変更通知が発火していること if (isSetError) { Assert.AreEqual(changedPropertyList.Count, 0); } else { Assert.AreEqual(changedPropertyList.Count, 1); Assert.IsTrue(changedPropertyList[0].Equals(nameof(DBItemSetting.ItemType))); } }
public static void CreateTest(DBItemSpecialSettingType type, int caseListLength, bool isError) { var caseList = MakeDBValueCaseList(caseListLength); IDBItemSettingDesc result = null; var errorOccured = false; try { result = DBItemSettingDescFactory.Create(type, caseList); } catch (Exception ex) { logger.Exception(ex); errorOccured = true; } // エラーフラグが一致すること Assert.AreEqual(errorOccured, isError); if (errorOccured) { return; } // 設定種別に応じた型が取得できていること if (type == DBItemSpecialSettingType.Normal) { Assert.IsTrue(result is DBItemSettingDescNormal); } else if (type == DBItemSpecialSettingType.LoadFile) { Assert.IsTrue(result is DBItemSettingDescLoadFile); } else if (type == DBItemSpecialSettingType.ReferDatabase) { Assert.IsTrue(result is DBItemSettingDescDatabase); } else if (type == DBItemSpecialSettingType.Manual) { Assert.IsTrue(result is DBItemSettingDescManual); } else { Assert.Fail(); } }
/// <summary> /// 項目特殊指定 /// </summary> /// <param name="readStatus">読み込み経過状態</param> /// <returns>項目項目特殊指定リスト</returns> private List <DBItemSpecialSettingType> ReadItemSpecialSettingType(BinaryReadStatus readStatus) { var length = readStatus.ReadInt(); readStatus.IncreaseIntOffset(); var result = new List <DBItemSpecialSettingType>(); for (var i = 0; i < length; i++) { var value = readStatus.ReadByte(); readStatus.IncreaseByteOffset(); var type = DBItemSpecialSettingType.FromByte(value); result.Add(type); } return(result); }