### Question:
Bag implements Serializable { public boolean setOtherPropDataAtPew(PropData newPropData, int pew) { synchronized ( changedFieldSet ) { int index = pew - BAG_WEAR_COUNT; if ( index < 0 || index >= this.maxCount ) { return false; } else { if ( index >= this.otherPropDataList.size() ) { for ( int i=this.otherPropDataList.size(); i<=index; i++ ) { this.otherPropDataList.add(null); markChangeFlag(i+BAG_WEAR_COUNT); } } int originalHashCode = 0; PropData original = this.otherPropDataList.get(index); if ( original != null ) { originalHashCode = original.hashCode(); } if ( original == null && newPropData != null ) { this.currentCount++; } this.otherPropDataList.set(index, newPropData); if ( newPropData != null ) { newPropData.setPew(pew); if ( newPropData.getCount() == 0 ) { newPropData.setCount(1); } if ( this.parentUser != null && !this.parentUser.isAI() && !this.parentUser.isProxy() ) { StatClient.getIntance().sendDataToStatServer(parentUser, StatAction.BagSet, newPropData.getName(), newPropData.getColor(), newPropData.getLevel(), newPropData.hashCode(), originalHashCode); } } markChangeFlag(pew); this.changeFlag = true; } } return true; } Bag(); UserId getUserid(); void setUserd(UserId _id); int getMaxCount(); void setMaxCount(int maxCount); int getCurrentCount(); void setCurrentCount(int currentCount); List<PropData> getWearPropDatas(); List<PropData> getOtherPropDatas(); PropData getOtherPropData(final int pew); void tidyUserBag(); boolean addOtherPropDatas(PropData newPropData); boolean addOtherPropDatas(PropData newPropData, boolean notify); boolean setOtherPropDataAtPew(PropData newPropData, int pew); void setWearPropData(PropData newPropData, PropDataEquipIndex index); void setWearPropData(PropData newPropData, int pew); void setChangeFlagOnItem(PropData propData); PropData removeWearPropDatas(PropDataEquipIndex index); void removeOtherPropDatas(int pew); int removeOtherPropDatasCount(int pew, int count); boolean movePropData(int fromIndex, int toIndex); boolean wearPropData(int fromIndex, int toIndex); void recalculateUserProperties(PropData propData, boolean wearEquip); User getParentUser(); void setParentUser(User parentUser); void cleanOtherPropDatas(); boolean clearGeneralChangeFlag(); Set<Integer> clearMarkedChangeFlag(); void markChangeFlag(int index); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); static final int BAG_WEAR_COUNT; }### Answer:
@Test public void testSetOtherPropDataAtPew() { User user = UserManager.getInstance().createDefaultUser(); int count = 5; Bag bag = new Bag(); bag.setUserd(user.get_id()); bag.setParentUser(user); assertTrue(bag.clearGeneralChangeFlag()); assertArrayEquals(new int[0], changeFlagToIntArray(bag.clearMarkedChangeFlag())); for ( int i=count-1; i>=0; i--) { bag.setOtherPropDataAtPew(makePropData(10000+i), BAG_WEAR_COUNT+i); } List<PropData> propDataList = bag.getOtherPropDatas(); assertEquals(count, propDataList.size()); assertTrue(bag.clearGeneralChangeFlag()); assertEquals(5, changeFlagToIntArray(bag.clearMarkedChangeFlag()).length); for ( int i=0; i<propDataList.size(); i++ ) { PropData propData = propDataList.get(i); assertNotNull(propData); assertTrue(propData.getPew() >= Bag.BAG_WEAR_COUNT); } }