Package com.betfair.testing.utils.cougar.assertions

Source Code of com.betfair.testing.utils.cougar.assertions.TimeStampAssertion

/*
* Copyright 2013, The Sporting Exchange Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.betfair.testing.utils.cougar.assertions;


import com.betfair.testing.utils.cougar.misc.AggregatedStepExpectedOutputMetaData;
import com.betfair.testing.utils.cougar.misc.NameValuePair;

import java.sql.Timestamp;
import java.util.GregorianCalendar;
import java.util.List;

public class TimeStampAssertion implements IAssertion {

  @Override
  public void execute(String message, Object passedExpObject, Object passedActObject, AggregatedStepExpectedOutputMetaData outputMetaData) throws AssertionError {

    Timestamp expectedTimestamp;

    //It is still possible to recieve string instead of timestamp at this point
    //so reflect
    if (passedExpObject.getClass() != Timestamp.class) {
      expectedTimestamp = convertObjectToTimestamp(passedExpObject.getClass(), passedExpObject);
    } else {
      expectedTimestamp = (Timestamp)passedExpObject;
    }
    Timestamp actualTimestamp = (Timestamp)passedActObject;

    if (expectedTimestamp==null) {
      AssertionUtils.jettAssertNull("Expected timestamp is null:", actualTimestamp);
    } else {
      if (actualTimestamp == null) {
        AssertionUtils.actionFail("Returned timestamp is null");
      } else {
        String assertionMessage = "Check if Timestamp within expected tolerance ("+AssertionUtils.getDateTolerance()+"ms):";
                AssertionUtils.jettAssertDatesWithTolerance(assertionMessage, expectedTimestamp, actualTimestamp);
      }
    }

  }

  @Override
  public Timestamp preProcess(Object actualObject, AggregatedStepExpectedOutputMetaData expectedObjectMetaData) throws AssertionError {

    List<NameValuePair> nvPairs = expectedObjectMetaData.getMetaDataAtIndex(0).getNameValuePairs();
    if (nvPairs.size() > 1) {
      throw new IllegalStateException("Only expecting one NV pair ... actual size is " + nvPairs.size());
    }

    NameValuePair nvPair = nvPairs.get(0);
    Object inputObject = nvPair.getValue();
    Class inputObjectClass = inputObject.getClass();

    return convertObjectToTimestamp(inputObjectClass, inputObject);
  }

  private Timestamp convertObjectToTimestamp (Class inputObjectClass, Object inputObject) {
    //Accepted input types are java.sql.Timestamp, String and Long
    if (inputObjectClass.equals(Timestamp.class)) {
      return (Timestamp)inputObject;
    } else if (inputObjectClass.equals(Long.class)) {
      return new Timestamp((Long)inputObject);
    } else if (inputObjectClass.equals(String.class)) {
      return (Timestamp)Reflect.getWrappedValue(Timestamp.class, (String) inputObject);
    } else if (inputObjectClass.equals(GregorianCalendar.class)) {
      GregorianCalendar gregorianCalendar = (GregorianCalendar)inputObject;
      return new Timestamp(gregorianCalendar.getTimeInMillis());
    } else {
      throw new IllegalStateException("Expected Value object is not of an accepted type");
    }
  }


}
TOP

Related Classes of com.betfair.testing.utils.cougar.assertions.TimeStampAssertion

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.