Skip to content

Commit

Permalink
Fix and test Period.plus/minus
Browse files Browse the repository at this point in the history
  • Loading branch information
jodastephen committed Mar 12, 2013
1 parent 8f37a89 commit f1ef830
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/main/java/org/threeten/bp/Period.java
Original file line number Diff line number Diff line change
Expand Up @@ -543,9 +543,9 @@ public Period plusDays(long daysToAdd) {
*/
public Period minus(Period amountToSubtract) {
return create(
Jdk8Methods.safeAdd(years, amountToSubtract.years),
Jdk8Methods.safeAdd(months, amountToSubtract.months),
Jdk8Methods.safeAdd(days, amountToSubtract.days));
Jdk8Methods.safeSubtract(years, amountToSubtract.years),
Jdk8Methods.safeSubtract(months, amountToSubtract.months),
Jdk8Methods.safeSubtract(days, amountToSubtract.days));
}

/**
Expand Down
52 changes: 52 additions & 0 deletions src/test/java/org/threeten/bp/TestPeriod.java
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,32 @@ public void test_withDays_toZero() {
assertSame(test.withDays(0), Period.ZERO);
}

//-----------------------------------------------------------------------
// plus(Period)
//-----------------------------------------------------------------------
@DataProvider(name="plus")
Object[][] data_plus() {
return new Object[][] {
{pymd(0, 0, 0), pymd(0, 0, 0), pymd(0, 0, 0)},
{pymd(0, 0, 0), pymd(5, 0, 0), pymd(5, 0, 0)},
{pymd(0, 0, 0), pymd(-5, 0, 0), pymd(-5, 0, 0)},
{pymd(0, 0, 0), pymd(0, 5, 0), pymd(0, 5, 0)},
{pymd(0, 0, 0), pymd(0, -5, 0), pymd(0, -5, 0)},
{pymd(0, 0, 0), pymd(0, 0, 5), pymd(0, 0, 5)},
{pymd(0, 0, 0), pymd(0, 0, -5), pymd(0, 0, -5)},
{pymd(0, 0, 0), pymd(2, 3, 4), pymd(2, 3, 4)},
{pymd(0, 0, 0), pymd(-2, -3, -4), pymd(-2, -3, -4)},

{pymd(4, 5, 6), pymd(2, 3, 4), pymd(6, 8, 10)},
{pymd(4, 5, 6), pymd(-2, -3, -4), pymd(2, 2, 2)},
};
}

@Test(dataProvider="plus")
public void test_plus(Period base, Period add, Period expected) {
assertEquals(base.plus(add), expected);
}

//-----------------------------------------------------------------------
// plusYears()
//-----------------------------------------------------------------------
Expand Down Expand Up @@ -437,6 +463,32 @@ public void test_plusDays_overflowTooSmall() {
test.plusDays(-1);
}

//-----------------------------------------------------------------------
// minus(Period)
//-----------------------------------------------------------------------
@DataProvider(name="minus")
Object[][] data_minus() {
return new Object[][] {
{pymd(0, 0, 0), pymd(0, 0, 0), pymd(0, 0, 0)},
{pymd(0, 0, 0), pymd(5, 0, 0), pymd(-5, 0, 0)},
{pymd(0, 0, 0), pymd(-5, 0, 0), pymd(5, 0, 0)},
{pymd(0, 0, 0), pymd(0, 5, 0), pymd(0, -5, 0)},
{pymd(0, 0, 0), pymd(0, -5, 0), pymd(0, 5, 0)},
{pymd(0, 0, 0), pymd(0, 0, 5), pymd(0, 0, -5)},
{pymd(0, 0, 0), pymd(0, 0, -5), pymd(0, 0, 5)},
{pymd(0, 0, 0), pymd(2, 3, 4), pymd(-2, -3, -4)},
{pymd(0, 0, 0), pymd(-2, -3, -4), pymd(2, 3, 4)},

{pymd(4, 5, 6), pymd(2, 3, 4), pymd(2, 2, 2)},
{pymd(4, 5, 6), pymd(-2, -3, -4), pymd(6, 8, 10)},
};
}

@Test(dataProvider="minus")
public void test_minus(Period base, Period subtract, Period expected) {
assertEquals(base.minus(subtract), expected);
}

//-----------------------------------------------------------------------
// minusYears()
//-----------------------------------------------------------------------
Expand Down

0 comments on commit f1ef830

Please sign in to comment.