예제 #1
0
        public static void CreateForDBTypeTest()
        {
            DatabaseTypeDesc instance = null;

            var errorOccured = false;

            try
            {
                instance = DatabaseTypeDesc.Factory.CreateForDBType();
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

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

            // 初期データ数が一致すること
            Assert.AreEqual(instance.DataDescList.Count, 1);
            Assert.AreEqual(instance.DataDescList.Count, instance.DataNameList.Count);
            // 初期項目数が一致すること
            Assert.AreEqual(instance.ItemDescList.Count, 0);
            Assert.AreEqual(instance.ItemDescList.Count, instance.DBItemSettingList.Count);

            var valueList = new DBItemValueList();
            var dataDesc  = new DatabaseDataDesc("DataName", valueList);

            instance.DataDescList.Add(dataDesc);

            // データ追加後、データ数が一致すること
            Assert.AreEqual(instance.DataDescList.Count, 2);
            Assert.AreEqual(instance.DataDescList.Count, instance.DataNameList.Count);

            var itemDesc = new DatabaseItemDesc
            {
                ItemName = "ItemName",
                ItemType = DBItemType.String,
            };

            instance.ItemDescList.Add(itemDesc);

            // 項目追加後、項目数が一致すること
            Assert.AreEqual(instance.ItemDescList.Count, 1);
            Assert.AreEqual(instance.ItemDescList.Count, instance.DBItemSettingList.Count);
        }
예제 #2
0
        public static void ItemValueListTest(bool isSetNull, bool isError)
        {
            var instance            = new DatabaseDataDesc();
            var changedPropertyList = new List <string>();

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

            var itemValueList = isSetNull ? null : new DBItemValueList();

            var errorOccured = false;

            try
            {
                instance.ItemValueList = itemValueList;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }


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

            if (!errorOccured)
            {
                var propertyValue = instance.ItemValueList;

                Assert.NotNull(propertyValue);
                Assert.NotNull(itemValueList);

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

            // 意図したとおりプロパティ変更通知が発火していること
            if (errorOccured)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 1);
                Assert.IsTrue(changedPropertyList[0].Equals(nameof(DatabaseDataDesc.ItemValueList)));
            }
        }
예제 #3
0
        public static void SerializeTest()
        {
            var target = new DatabaseDataDesc
            {
                DataName = "DataName",
            };
            var changedPropertyList = new List <string>();

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

            var clone = DeepCloner.DeepClone(target);

            Assert.IsTrue(clone.Equals(target));

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
예제 #4
0
        public static void ConstructorTestB(DataName dataName, DBItemValueList itemValueList, bool isError)
        {
            var errorOccured = false;

            try
            {
                var _ = new DatabaseDataDesc(dataName, itemValueList);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);
        }
예제 #5
0
        public static void ConstructorTestA()
        {
            var errorOccured = false;

            try
            {
                var _ = new DatabaseDataDesc();
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);
        }
예제 #6
0
        private void ReadDbData(FileReadStatus status, DBData data)
        {
            // データ数
            var length = status.ReadInt();

            status.IncreaseIntOffset();

            Logger.Debug(FileIOMessage.SuccessRead(typeof(DBDataFileReader),
                                                   "データ数数", length));

            // DBデータ
            var dataDescList = new DatabaseDataDescList();

            for (var i = 0; i < length; i++)
            {
                var desc = new DatabaseDataDesc();

                // データ名
                var dataName = status.ReadString();
                status.AddOffset(dataName.ByteLength);

                Logger.Debug(FileIOMessage.SuccessRead(typeof(DBDataFileReader),
                                                       "データ名", dataName.String));

                desc.DataName = dataName.String;

                // 数値項目
                ReadDbDataIntValues(status, out var intValues);
                desc.ItemValueList.AddRange(intValues);

                // 文字列項目
                ReadDbDataStringValues(status, out var stringValues);
                desc.ItemValueList.AddRange(stringValues);

                dataDescList.Overwrite(i, new List <DatabaseDataDesc> {
                    desc
                });
            }

            data.DataDescList.Overwrite(0, dataDescList);
        }
예제 #7
0
        /// <summary>
        /// DataDescのリスト
        /// </summary>
        /// <param name="typeSetting">タイプ設定</param>
        /// <param name="dataSetting">データ設定</param>
        /// <returns></returns>
        private IReadOnlyList <DatabaseDataDesc> MakeDataDescList(DBTypeSetting typeSetting,
                                                                  DBDataSetting dataSetting)
        {
            var result = new List <DatabaseDataDesc>();

            var dataNameList = typeSetting.DataNameList;
            var valuesList   = dataSetting.SettingValuesList;

            if (dataNameList.Count != valuesList.Count)
            {
                throw new InvalidOperationException(
                          $"データ名数とデータ数が異なります。");
            }

            for (var i = 0; i < typeSetting.DataNameList.Count; i++)
            {
                var desc = new DatabaseDataDesc(dataNameList[i],
                                                valuesList[i].ToLengthChangeableItemValueList());

                result.Add(desc);
            }

            return(result);
        }