public void testRemoveProduct() {
addAllProducts();
final ProductManagerListener listener = new ProductManagerListener();
_productManager.addListener(listener);
_productManager.removeProduct(_product2);
assertEquals(2, _productManager.getProductCount());
assertSame(_product1, _productManager.getProduct(0));
assertSame(_product3, _productManager.getProduct(1));
assertSame(_product1, _productManager.getProduct("product1"));
assertNull(_productManager.getProduct("product2"));
assertSame(_product3, _productManager.getProduct("product3"));
assertEquals(1, _product1.getRefNo());
assertEquals(0, _product2.getRefNo());
assertEquals(3, _product3.getRefNo());
assertSame(_productManager, _product1.getProductManager());
assertNull(_product2.getProductManager());
assertSame(_productManager, _product3.getProductManager());
final Vector addedProducts = listener.getAddedProducts();
assertEquals(0, addedProducts.size());
final Vector removedProducts = listener.getRemovedProducts();
assertEquals(1, removedProducts.size());
assertSame(_product2, removedProducts.get(0));
}