/// <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);
        }
Esempio n. 3
0
        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)));
            }
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        /// <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);
        }