diff --git a/ProgressOfTesting.txt b/ProgressOfTesting.txt index 9387d85..5c34b22 100644 --- a/ProgressOfTesting.txt +++ b/ProgressOfTesting.txt @@ -1,6 +1,6 @@ [ ] 未开始测试 - 25 (35.71%) -[-] 测试未完成 - 13 (18.57%) -[Y] 测试完成 - 20 (28.57%) +[-] 测试未完成 - 12 (17.14%) +[Y] 测试完成 - 21 (30.00%) [x] 无需测试 - 12 (17.14%) xyz.zhouxy.plusone.commons @@ -79,7 +79,7 @@ xyz.zhouxy.plusone.commons │ SQL.java [ ] │ ├───time - │ Quarter.java [-] + │ Quarter.java [Y] │ YearQuarter.java [-] │ └───util diff --git a/src/main/java/xyz/zhouxy/plusone/commons/time/Quarter.java b/src/main/java/xyz/zhouxy/plusone/commons/time/Quarter.java index cbc38e1..71efd48 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/time/Quarter.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/time/Quarter.java @@ -116,12 +116,12 @@ public enum Quarter implements IWithIntCode { // computes - public Quarter plus(long quarters) { // TODO 单元测试 + public Quarter plus(long quarters) { final int amount = (int) ((quarters % 4) + 4); return ENUMS[(ordinal() + amount) % 4]; } - public Quarter minus(long quarters) { // TODO 单元测试 + public Quarter minus(long quarters) { return plus(-(quarters % 4)); } diff --git a/src/test/java/xyz/zhouxy/plusone/commons/time/QuarterTests.java b/src/test/java/xyz/zhouxy/plusone/commons/time/QuarterTests.java index 69637a8..75f583f 100644 --- a/src/test/java/xyz/zhouxy/plusone/commons/time/QuarterTests.java +++ b/src/test/java/xyz/zhouxy/plusone/commons/time/QuarterTests.java @@ -240,4 +240,116 @@ class QuarterTests { firstDayOfYear = Quarter.Q4.firstDayOfYear(false); assertEquals(1 + (31 + 28 + 31) + (30 + 31 + 30) + (31 + 30 + 31), firstDayOfYear); } + + @Test + void testPlusZeroAndPositiveRealNumbers() { + for (int i = 0; i < 100; i += 4) { + assertEquals(Quarter.Q1, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q2, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q3, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q4, Quarter.Q4.plus(i)); + } + for (int i = 1; i < 100 + 1; i += 4) { + assertEquals(Quarter.Q2, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q3, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q4, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q1, Quarter.Q4.plus(i)); + } + for (int i = 2; i < 100 + 2; i += 4) { + assertEquals(Quarter.Q3, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q4, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q1, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q2, Quarter.Q4.plus(i)); + } + for (int i = 3; i < 100 + 3; i += 4) { + assertEquals(Quarter.Q4, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q1, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q2, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q3, Quarter.Q4.plus(i)); + } + } + + @Test + void testPlusZeroAndNegativeNumber() { + for (int i = 0; i > -100; i -= 4) { + assertEquals(Quarter.Q1, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q2, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q3, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q4, Quarter.Q4.plus(i)); + } + for (int i = -1; i > -(100 + 1); i -= 4) { + assertEquals(Quarter.Q4, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q1, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q2, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q3, Quarter.Q4.plus(i)); + } + for (int i = -2; i > -(100 + 2); i -= 4) { + assertEquals(Quarter.Q3, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q4, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q1, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q2, Quarter.Q4.plus(i)); + } + for (int i = -3; i > -(100 + 3); i -= 4) { + assertEquals(Quarter.Q2, Quarter.Q1.plus(i)); + assertEquals(Quarter.Q3, Quarter.Q2.plus(i)); + assertEquals(Quarter.Q4, Quarter.Q3.plus(i)); + assertEquals(Quarter.Q1, Quarter.Q4.plus(i)); + } + } + + @Test + void testMinusZeroAndNegativeNumber() { + for (int i = 0; i < 100; i += 4) { + assertEquals(Quarter.Q1, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q2, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q3, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q4, Quarter.Q4.minus(i)); + } + for (int i = 1; i < 100 + 1; i += 4) { + assertEquals(Quarter.Q4, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q1, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q2, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q3, Quarter.Q4.minus(i)); + } + for (int i = 2; i < 100 + 2; i += 4) { + assertEquals(Quarter.Q3, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q4, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q1, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q2, Quarter.Q4.minus(i)); + } + for (int i = 3; i < 100 + 3; i += 4) { + assertEquals(Quarter.Q2, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q3, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q4, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q1, Quarter.Q4.minus(i)); + } + } + + @Test + void testMinusZeroAndPositiveRealNumbers() { + for (int i = 0; i > -100; i -= 4) { + assertEquals(Quarter.Q1, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q2, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q3, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q4, Quarter.Q4.minus(i)); + } + for (int i = -1; i > -(100 + 1); i -= 4) { + assertEquals(Quarter.Q2, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q3, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q4, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q1, Quarter.Q4.minus(i)); + } + for (int i = -2; i > -(100 + 2); i -= 4) { + assertEquals(Quarter.Q3, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q4, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q1, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q2, Quarter.Q4.minus(i)); + } + for (int i = -3; i > -(100 + 3); i -= 4) { + assertEquals(Quarter.Q4, Quarter.Q1.minus(i)); + assertEquals(Quarter.Q1, Quarter.Q2.minus(i)); + assertEquals(Quarter.Q2, Quarter.Q3.minus(i)); + assertEquals(Quarter.Q3, Quarter.Q4.minus(i)); + } + } }