/*
* Copyright 2014 DataGenerator Contributors
*
* 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.finra.datagenerator.engine.scxml.tags.boundary;
import org.junit.Assert;
import org.junit.Test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* Negative tests for date type
*/
public class NegativeBoundHiveDateTest {
/**
* Test for lower bound date
*/
@Test
public void earliestTest() {
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setEarliest("1970-01-01");
Assert.assertEquals(tag.getEarliest(), "1970-01-01");
tag.setEarliest("2015-01-01");
Assert.assertEquals(tag.getEarliest(), "2015-01-01");
}
/**
* Test for lower bound date
*/
@Test
public void latestDateTest() {
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setLatest("1970-01-01");
Assert.assertEquals(tag.getLatest(), "1970-01-01");
tag.setLatest("2015-01-01");
Assert.assertEquals(tag.getLatest(), "2015-01-01");
}
/**
* testing leap year
*/
@Test
public void leapYearTest() {
Map<String, String> variableDomains = new HashMap<>();
List<Map<String, String>> listOfMaps = new LinkedList<>();
listOfMaps.add(variableDomains);
NegativeBoundHiveDate dateTest = new NegativeBoundHiveDate();
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setName("name");
tag.setEarliest("2016-03-01");
tag.setLatest("2016-02-28");
List<Map<String, String>> newList = dateTest.pipelinePossibleStates(tag, listOfMaps);
Assert.assertEquals(newList.get(0).get("name"), "2016-02-29");
Assert.assertEquals(newList.get(1).get("name"), "2016-02-29");
}
/**
* testing lower bound
*/
@Test
public void lowerBoundTest2() {
Map<String, String> variableDomains = new HashMap<>();
List<Map<String, String>> listOfMaps = new LinkedList<>();
listOfMaps.add(variableDomains);
NegativeBoundHiveDate dateTest = new NegativeBoundHiveDate();
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setName("name");
Calendar nextDate = Calendar.getInstance();
nextDate.add(Calendar.DATE, +1);
String next = new SimpleDateFormat("yyyy-MM-dd").format(nextDate.getTime());
String day = next.substring(8, 10);
String month = next.substring(5, 7);
String year = next.substring(0, 4);
List<Map<String, String>> newList = dateTest.pipelinePossibleStates(tag, listOfMaps);
Assert.assertEquals(newList.get(0).get("name"), "1969-12-31");
Assert.assertEquals(newList.get(1).get("name"), next);
Assert.assertEquals(newList.get(2).get("name"), month + "-" + day + "-" + year);
}
/**
* test with provided min and max dates
*/
@Test
public void dateTest() {
Map<String, String> variableDomains = new HashMap<>();
List<Map<String, String>> listOfMaps = new LinkedList<>();
listOfMaps.add(variableDomains);
NegativeBoundHiveDate dateTest = new NegativeBoundHiveDate();
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setName("name");
tag.setEarliest("2012-12-31");
tag.setLatest("2014-01-01");
List<Map<String, String>> newList = dateTest.pipelinePossibleStates(tag, listOfMaps);
Assert.assertEquals(newList.get(0).get("name"), "2012-12-30");
Assert.assertEquals(newList.get(1).get("name"), "2014-01-02");
Assert.assertEquals(newList.get(2).get("name"), "01-02-2014");
Assert.assertEquals(newList.size(), 4);
}
/**
* test for setName() and getName()
*/
@Test
public void nameTest() {
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setName("date_test");
Assert.assertEquals(tag.getName(), "date_test");
tag.setName("date_test2");
Assert.assertEquals(tag.getName(), "date_test2");
}
/**
* test for setName() and getName()
*/
@Test
public void nullTest() {
NegativeBoundHiveDate.NegativeBoundHiveDateTag tag = new NegativeBoundHiveDate.NegativeBoundHiveDateTag();
tag.setNullable("true");
Assert.assertEquals(tag.getNullable(), "true");
tag.setNullable("false");
Assert.assertEquals(tag.getNullable(), "false");
}
}