/** * Check that EquipmentSetFacadeImpl when initialised with a dataset containing equipment hides * and shows the correct weapon slots. */ public void testSlotManagementOnInitWithEquipment() { PlayerCharacter pc = getCharacter(); EquipSet es = new EquipSet("0.1", "Unit Test Equip"); Equipment weapon = new Equipment(); weapon.setName("Morningstar"); addEquipToEquipSet(pc, es, weapon, 1.0f, LOC_PRIMARY); EquipmentSetFacadeImpl esfi = new EquipmentSetFacadeImpl(uiDelegate, pc, es, dataset); ListFacade<EquipNode> nodes = esfi.getNodes(); Map<String, EquipNode> nodeMap = new HashMap<String, EquipNode>(); for (EquipNode equipNode : nodes) { nodeMap.put(equipNode.toString(), equipNode); } EquipNode testNode = nodeMap.get("Morningstar"); assertNotNull("Morningstar should be present", testNode); assertEquals("Morningstar type", EquipNode.NodeType.EQUIPMENT, testNode.getNodeType()); assertEquals("Morningstar location", LOC_PRIMARY, esfi.getLocation(testNode)); // Test for removed slots String removedSlots[] = new String[] {"Primary Hand", "Double Weapon", "Both Hands"}; for (String slotName : removedSlots) { testNode = nodeMap.get(slotName); assertNull(slotName + " should not be present", testNode); } // Test for still present slots String retainedSlots[] = new String[] {"Secondary Hand", "Ring"}; for (String slotName : retainedSlots) { testNode = nodeMap.get(slotName); assertNotNull(slotName + " should be present", testNode); } }
/** Check that EquipmentSetFacadeImpl can be initialised with an empty dataset. */ public void testEmptyInit() { EquipSet es = new EquipSet("0.1", "Unit Test Equip"); EquipmentSetFacadeImpl esfi = new EquipmentSetFacadeImpl(uiDelegate, getCharacter(), es, dataset); ListFacade<EquipNode> nodeList = esfi.getNodes(); assertFalse("Expected a non empty node set", nodeList.isEmpty()); assertEquals( "Incorrect name of base node", Constants.EQUIP_LOCATION_EQUIPPED, nodeList.getElementAt(0).toString()); assertEquals("Incorrect nunber of nodes found", NUM_BASE_NODES, nodeList.getSize()); }
/** Check that EquipmentSetFacadeImpl can be initialised with a dataset containing equipment. */ public void testInitWithEquipment() { PlayerCharacter pc = getCharacter(); EquipSet es = new EquipSet("0.1", "Unit Test Equip"); Equipment item = new Equipment(); item.setName("Satchel"); Equipment item2 = new Equipment(); item2.setName("Book"); Equipment item3 = new Equipment(); item3.setName("Quarterstaff"); EquipSet satchelEs = addEquipToEquipSet(pc, es, item, 1.0f); addEquipToEquipSet(pc, satchelEs, item2, 1.0f); addEquipToEquipSet(pc, es, item3, 1.0f, LOC_BOTH_HANDS); int adjustedBaseNodes = NUM_BASE_NODES - 4; EquipmentSetFacadeImpl esfi = new EquipmentSetFacadeImpl(uiDelegate, pc, es, dataset); ListFacade<EquipNode> nodeList = esfi.getNodes(); assertFalse("Expected a non empty path set", nodeList.isEmpty()); EquipNodeImpl node = (EquipNodeImpl) nodeList.getElementAt(0); assertEquals("Incorrect body struct name", Constants.EQUIP_LOCATION_EQUIPPED, node.toString()); assertEquals("Incorrect body struct type", NodeType.BODY_SLOT, node.getNodeType()); assertEquals("Incorrect sort key", "00", node.getSortKey()); assertEquals("Incorrect parent", null, node.getParent()); node = (EquipNodeImpl) nodeList.getElementAt(adjustedBaseNodes); assertEquals("Incorrect container name", item.getName(), node.toString()); assertEquals("Incorrect container type", NodeType.EQUIPMENT, node.getNodeType()); assertEquals("Incorrect sort key", "00|" + item.getName(), node.getSortKey()); assertEquals("Incorrect parent", nodeList.getElementAt(0), node.getParent()); node = (EquipNodeImpl) nodeList.getElementAt(adjustedBaseNodes + 2); assertEquals("Incorrect item name", item2.getName(), node.toString()); assertEquals("Incorrect item type", NodeType.EQUIPMENT, node.getNodeType()); assertEquals( "Incorrect sort key", "00|" + item.getName() + "|" + item2.getName(), node.getSortKey()); assertEquals("Incorrect parent", nodeList.getElementAt(adjustedBaseNodes), node.getParent()); node = (EquipNodeImpl) nodeList.getElementAt(adjustedBaseNodes + 1); assertEquals("Incorrect item name", item3.getName(), node.toString()); assertEquals("Incorrect item type", NodeType.EQUIPMENT, node.getNodeType()); assertEquals("Incorrect sort key", "01|" + item3.getName(), node.getSortKey()); assertEquals("Incorrect parent", LOC_HANDS, node.getParent().toString()); node = (EquipNodeImpl) nodeList.getElementAt(adjustedBaseNodes + 2); EquipNode parent = node.getParent(); assertEquals( "Root incorrect", Constants.EQUIP_LOCATION_EQUIPPED, parent.getParent().toString()); assertEquals("Leaf incorrect", item.getName(), parent.toString()); assertEquals("Incorrect nuber of paths found", adjustedBaseNodes + 3, nodeList.getSize()); }
/** * Add the equipment item to the equipset. * * @param pc The character owning the set * @param es The set to add the item to * @param item The item of equipment * @param qty The number to be placed in the location. * @return The new EquipSet object for the item. */ private EquipSet addEquipToEquipSet( PlayerCharacter pc, EquipSet es, Equipment item, float qty, String locName) { String id = EquipmentSetFacadeImpl.getNewIdPath(pc, es); EquipSet newSet = new EquipSet(id, locName, item.getName(), item); item.setQty(qty); newSet.setQty(1.0f); pc.addEquipSet(newSet); return newSet; }
/** Test the creation of phantom slots, looking at types and quantities particularly. */ public void testSlotCreation() { EquipSet es = new EquipSet("0.1", "Unit Test Equip"); EquipmentSetFacadeImpl esfi = new EquipmentSetFacadeImpl(uiDelegate, getCharacter(), es, dataset); ListFacade<EquipNode> nodes = esfi.getNodes(); Map<String, EquipNode> nodeMap = new HashMap<String, EquipNode>(); for (EquipNode equipNode : nodes) { nodeMap.put(equipNode.toString(), equipNode); } EquipNode testNode = nodeMap.get("Primary Hand"); assertNotNull("Primary Hand should be present", testNode); assertEquals("Primary Hand type", EquipNode.NodeType.PHANTOM_SLOT, testNode.getNodeType()); assertEquals("Primary Hand count", 1, esfi.getQuantity(testNode)); testNode = nodeMap.get("Secondary Hand"); assertNotNull("Secondary Hand should be present", testNode); assertEquals("Secondary Hand type", EquipNode.NodeType.PHANTOM_SLOT, testNode.getNodeType()); assertEquals("Secondary Hand count", 1, esfi.getQuantity(testNode)); testNode = nodeMap.get(Constants.EQUIP_LOCATION_SECONDARY + " 1"); assertNull(Constants.EQUIP_LOCATION_SECONDARY + " 1 should not be present", testNode); testNode = nodeMap.get(Constants.EQUIP_LOCATION_SECONDARY + " 2"); assertNull(Constants.EQUIP_LOCATION_SECONDARY + " 2 should not be present", testNode); testNode = nodeMap.get("Double Weapon"); assertNotNull("Double Weapon should be present", testNode); assertEquals("Double Weapon type", EquipNode.NodeType.PHANTOM_SLOT, testNode.getNodeType()); assertEquals("Double Weapon count", 1, esfi.getQuantity(testNode)); testNode = nodeMap.get("Both Hands"); assertNotNull("Both Hands should be present", testNode); assertEquals("Both Hands type", EquipNode.NodeType.PHANTOM_SLOT, testNode.getNodeType()); assertEquals("Both Hands count", 1, esfi.getQuantity(testNode)); testNode = nodeMap.get("Unarmed"); assertNotNull("Unarmed should be present", testNode); assertEquals("Unarmed type", EquipNode.NodeType.PHANTOM_SLOT, testNode.getNodeType()); assertEquals("Unarmed count", 1, esfi.getQuantity(testNode)); testNode = nodeMap.get("Ring"); assertNotNull("Ring should be present", testNode); assertEquals("Ring type", EquipNode.NodeType.PHANTOM_SLOT, testNode.getNodeType()); assertEquals("Ring count", 2, esfi.getQuantity(testNode)); }
/** Check that EquipmentSetFacadeImpl can manage addition and removal of equipment. */ public void testAddRemove() { EquipSet es = new EquipSet("0.1", "Unit Test Equip"); EquipmentSetFacadeImpl esfi = new EquipmentSetFacadeImpl(uiDelegate, getCharacter(), es, dataset); EquipNode root = esfi.getNodes().getElementAt(0); Equipment item = new Equipment(); item.setName("Dart"); assertEquals("Initial num carried", 0, item.getCarried(), 0.01); assertEquals("Initial num equipped", 0, item.getNumberEquipped()); assertEquals("Initial node list size", NUM_BASE_NODES, esfi.getNodes().getSize()); Equipment addedEquip = (Equipment) esfi.addEquipment(root, item, 2); assertEquals("First add num carried", 2, addedEquip.getCarried(), 0.01); assertEquals("First add num equipped", 2, addedEquip.getNumberEquipped()); assertEquals("Should be no sideeffects to num carried", 0, item.getCarried(), 0.01); assertEquals("Should be no sideeffects to equipped", 0, item.getNumberEquipped()); assertEquals("First add node list size", NUM_BASE_NODES + 1, esfi.getNodes().getSize()); assertEquals( "generated equip set id", "0.1.1", ((EquipNodeImpl) esfi.getNodes().getElementAt(NUM_BASE_NODES)).getIdPath()); Equipment secondEquip = (Equipment) esfi.addEquipment(root, item, 1); assertEquals("Second add num carried", 3, secondEquip.getCarried(), 0.01); assertEquals("Second add num equipped", 3, secondEquip.getNumberEquipped()); assertEquals("Should be no sideeffects to num carried", 0, item.getCarried(), 0.01); assertEquals("Should be no sideeffects to equipped", 0, item.getNumberEquipped()); assertTrue("Same equipment item should have been used", addedEquip == secondEquip); assertEquals("First add node list size", NUM_BASE_NODES + 1, esfi.getNodes().getSize()); EquipNode target = esfi.getNodes().getElementAt(NUM_BASE_NODES); Equipment removedEquip = (Equipment) esfi.removeEquipment(target, 2); assertEquals("First add num carried", 1, removedEquip.getCarried(), 0.01); assertEquals("First add num equipped", 1, removedEquip.getNumberEquipped()); assertTrue("Same equipment item should have been used", addedEquip == removedEquip); assertEquals("Should be no sideeffects to num carried", 0, item.getCarried(), 0.01); assertEquals("Should be no sideeffects to equipped", 0, item.getNumberEquipped()); assertEquals("First add node list size", NUM_BASE_NODES + 1, esfi.getNodes().getSize()); esfi.removeEquipment(target, 1); assertEquals("First add num carried", 0, addedEquip.getCarried(), 0.01); assertEquals("First add num equipped", 0, addedEquip.getNumberEquipped()); assertEquals("Should be no sideeffects to num carried", 0, item.getCarried(), 0.01); assertEquals("Should be no sideeffects to equipped", 0, item.getNumberEquipped()); assertEquals("First add node list size", NUM_BASE_NODES, esfi.getNodes().getSize()); }