@Test public void testBagUnwear() { ScriptManager manager = ScriptManager.getInstance(); User user = UserManager.getInstance().createDefaultUser(); User expectUser = UserManager.getInstance().createDefaultUser(); WeaponPojo weapon = new WeaponPojo(); weapon.setAddAttack(10); weapon.setAddDefend(20); weapon.setAddAgility(30); weapon.setAddLuck(40); weapon.setAddBlood(50); weapon.setAddBloodPercent(60); weapon.setAddThew(70); weapon.setAddDamage(80); weapon.setAddSkin(90); user.getBag().removeOtherPropDatas(Bag.BAG_WEAR_COUNT); user.getBag().addOtherPropDatas(weapon.toPropData(30, WeaponColor.WHITE)); user.getBag().wearPropData(Bag.BAG_WEAR_COUNT, PropDataEquipIndex.WEAPON.index()); // default power = 2980 assertTrue(user.getPower() > 0); assertEquals(expectUser.getAttack() + weapon.getAddAttack(), user.getAttack()); assertEquals(expectUser.getDefend() + weapon.getAddDefend(), user.getDefend()); assertEquals(expectUser.getAgility() + weapon.getAddAgility(), user.getAgility()); assertEquals(expectUser.getLuck() + weapon.getAddLuck(), user.getLuck()); assertEquals( (int) ((expectUser.getBlood() + weapon.getAddBlood()) * (1.0 + weapon.getAddBloodPercent() / 100.0)), user.getBlood()); assertEquals(expectUser.getTkew() + weapon.getAddThew() + 6, user.getTkew()); assertEquals(expectUser.getDamage() + weapon.getAddDamage(), user.getDamage()); assertEquals(expectUser.getSkin() + weapon.getAddSkin(), user.getSkin()); user.getBag().wearPropData(PropDataEquipIndex.WEAPON.index(), Bag.BAG_WEAR_COUNT); assertEquals(expectUser.getAttack(), user.getAttack()); assertEquals(expectUser.getDefend(), user.getDefend()); assertEquals(expectUser.getAgility(), user.getAgility()); assertEquals(expectUser.getLuck(), user.getLuck()); assertEquals(expectUser.getTkew(), user.getTkew()); assertEquals(expectUser.getDamage(), user.getDamage()); assertEquals(expectUser.getSkin(), user.getSkin()); }
@Test public void testWearAndUnWearBloodPercentEquip() { ScriptManager manager = ScriptManager.getInstance(); User user = UserManager.getInstance().createDefaultUser(); user.setBlood(100); User expectUser = UserManager.getInstance().createDefaultUser(); expectUser.setBlood(100); WeaponPojo weapon = new WeaponPojo(); weapon.setAddBloodPercent(15); user.getBag().removeOtherPropDatas(Bag.BAG_WEAR_COUNT); user.getBag().addOtherPropDatas(weapon.toPropData(30, WeaponColor.WHITE)); user.getBag().wearPropData(Bag.BAG_WEAR_COUNT, PropDataEquipIndex.WEAPON.index()); // default power = 2980 assertEquals(Math.round(expectUser.getBlood() * 1.15), user.getBlood()); user.getBag().wearPropData(PropDataEquipIndex.WEAPON.index(), -1); assertEquals(expectUser.getBlood(), user.getBlood()); }
@Test public void testRoleAttackWithoutFeedback() throws Exception { UserManager manager = UserManager.getInstance(); manager.removeUser("test001"); manager.removeUser("test002"); User user1 = manager.createDefaultUser(); user1.set_id(new UserId("test001")); // user1.setSessionKey(SessionKey.createSessionKeyFromRandomString()); user1.setUsername("test001"); for (int i = 0; i < 1; i++) { user1.addTool(makeBuffTool(i)); } user1.setBag(makeBag(user1, 3)); User user2 = manager.createDefaultUser(); user2.set_id(new UserId("test002")); // user2.setSessionKey(SessionKey.createSessionKeyFromRandomString()); user2.setUsername("test002"); for (int i = 0; i < 1; i++) { user2.addTool(makeBuffTool(i)); } user2.setBag(makeBag(user2, 3)); manager.saveUser(user1, true); manager.saveUserBag(user1, true); manager.saveUser(user2, true); manager.saveUserBag(user2, true); SessionManager sessionManager = new SessionManager(); IoSession session1 = createNiceMock(IoSession.class); sessionManager.registerSession(session1, user1); IoSession session2 = createNiceMock(IoSession.class); sessionManager.registerSession(session2, user2); BattleManager battleManager = BattleManager.getInstance(); battleManager.clearAllBattles(); // Create two single room RoomManager roomManager = RoomManager.getInstance(); roomManager.assignRoom(user1, RoomType.SINGLE_ROOM); roomManager.assignRoom(user2, RoomType.SINGLE_ROOM); // User1 and User2 press "ready start" roomManager.readyStart(user1.getSessionKey(), true); roomManager.readyStart(user2.getSessionKey(), true); Collection<Battle> battles = battleManager.findAllBattles(); // Thread.sleep(Long.MAX_VALUE); assertEquals(1, battles.size()); Battle battle = battles.iterator().next(); // Change the battleMap ArrayList<BattleBitSetMap> battleMaps = BattleDataLoader4Bitmap.getBattleMapList(); BattleBitSetMap map03 = null; for (BattleBitSetMap bm : battleMaps) { if (bm.getMapId().equals("0")) { map03 = bm; break; } } assertNotNull(map03); TestUtil.setPrivateFieldValue("battleMap", battle, map03); HashMap<SessionKey, BattleUser> battleUserMap = battle.getBattleUserMap(); assertEquals(2, battleUserMap.size()); BattleUser bUser1 = battleUserMap.get(user1.getSessionKey()); BattleUser bUser2 = battleUserMap.get(user2.getSessionKey()); assertEquals(user1.getSessionKey(), bUser1.getUserSessionKey()); assertEquals(user1.getBlood(), bUser1.getBlood()); assertEquals(user1.getTkew(), bUser1.getThew()); Jedis jedis = JedisFactory.getJedis(); // User1 and User2 are stage ready. // Test roundStart final ArrayList<Message> msgList = new ArrayList<Message>(); MessageQueue queue = createMock(MessageQueue.class); queue.sessionWrite(anyObject(SessionKey.class), anyObject()); expectLastCall() .andAnswer( new IAnswer<Object>() { public Object answer() throws Throwable { Object msg = getCurrentArguments()[1]; msgList.add((Message) msg); return null; } }) .anyTimes(); TestUtil.setPrivateFieldValue("messageQueue", GameContext.getInstance(), queue); replay(queue); battleManager.stageReady(user1.getSessionKey()); battleManager.stageReady(user2.getSessionKey()); // System.out.println(msgList); // Check if roundStart is called assertEquals(2, msgList.size()); BseRoundStart roundStart = (BseRoundStart) msgList.get(0); assertNotNull(roundStart.getUserId(0)); assertNotNull(roundStart.getUserId(1)); // userPos: (990, 37), angle: 93, power: 83, dir: 1 // Role Attack msgList.clear(); BceRoleAttack.Builder bceRoleAttack = BceRoleAttack.newBuilder(); bceRoleAttack.setAngle(150000); bceRoleAttack.setAtkAngle(bceRoleAttack.getAngle()); bceRoleAttack.setDirection(RoleDirection.RIGHT.ordinal()); bceRoleAttack.setPower(30); int userx = 1380; int usery = 697; bceRoleAttack.setUserx(userx); bceRoleAttack.setUsery(usery); bUser1.setPosX(userx); bUser1.setPosY(usery); bUser2.setPosX(userx); bUser2.setPosY(usery); battleManager.roleAttack(bUser1.getUserSessionKey(), bceRoleAttack.build()); // System.out.println(msgList); // 2 roleAttack messages, 2 roundStart messages. long timeOut = System.currentTimeMillis() + 10000; Message xinqi = null; while (System.currentTimeMillis() < timeOut) { int size = msgList.size(); for (int i = 0; i < size; i++) { Object xm = msgList.get(i); if (xm instanceof BseAskRoundOver) { xinqi = (Message) xm; break; } } Thread.sleep(200); } assertTrue(xinqi != null); verify(queue); // Clean system. jedis.del(battle.getBattleSessionKey().toString()); jedis.del(user1.getSessionKey().toString()); jedis.del(user2.getSessionKey().toString()); }