/**
* Axelor Business Solutions
*
* Copyright (C) 2016 Axelor (<http://axelor.com>).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.axelor.apps.tool;
import org.joda.time.LocalDate;
import org.junit.Assert;
import org.junit.Test;
import com.axelor.apps.tool.date.DateTool;
public class TestDateTool {
@Test
public void testGetNbDay() {
Assert.assertEquals(1, DateTool.daysBetween(new LocalDate(), new LocalDate(), false));
Assert.assertEquals(30, DateTool.daysBetween(new LocalDate(2011, 9, 1), new LocalDate(2011, 9, 30), false));
Assert.assertEquals(26, DateTool.daysBetween(new LocalDate(2011, 2, 2), new LocalDate(2011, 2, 27), true));
Assert.assertEquals(26, DateTool.daysBetween(new LocalDate(2011, 2, 2), new LocalDate(2011, 2, 27), false));
Assert.assertEquals(-26, DateTool.daysBetween(new LocalDate(2011, 2, 27), new LocalDate(2011, 2, 2), false));
Assert.assertEquals(-26, DateTool.daysBetween(new LocalDate(2011, 2, 27), new LocalDate(2011, 2, 2), true));
Assert.assertEquals(30, DateTool.daysBetween(new LocalDate(2011, 2, 1), new LocalDate(2011, 2, 28), true));
Assert.assertEquals(1, DateTool.daysBetween(new LocalDate(2011, 7, 30), new LocalDate(2011, 7, 31), true));
Assert.assertEquals(54, DateTool.daysBetween(new LocalDate(2011, 7, 12), new LocalDate(2011, 9, 5), true));
Assert.assertEquals(30, DateTool.daysBetween(new LocalDate(2011, 7, 15), new LocalDate(2011, 8, 14), true));
Assert.assertEquals(30, DateTool.daysBetween(new LocalDate(2011, 7, 1), new LocalDate(2011, 7, 31), true));
Assert.assertEquals(31, DateTool.daysBetween(new LocalDate(2012, 2, 29), new LocalDate(2012, 3, 30), true));
Assert.assertEquals(31, DateTool.daysBetween(new LocalDate(2011, 2, 28), new LocalDate(2011, 3, 30), true));
Assert.assertEquals(33, DateTool.daysBetween(new LocalDate(2012, 2, 28), new LocalDate(2012, 3, 30), true));
Assert.assertEquals(181, DateTool.daysBetween(new LocalDate(2011, 12, 31), new LocalDate(2012,6, 30), true));
Assert.assertEquals(-68, DateTool.daysBetween(new LocalDate(2011, 12, 9), new LocalDate(2011,10, 2), true));
}
@Test
public void testIsProrata() {
//dateFrame1<date1<dateFrame2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,10), new LocalDate(2011,7,30)));
//dateFrame1<date2<dateFrame2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), new LocalDate(2011,7,10)));
//date1<dateFrame1 and dateFrame2<date2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), new LocalDate(2011,7,30)));
//dateFrame1=date1 and dateFrame2=date2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,1), new LocalDate(2011,7,15)));
//date1=dateFrame1
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,1), new LocalDate(2011,7,30)));
//date1=dateFrame2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,15), new LocalDate(2011,7,30)));
//date2=dateFrame1
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), new LocalDate(2011,7,1)));
//date2=dateFrame2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), new LocalDate(2011,7,15)));
//date2=null and date1<dateFrame1
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), null));
//date2=null and date1=dateFrame1
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,1), null));
//date2=null and date1>dateFrame1 and date1<dateFrame2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,10), null));
//date2=null and date1=dateFrame2
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,7,15), null));
//date2=null and date1<dateFrame1
Assert.assertTrue(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), null));
//date2=null and date1>dateFrame2
Assert.assertFalse(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,8,1), null));
//date2<dateFrame1
Assert.assertFalse(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,6,1), new LocalDate(2011,6,30)));
//date1>dateFrame2
Assert.assertFalse(DateTool.isProrata(new LocalDate(2011,7,1), new LocalDate(2011,7,15), new LocalDate(2011,8,1), new LocalDate(2011,8,30)));
}
@Test
public void testGetNbFullMonth() {
Assert.assertEquals(1, DateTool.days360MonthsBetween(new LocalDate(2011,1,1), new LocalDate(2011,2,5)));
Assert.assertEquals(0, DateTool.days360MonthsBetween(new LocalDate(2011,1,1), new LocalDate(2011,1,25)));
Assert.assertEquals(1, DateTool.days360MonthsBetween(new LocalDate(2011,12,15), new LocalDate(2012,1,25)));
Assert.assertEquals(1, DateTool.days360MonthsBetween(new LocalDate(2011,12,15), new LocalDate(2012,1,15)));
Assert.assertEquals(1, DateTool.days360MonthsBetween(new LocalDate(2011,12,15), new LocalDate(2012,1,14)));
Assert.assertEquals(0, DateTool.days360MonthsBetween(new LocalDate(2011,12,15), new LocalDate(2012,1,13)));
Assert.assertEquals(5, DateTool.days360MonthsBetween(new LocalDate(2011,10,7), new LocalDate(2012,3,9)));
Assert.assertEquals(1, DateTool.days360MonthsBetween(new LocalDate(2011,1,31), new LocalDate(2011,2,28)));
Assert.assertEquals(1, DateTool.days360MonthsBetween(new LocalDate(2011,3,31), new LocalDate(2011,4,30)));
Assert.assertEquals(-5, DateTool.days360MonthsBetween(new LocalDate(2012,3,9), new LocalDate(2011,10,7)));
Assert.assertEquals(-1, DateTool.days360MonthsBetween(new LocalDate(2011,4,30), new LocalDate(2011,3,31)));
}
@Test
public void testNextOccurency() {
Assert.assertEquals(new LocalDate(2010,11,9), DateTool.nextOccurency(new LocalDate(2010,10,7), new LocalDate(2011,3,9), 2));
Assert.assertEquals(new LocalDate(2010,11,9), DateTool.nextOccurency(new LocalDate(2010,10,7), new LocalDate(2011,5,9), 2));
Assert.assertEquals(new LocalDate(2010,8,31), DateTool.nextOccurency(new LocalDate(2010,8,7), new LocalDate(2011,4,30), 1));
Assert.assertEquals(new LocalDate(2010,5,9), DateTool.nextOccurency(new LocalDate(2010,3,9), new LocalDate(2011,3,9), 2));
}
@Test
public void testLastOccurency() {
Assert.assertEquals(new LocalDate(2011,3,9), DateTool.lastOccurency(new LocalDate(2010,11,9), new LocalDate(2011,5,9), 4));
Assert.assertEquals(new LocalDate(2011,7,9), DateTool.lastOccurency(new LocalDate(2010,11,9), new LocalDate(2011,9,9), 4));
Assert.assertEquals(new LocalDate(2011,7,9), DateTool.lastOccurency(new LocalDate(2010,11,9), new LocalDate(2011,10,9), 4));
Assert.assertEquals(new LocalDate(2011,1,9), DateTool.lastOccurency(new LocalDate(2010,11,9), new LocalDate(2011,1,9), 2));
Assert.assertEquals(new LocalDate(2011,7,31), DateTool.lastOccurency(new LocalDate(2007,4,30), new LocalDate(2011,8,6), 1));
}
}