Exemple #1
0
        public static void ChangePathPermissionDependentTest(TileCannotPassingFlags flags, bool isError)
        {
            var instance            = new TilePathSetting();
            var changedPropertyList = new List <string>();

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

            var errorOccured = false;

            try
            {
                instance.ChangePathPermissionDependent(flags);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

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

            if (!errorOccured)
            {
                // 通行許可設定が"下レイヤーに依存"になっていること
                Assert.AreEqual(instance.PathPermission, TilePathPermission.Dependent);

                // 通行方向設定がセットした値と一致すること(設定を指定しなかった場合デフォルト値が設定されていること)
                Assert.IsTrue(instance.CannotPassingFlags.Equals(flags ?? new TileCannotPassingFlags()));
            }

            // 意図したとおりプロパティ変更通知が発火していること
            if (errorOccured)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 5);
                Assert.IsTrue(changedPropertyList[0].Equals(nameof(TilePathSetting.PathPermission)));
                Assert.IsTrue(changedPropertyList[1].Equals(nameof(TilePathSetting.ImpassableFlags)));
                Assert.IsTrue(changedPropertyList[2].Equals(nameof(TilePathSetting.PathOption)));
                Assert.IsTrue(changedPropertyList[3].Equals(nameof(TilePathSetting.CannotPassingFlags)));
                Assert.IsTrue(changedPropertyList[4].Equals(nameof(TilePathSetting.IsCounter)));
            }
        }