Example #1
0
        public void Get_Award_Success()
        {
            var expected = new Award
            {
                Id      = 1,
                Success = 3,
                Fail    = 1,
                Quit    = 2,
                Level   = LevelEnum.Hard
            };
            Award expectedNull = null;
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);

            mockRepository.Setup(s => s.Get(1)).Returns(expected);
            mockRepository.Setup(s => s.Get(0)).Returns(expectedNull);

            IAwardService service = new AwardService(mockRepository.Object);
            Award         actual  = service.Get(1);

            Assert.Equal(expected, actual);
            Assert.Null(service.Get(0));

            mockRepository.Verify(r => r.Get(1), Times.Once());
            mockRepository.Verify(r => r.Get(0), Times.Once());
        }
Example #2
0
        public void Update_Award_SuccessValue_Minor_or_Equal_Zero_Error()
        {
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);
            IAwardService           service        = new AwardService(mockRepository.Object);

            var award = new Award
            {
                Id      = 1,
                Success = -1,
                Fail    = 0,
                Quit    = 0,
                Level   = LevelEnum.Easy
            };

            ArgumentOutOfRangeException ex = Assert.Throws <ArgumentOutOfRangeException>(() => service.Update(award));

            Assert.NotNull(ex);
            Assert.Equal("successValue", ex.ParamName);
            Assert.Equal(-1M, ex.ActualValue);
            Assert.Equal($"The value must be greater than zero.\r\nParameter name: {"successValue"}\r\nActual value was {-1M}.", ex.Message);

            award.Success = 0;
            ex            = Assert.Throws <ArgumentOutOfRangeException>(() => service.Update(award));

            Assert.NotNull(ex);
            Assert.Equal("successValue", ex.ParamName);
            Assert.Equal(0M, ex.ActualValue);
            Assert.Equal($"The value must be greater than zero.\r\nParameter name: {"successValue"}\r\nActual value was {0M}.", ex.Message);

            mockRepository.Verify(r => r.Update(It.IsAny <Award>()), Times.Never());
        }
        public async Task Get_award_of_employee_should_return_null_for_invalid_input()
        {
            var mockAwardStore    = new Mock <IAwardsRepository>();
            var mockEmployeeStore = new Mock <IEmployeeRepository>();

            mockAwardStore.Setup(c => c.GetAwardsByEmployeeId("1144", "xyz", 2)).ReturnsAsync((PagedAwardList)null);
            mockEmployeeStore.Setup(c => c.GetEmployee(_awards[0].EmployeeId)).ReturnsAsync(_employees[0]);
            var awardService = new AwardService(mockAwardStore.Object, mockEmployeeStore.Object);
            var awards       = await awardService.GetAwardsOfAnEmployee("1144", "xyz", 2);

            awards.Should().BeNull();
        }
        public async Task GetMonthly_awards_should_return_null_for_invalid_data()
        {
            var mockAwardStore    = new Mock <IAwardsRepository>();
            var mockEmployeeStore = new Mock <IEmployeeRepository>();

            mockAwardStore.Setup(c => c.GetMonthlyAwards("kudos", 1, 2019)).ReturnsAsync(_awards);
            mockEmployeeStore.Setup(c => c.GetEmployee(_awards[0].EmployeeId)).ReturnsAsync(_employees[0]);
            var awardService = new AwardService(mockAwardStore.Object, mockEmployeeStore.Object);
            var awards       = await awardService.GetMonthlyAwards("kudos", 1, 220231);

            awards.Should().BeNull();
        }
Example #5
0
        public void Add_Award_SuccessValue_Minor_than_QuitValue_Error()
        {
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);
            IAwardService           service        = new AwardService(mockRepository.Object);

            ArgumentException ex = Assert.Throws <ArgumentException>(() => service.Add(2, 1, 3, LevelEnum.Easy));

            Assert.NotNull(ex);
            Assert.Equal("successValue can't be minor than quitValue.", ex.Message);

            mockRepository.Verify(r => r.Add(3, 1, 2, LevelEnum.Easy), Times.Never());
        }
Example #6
0
        public void Add_Award_QuitValue_Minor_than_Zero_Error()
        {
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);
            IAwardService           service        = new AwardService(mockRepository.Object);

            ArgumentOutOfRangeException ex = Assert.Throws <ArgumentOutOfRangeException>(() => service.Add(1, 1, -1, LevelEnum.Easy));

            Assert.NotNull(ex);
            Assert.Equal("quitValue", ex.ParamName);
            Assert.Equal(-1M, ex.ActualValue);
            Assert.Equal($"The value must be greater than or equal to zero.\r\nParameter name: {"quitValue"}\r\nActual value was {-1M}.", ex.Message);

            mockRepository.Verify(r => r.Add(3, 1, 2, LevelEnum.Easy), Times.Never());
        }
        public async void GetAnnualAwards_should_return_Annual_Awards()
        {
            var mockAwardStore    = new Mock <IAwardsRepository>();
            var mockEmployeeStore = new Mock <IEmployeeRepository>();

            mockAwardStore.Setup(c => c.GetAnnualAwards(2019)).ReturnsAsync(_awards);
            mockEmployeeStore.Setup(c => c.GetEmployee(_awards[0].EmployeeId)).ReturnsAsync(_employees[0]);
            var awardService = new AwardService(mockAwardStore.Object, mockEmployeeStore.Object);
            var awards       = await awardService.GetAnnualAwards(2019);

            awards.Should().NotBeNull();
            Assert.Equal(_awards[0].Id, awards[0].Awards.Id);
            Assert.Equal(_awards[0].EmployeeId, awards[0].Employee.Id);
        }
        public async Task Get_award_of_employee_should_return_award_list_for_particular_employee()
        {
            var pagedAwardList = new PagedAwardList
            {
                PageState = "xzz",
                Awards    = _awards
            };
            var mockAwardStore    = new Mock <IAwardsRepository>();
            var mockEmployeeStore = new Mock <IEmployeeRepository>();

            mockAwardStore.Setup(c => c.GetAwardsByEmployeeId("1121", "xyz", 2)).ReturnsAsync(pagedAwardList);
            mockEmployeeStore.Setup(c => c.GetEmployee(_awards[0].EmployeeId)).ReturnsAsync(_employees[0]);
            var awardService = new AwardService(mockAwardStore.Object, mockEmployeeStore.Object);
            var awards       = await awardService.GetAwardsOfAnEmployee("1121", "xyz", 2);

            awards.Should().NotBeNull();
        }
Example #9
0
        public void Add_Award_Equal_Values_Error()
        {
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);
            IAwardService           service        = new AwardService(mockRepository.Object);

            ArgumentException ex = Assert.Throws <ArgumentException>(() => service.Add(1, 1, 2, LevelEnum.Easy));

            Assert.NotNull(ex);
            Assert.Equal("Award values can't be equal.", ex.Message);

            ex = Assert.Throws <ArgumentException>(() => service.Add(1, 2, 1, LevelEnum.Easy));
            Assert.NotNull(ex);
            Assert.Equal("Award values can't be equal.", ex.Message);

            ex = Assert.Throws <ArgumentException>(() => service.Add(2, 1, 1, LevelEnum.Easy));
            Assert.NotNull(ex);
            Assert.Equal("Award values can't be equal.", ex.Message);

            mockRepository.Verify(r => r.Add(3, 1, 2, LevelEnum.Easy), Times.Never());
        }
Example #10
0
        public void Add_Award_Success()
        {
            var expected = new Award
            {
                Id      = 1,
                Success = 3,
                Fail    = 1,
                Quit    = 2,
                Level   = LevelEnum.Easy
            };

            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);

            mockRepository.Setup(s => s.Add(3, 1, 2, LevelEnum.Easy)).Returns(expected);
            IAwardService service = new AwardService(mockRepository.Object);

            Award actual = service.Add(3, 1, 2, LevelEnum.Easy);

            mockRepository.Verify(r => r.Add(3, 1, 2, LevelEnum.Easy), Times.Once());
            Assert.Equal(expected, actual);
        }
Example #11
0
        public void Update_Award_Success()
        {
            var award = new Award
            {
                Id      = 1,
                Success = 3,
                Fail    = 1,
                Quit    = 2,
                Level   = LevelEnum.Easy
            };

            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);

            mockRepository.Setup(s => s.Update(award));

            IAwardService service = new AwardService(mockRepository.Object);

            service.Update(award);

            mockRepository.Verify(r => r.Update(It.IsAny <Award>()), Times.Once());
        }
Example #12
0
        public void Update_Award_QuitValue_Minor_than_FailValue_Error()
        {
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);
            IAwardService           service        = new AwardService(mockRepository.Object);

            var award = new Award
            {
                Id      = 1,
                Success = 3,
                Fail    = 2,
                Quit    = 1,
                Level   = LevelEnum.Easy
            };

            ArgumentException ex = Assert.Throws <ArgumentException>(() => service.Update(award));

            Assert.NotNull(ex);
            Assert.Equal("quitValue can't be minor than failValue.", ex.Message);

            mockRepository.Verify(r => r.Update(It.IsAny <Award>()), Times.Never());
        }
Example #13
0
        public void GetAll_Award_Success()
        {
            var expected = new List <Award>
            {
                new Award {
                    Id = 1, Success = 3, Fail = 1, Quit = 2, Level = LevelEnum.Hard
                },
                new Award {
                    Id = 2, Success = 4, Fail = 2, Quit = 3, Level = LevelEnum.Medium
                }
            };
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);

            mockRepository.Setup(s => s.GetAll()).Returns(expected);

            IAwardService service = new AwardService(mockRepository.Object);
            List <Award>  actual  = service.GetAll();

            Assert.Equal(expected, actual);

            mockRepository.Verify(r => r.GetAll(), Times.Once());
        }
Example #14
0
        public void Update_Award_Equal_Values_Error()
        {
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);
            IAwardService           service        = new AwardService(mockRepository.Object);

            var award = new Award
            {
                Id      = 1,
                Success = 1,
                Fail    = 1,
                Quit    = 2,
                Level   = LevelEnum.Easy
            };

            ArgumentException ex = Assert.Throws <ArgumentException>(() => service.Update(award));

            Assert.NotNull(ex);
            Assert.Equal("Award values can't be equal.", ex.Message);

            award.Success = 1;
            award.Fail    = 2;
            award.Quit    = 1;

            ex = Assert.Throws <ArgumentException>(() => service.Update(award));
            Assert.NotNull(ex);
            Assert.Equal("Award values can't be equal.", ex.Message);

            award.Success = 2;
            award.Fail    = 1;
            award.Quit    = 1;

            ex = Assert.Throws <ArgumentException>(() => service.Update(award));
            Assert.NotNull(ex);
            Assert.Equal("Award values can't be equal.", ex.Message);

            mockRepository.Verify(r => r.Add(3, 1, 2, LevelEnum.Easy), Times.Never());
        }
Example #15
0
        public void Delete_Award_Success()
        {
            Award notFoundAward = null;
            Mock <IAwardRepository> mockRepository = new Mock <IAwardRepository>(MockBehavior.Strict);

            mockRepository.Setup(r => r.Delete(0)).Throws(new InvalidOperationException("There's no Award with ID value equal to 0"));
            mockRepository.Setup(r => r.Delete(1));
            mockRepository.Setup(r => r.Get(0)).Returns(notFoundAward);
            mockRepository.Setup(r => r.Get(1)).Returns(new Award());

            IAwardService service = new AwardService(mockRepository.Object);

            service.Delete(1);
            InvalidOperationException ex = Assert.Throws <InvalidOperationException>(() => service.Delete(0));

            Assert.NotNull(ex);
            Assert.Equal(ex.Message, "There's no Award with ID value equal to 0");

            mockRepository.Verify(r => r.Delete(1), Times.Once());

            mockRepository.Verify(r => r.Get(It.IsAny <int>()), Times.AtLeast(2));
            mockRepository.Verify(r => r.Delete(0), Times.Never());
            mockRepository.Verify(r => r.Delete(1), Times.Once());
        }
Example #16
0
 public CreateAward(AwardService awardService, EmployeeService employeeService)
 {
     AwardService    = awardService;
     EmployeeService = employeeService;
 }
    public override void read(ErlKVMessage message)
    {
        ErlList ls;
        ErlType type = message.getValue("type") as ErlType;
        // ErlList ls = message.getValue("report") as ErlList;
        ErlType Rportnum           = message.getValue("report") as ErlType;
        ErlType emeyType           = message.getValue("enemy_array") as ErlType;
        ErlType mineType           = message.getValue("mine_array") as ErlType;
        ErlType pvpType            = message.getValue("bonus_attack") as ErlType;
        ErlType emeyResonance      = message.getValue("enemy_resonance") as ErlType;
        ErlType attResonance       = message.getValue("attacker_resonance") as ErlType;
        ErlType replayAttackerName = message.getValue("attacker_name") as ErlType;
        ErlType replayEnemyName    = message.getValue("enemy_name") as ErlType;
        ErlType cardEvo            = message.getValue("card_evo") as ErlType; //卡片进化等级
        ErlType emeyNum            = message.getValue("fore") as ErlType;     //pve敌人阵形人数

        GameManager.Instance.isCanBeSecondSkill = false;

        if (Rportnum is ErlList)
        {
            ls = Rportnum as ErlList;
        }
        else
        {
            int reportNum = StringKit.toInt(Rportnum.getValueString());
            //ls=message.getValue("1") as ErlList;
            List <ErlType> ttt = new List <ErlType>();
            for (int i = 0; i < reportNum; i++)
            {
                string  kk = (i + 1).ToString();
                ErlList te = message.getValue(kk) as ErlList;
                for (int j = 0; j < te.Value.Length; j++)
                {
                    ttt.Add(te.Value[j]);
                }
            }
            ErlType[] kks = new ErlType[ttt.Count];
            for (int i = 0; i < ttt.Count; i++)
            {
                kks[i] = ttt[i];
            }
            ls = new ErlList(kks);
        }

        if (message.getValue("seckill") != null)
        {
            if (MissionInfoManager.Instance.isBossFight)
            {
                MissionInfoManager.Instance.isBossFight = false;
            }
            else
            {
                GameManager.Instance.isCanBeSecondSkill = (message.getValue("seckill") as ErlType).getValueString() == "1";
            }
        }
        ErlType damageValue = message.getValue("damage") as ErlType;         //单挑boss伤害值//

        if (damageValue != null)
        {
            AttackBossOneOnOneManager.Instance.damageValue = StringKit.toLong(damageValue.getValueString());
        }


        BattleDataErlang battleData = new BattleDataErlang();

        if (emeyNum != null)
        {
            battleData.pveTeamNum = StringKit.toInt(emeyNum.getValueString());
        }
        if (emeyType != null)
        {
            battleData.enemyFormationID = StringKit.toInt(emeyType.getValueString());
        }
        if (mineType != null)
        {
            battleData.playerFormationID = StringKit.toInt(mineType.getValueString());
        }
        if (pvpType != null)
        {
            battleData.pvpType = StringKit.toInt(pvpType.getValueString());
        }

        if (emeyResonance != null)
        {
            ErlArray eaER = emeyResonance as ErlArray;
            //上方召唤兽共鸣
            battleData.enemyBeastEffect = BeastEvolveManagerment.Instance.getBestResonanceByNums(StringKit.toInt(eaER.Value [1].getValueString()), StringKit.toInt(eaER.Value [0].getValueString()));
        }
        if (attResonance != null)
        {
            ErlArray eaER = attResonance as ErlArray;
            //下方召唤兽共鸣
            battleData.playerBeastEffect = BeastEvolveManagerment.Instance.getBestResonanceByNums(StringKit.toInt(eaER.Value [1].getValueString()), StringKit.toInt(eaER.Value [0].getValueString()));
        }
        else
        {
            battleData.playerBeastEffect = BeastEvolveManagerment.Instance.getBestResonance();
        }
        if (replayAttackerName != null)
        {
            battleData.replayAttackerName = replayAttackerName.getValueString();
        }
        if (replayEnemyName != null)
        {
            battleData.replayEnemyName = replayEnemyName.getValueString();
        }
        if (cardEvo != null)          //卡片进化等级
        {
            battleData.evo = new Dictionary <string, int> ();
            ErlArray eaCEs = cardEvo as ErlArray;
            for (int i = eaCEs.Value.Length - 1; i >= 0; i--)
            {
                ErlArray eaCE = eaCEs.Value [i] as ErlArray;
                battleData.evo.Add(eaCE.Value [0].getValueString(), StringKit.toInt(eaCE.Value [1].getValueString()));
            }
        }
        battleData.hpMap = new Dictionary <int, BattleHpInfo> ();
        parseBattleType(battleData, type);
        BattleManager.battleData = battleData;
        //倒转顺序 战报需要倒转 每个erllist都需要倒转
        Array.Reverse(ls.Value);
        //获取队伍信息
        createTeamInfo(battleData, ls.Value [0] as ErlList);
        //获取开场buff
        createOpenBuff(battleData, ls.Value [1]);
        //解析回合战斗
        ErlList el;
        int     frame = 0;

        for (int i = 2; i < ls.Value.Length - 1; i += 3)
        {
            frame = (i - 2) / 3 + 1;            //(i-2)/3+1 回合的算法
            //如果执行到最后一个 则不进行序列化 最后一个是战斗胜利
            if (i == ls.Value.Length - 1)
            {
                break;
            }

            //剧情npc
            if (!(ls.Value [i] is ErlNullList))
            {
                el = ls.Value [i] as ErlList;
                //erllist 需要倒转顺序
                Array.Reverse(el.Value);
                createFight(battleData, el, frame);
            }
            if (i + 1 >= ls.Value.Length - 1)
            {
                break;
            }
            //回合buffer检查
            if (!(ls.Value [i + 1] is ErlNullList))
            {
                el = ls.Value [i + 1] as ErlList;
                //erllist 需要倒转顺序
                Array.Reverse(el.Value);
                createRoundBuffer(battleData, el, frame);
            }
            if (i + 2 >= ls.Value.Length - 1)
            {
                break;
            }
            //有可能当前回合,双方都没有出手
            if (ls.Value [i + 2] is ErlNullList)
            {
                createFight(battleData, ls.Value [i + 2] as ErlNullList, frame);
            }
            else
            {
                //回合战斗
                el = ls.Value [i + 2] as ErlList;
                //erllist 需要倒转顺序
                Array.Reverse(el.Value);
                createFight(battleData, el, frame);
            }
        }
        setLastAttack(battleData);         //设置最后一击,攻击伤害行为完成后调用
        //获取胜利失败
        createWinner(battleData, ls.Value [ls.Value.Length - 1] as ErlList, frame + 1);

        ErlType award = message.getValue("award") as ErlType;//获取奖励

        //这里处理副本战斗
        if (MissionInfoManager.Instance.mission != null &&
            MissionInfoManager.Instance.mission.getChapterType() == ChapterType.STORY &&
            GameManager.Instance.isCanBeSecondSkill &&
            PlayerPrefs.GetInt(UserManager.Instance.self.uid + "miaosha", 1) == 1 &&
            battleData.isPve &&
            UserManager.Instance.self.getUserLevel() >= 15)
        {
            AwardService service12 = ServiceManager.Instance.getServiceByCmd(FPortService.AWARD) as AwardService;
            if (award is ErlArray)
            {
                service12.parseMAward(award as ErlArray);
            }
            else if (award is ErlList)
            {
                service12.parseMAward(award as ErlList);
            }
            GameManager.Instance.battleReportCallback();
            GameManager.Instance.battleReportCallback = null;
        }
        else if (GameManager.Instance.isCanBeSecondSkill &&
                 PlayerPrefs.GetInt(UserManager.Instance.self.uid + "miaosha", 1) == 1 &&
                 battleData.isPvP &&
                 UserManager.Instance.self.getUserLevel() >= 15)//这里处理副本PK
        {
            AwardService service12 = ServiceManager.Instance.getServiceByCmd(FPortService.AWARD) as AwardService;
            if (award is ErlArray)
            {
                service12.parseMAward(award as ErlArray);
            }
            else if (award is ErlList)
            {
                service12.parseMAward(award as ErlList);
            }
            GameManager.Instance.battleReportCallback();
            GameManager.Instance.battleReportCallback = null;
        }
        else
        {
            GameManager.Instance.battleReportCallback();
            GameManager.Instance.battleReportCallback = null;
            AwardService service1 = ServiceManager.Instance.getServiceByCmd(FPortService.AWARD) as AwardService;
            if (award is ErlArray)
            {
                service1.parseAward(award as ErlArray);
            }
            else if (award is ErlList)
            {
                service1.parseAward(award as ErlList);
            }
        }

//		(ServiceManager.Instance.getServiceByCmd (FPortService.AWARD) as AwardService).parseAward ((award as ErlArray) != null ? award as ErlArray : award as ErlList);
        //战斗失败处理
        if (message.getValue("event") != null)
        {
            (ServiceManager.Instance.getServiceByCmd(FPortService.FUBEN_EVENT) as FuBenDoEventService).parseFightLose(message.getValue("action") as ErlType, message.getValue("pstep") as ErlType);
        }
    }