001 package org.cocome.tradingsystem.testdriver; 002 003 import javax.jms.JMSException; 004 import javax.jms.TopicSubscriber; 005 006 import org.cocome.tradingsystem.cashdeskline.events.CashAmountEnteredEvent; 007 import org.cocome.tradingsystem.cashdeskline.events.ChangeAmountCalculatedEvent; 008 import org.cocome.tradingsystem.cashdeskline.events.CreditCardScanFailedEvent; 009 import org.cocome.tradingsystem.cashdeskline.events.ExpressModeDisabledEvent; 010 import org.cocome.tradingsystem.cashdeskline.events.ExpressModeEnabledEvent; 011 import org.cocome.tradingsystem.cashdeskline.events.InvalidCreditCardEvent; 012 import org.cocome.tradingsystem.cashdeskline.events.ProductBarcodeNotValidEvent; 013 import org.cocome.tradingsystem.cashdeskline.events.RunningTotalChangedEvent; 014 import org.cocome.tradingsystem.cashdeskline.events.SaleStartedEvent; 015 import org.cocome.tradingsystem.cashdeskline.events.SaleSuccessEvent; 016 import org.cocome.tradingsystem.systests.interfaces.IUserDisplay; 017 018 /** 019 * Glue code for the user display. 020 * 021 * @author Benjamin Hummel 022 * @author $Author: hummel $ 023 * @version $Rev: 63 $ 024 * @levd.rating GREEN Rev: 63 025 */ 026 public class UserDisplay extends UpdateReceiver implements IUserDisplay { 027 028 /** Constructor. */ 029 public UserDisplay(TopicSubscriber subscriber) throws JMSException { 030 super(subscriber, RunningTotalChangedEvent.class, 031 CashAmountEnteredEvent.class, 032 ChangeAmountCalculatedEvent.class, 033 ExpressModeDisabledEvent.class, ExpressModeEnabledEvent.class, 034 InvalidCreditCardEvent.class, CreditCardScanFailedEvent.class, 035 ProductBarcodeNotValidEvent.class, SaleSuccessEvent.class, 036 SaleStartedEvent.class); 037 } 038 039 /** {@inheritDoc} */ 040 public boolean isMessageForExpressModeShown() { 041 expectMessage(ExpressModeEnabledEvent.class); 042 return getLastRelevantMessage() instanceof ExpressModeEnabledEvent; 043 } 044 045 /** {@inheritDoc} */ 046 public boolean isMessageForInvalidBarcodeShown() { 047 expectMessage(ProductBarcodeNotValidEvent.class); 048 return getLastRelevantMessage() instanceof ProductBarcodeNotValidEvent; 049 } 050 051 /** {@inheritDoc} */ 052 public boolean isPriceShown(int expectedPrice) { 053 expectMessage(RunningTotalChangedEvent.class); 054 if (getLastRelevantMessage() instanceof RunningTotalChangedEvent) { 055 int price = (int) Math 056 .round(((RunningTotalChangedEvent) getLastRelevantMessage()) 057 .getProductPrice() * 100); 058 return price == expectedPrice; 059 } 060 return false; 061 } 062 063 /** {@inheritDoc} */ 064 public boolean isProductNameShown(String expectedName) { 065 expectMessage(RunningTotalChangedEvent.class); 066 if (getLastRelevantMessage() instanceof RunningTotalChangedEvent) { 067 String name = ((RunningTotalChangedEvent) getLastRelevantMessage()) 068 .getProductName(); 069 return expectedName.equals(name); 070 } 071 return false; 072 } 073 074 /** {@inheritDoc} */ 075 public boolean isMessageForCreditCardNotPossibleShown() { 076 // FIXME: this is currently not supported by the implementation 077 return false; 078 } 079 080 /** {@inheritDoc} */ 081 public boolean isMessageForCreditCardPaymentSuccessfulShown() { 082 expectMessage(SaleSuccessEvent.class); 083 return getLastRelevantMessage() instanceof SaleSuccessEvent; 084 } 085 086 /** {@inheritDoc} */ 087 public boolean isMessageForCreditCardValidationFailedShown() { 088 expectMessage(InvalidCreditCardEvent.class); 089 return getLastRelevantMessage() instanceof InvalidCreditCardEvent; 090 } 091 }