### Question:
TravelDocumentActualExpenseLineValidation extends TemDocumentExpenseLineValidation { public boolean validateLodgingAllowanceRules(ActualExpense actualExpense, TravelDocument document) { boolean success = true; if (actualExpense.isLodgingAllowance()) { ExpenseTypeObjectCode expenseTypeCode = actualExpense.getExpenseTypeObjectCode(); KualiDecimal maxAmount = ObjectUtils.isNotNull(expenseTypeCode) && ObjectUtils.isNotNull(expenseTypeCode.getMaximumAmount()) ? expenseTypeCode.getMaximumAmount() : KualiDecimal.ZERO; GlobalVariables.getMessageMap().putInfo(TemPropertyConstants.TEM_ACTUAL_EXPENSE_NOTCE, TemKeyConstants.INFO_TEM_ACTUAL_EXPENSE_LODGING_ALLOWANCE, maxAmount.toString()); if (isLodgingEntered(actualExpense, document)) { success = false; GlobalVariables.getMessageMap().putError(TemPropertyConstants.EXPENSE_TYPE_CODE, TemKeyConstants.ERROR_ACTUAL_EXPENSE_LODGING_ENTERED); } if (isPerDiemLodgingEntered(actualExpense.getExpenseDate(), document.getPerDiemExpenses())) { GlobalVariables.getMessageMap().putWarning(TemPropertyConstants.TEM_ACTUAL_EXPENSE_NOTCE, TemKeyConstants.WARNING_PERDIEM_EXPENSE_LODGING_ENTERED); } } return success; }  @Override boolean validate(AttributedDocumentEvent event); boolean validateExpenses(ActualExpense expense, TravelDocument document); boolean validateGeneralRules(ActualExpense actualExpense, TravelDocument document); boolean validateExpenseDetail(ActualExpense actualExpense); boolean validateMaximumAmountRules(ActualExpense actualExpense, TravelDocument document); boolean validateLodgingRules(ActualExpense actualExpense, TravelDocument document); boolean validateLodgingAllowanceRules(ActualExpense actualExpense, TravelDocument document); ActualExpense getActualExpenseForValidation(); void setActualExpenseForValidation(ActualExpense actualExpenseForValidation); boolean isCurrentExpenseInCollection(); void setCurrentExpenseInCollection(boolean currentExpenseInCollection);  }### Answer:
@Test public void testValidateLodgingAllowanceRules(){ }