/*! ******************************************************************************
 *
 * Pentaho Data Integration
 *
 * Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
 *
 *******************************************************************************
 *
 * 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 org.pentaho.di.trans.steps.loadsave.validator;

import java.util.Date;
import java.util.Random;

public class DateLoadSaveValidator implements FieldLoadSaveValidator<Date> {

  @Override
  public Date getTestObject() {
    boolean future = new Random().nextBoolean();
    Long time = System.currentTimeMillis();
    if ( future ) {
      time += new Random().nextInt( time.intValue() ); // Up to 2*N years after 1970
    } else {
      time -= new Random().nextInt( time.intValue() ); // Back to January 1 1970
    }
    return new Date( time );
  }

  @Override
  public boolean validateTestObject( Date testObject, Object actual ) {
    if ( !( actual instanceof Date ) ) {
      return false;
    }
    return testObject.equals( actual );
  }

}

/*! ******************************************************************************
 *
 * Pentaho Data Integration
 *
 * Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
 *
 *******************************************************************************
 *
 * 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 org.pentaho.di.trans.steps.loadsave.validator;

import java.util.Date;
import java.util.Random;

public class DateLoadSaveValidator implements FieldLoadSaveValidator<Date> {

  @Override
  public Date getTestObject() {
    Long time = System.currentTimeMillis();
    // forward or back less than a month
    time += new Random().nextInt();
    return new Date( time );
  }

  @Override
  public boolean validateTestObject( Date testObject, Object actual ) {
    if ( !( actual instanceof Date ) ) {
      return false;
    }
    return testObject.equals( actual );
  }

}

fix SlaveServer(Trans|Job)StatusTest.testSerialization (#2672)