Ejemplo n.º 1
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)));
            }
        }
Ejemplo n.º 2
0
        public static void ToDBItemSettingTest()
        {
            // テスト用要素
            var itemName           = (ItemName)"testItemName";
            var specialSettingDesc = new DBItemSpecialSettingDesc(DBItemSpecialSettingType.Normal,
                                                                  new[] { new DatabaseValueCase(0, "case") });
            var itemType = DBItemType.String;

            var instance = new DatabaseItemDesc();

            instance.ItemName           = itemName;
            instance.SpecialSettingDesc = specialSettingDesc;
            instance.ItemType           = itemType;
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            DBItemSetting result = null;

            var errorOccured = false;

            try
            {
                result = instance.ToDBItemSetting();
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            var answer = new DBItemSetting
            {
                ItemName           = itemName,
                ItemType           = itemType,
                SpecialSettingDesc = specialSettingDesc
            };

            // 取得した結果が意図した値であること
            Assert.IsTrue(result.Equals(answer));

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
Ejemplo n.º 3
0
        public static void SpecialSettingDescTest(DBItemSpecialSettingDesc desc, bool isError)
        {
            var instance            = new DatabaseItemDesc();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                instance.SpecialSettingDesc = desc;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            if (!errorOccured)
            {
                var setValue = instance.SpecialSettingDesc;

                // セットした値と取得した値が一致すること
                Assert.IsTrue(setValue.Equals(desc));
            }

            // 意図したとおりプロパティ変更通知が発火していること
            if (errorOccured)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 1);
                Assert.IsTrue(changedPropertyList[0].Equals(nameof(DatabaseItemDesc.SpecialSettingDesc)));
            }
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        public static void EqualsTest(string testTypeCode)
        {
            var specialDesc = new DBItemSpecialSettingDesc();

            specialDesc.ChangeValueType(DBItemSpecialSettingType.Normal, null);

            var target = new DBItemSetting
            {
                ItemName           = "ItemName",
                ItemType           = DBItemType.Int,
                SpecialSettingDesc = specialDesc
            };
            var changedPropertyList = new List <string>();

            target.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            DBItemSetting another = null;
            bool          result  = false;

            switch (testTypeCode)
            {
            case "Same":
                another = target;
                result  = true;
                break;

            case "Null":
                // another は null で初期化されているため、何もしない
                break;

            case "Diff_ItemName":
                another = new DBItemSetting
                {
                    ItemName           = "ItemName_Diff",
                    ItemType           = DBItemType.Int,
                    SpecialSettingDesc = specialDesc
                };
                break;

            case "Diff_ItemType":
                another = new DBItemSetting
                {
                    ItemName           = "ItemName",
                    ItemType           = DBItemType.String,
                    SpecialSettingDesc = specialDesc,
                };
                break;

            case "Diff_Desc":
                var anotherSpecialDesc = new DBItemSpecialSettingDesc();
                anotherSpecialDesc.ChangeValueType(DBItemSpecialSettingType.LoadFile, null);
                another = new DBItemSetting
                {
                    ItemName           = "ItemName",
                    ItemType           = DBItemType.Int,
                    SpecialSettingDesc = anotherSpecialDesc
                };
                break;

            default:
                Assert.Fail();
                break;
            }

            // 結果が意図した値と一致すること
            Assert.AreEqual(target.Equals(another), result);

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }