]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
quarter setter
authorAndrei Cocorean <andrei-cocorean@users.noreply.github.com>
Sun, 6 Apr 2014 17:15:19 +0000 (19:15 +0200)
committerAndrei Cocorean <andrei-cocorean@users.noreply.github.com>
Sun, 6 Apr 2014 18:08:12 +0000 (20:08 +0200)
moment.js
test/moment/quarter.js

index 7c9e5abbfb2fbf28f3916c09c7ae9f593318c608..256d96c1d316dd386b44f8bf556262c55f3738ad 100644 (file)
--- a/moment.js
+++ b/moment.js
             return input == null ? dayOfYear : this.add("d", (input - dayOfYear));
         },
 
-        quarter : function () {
-            return Math.ceil((this.month() + 1.0) / 3.0);
+        quarter : function (input) {
+            return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
         },
 
         weekYear : function (input) {
     moment.fn.months = moment.fn.month;
     moment.fn.weeks = moment.fn.week;
     moment.fn.isoWeeks = moment.fn.isoWeek;
+    moment.fn.quarters = moment.fn.quarter;
 
     // add aliased format methods
     moment.fn.toJSON = moment.fn.toISOString;
index cf3e3fe75e1ae12bf2ebe13dbe684cdb850a4537..4d4dfec058e9719abc18f89196f7d1c3617181ab 100644 (file)
@@ -8,7 +8,7 @@ exports.quarter = {
         done();
     },
 
-    "library quarter" : function (test) {
+    "library quarter getter" : function (test) {
         test.expect(7);
 
         test.equal(moment([1985, 1,  4]).quarter(), 1, "Feb  4 1985 is Q1");
@@ -19,6 +19,119 @@ exports.quarter = {
         test.equal(moment([2001, 11, 12]).quarter(), 4, "Dec 12 2001 is Q4");
         test.equal(moment([2000, 0,  2]).quarter(), 1, "Jan  2 2000 is Q1");
 
+        test.done();
+    },
+
+    "quarter setter singular" : function (test) {
+        var m;
+        test.expect(4);
+
+        m = moment([2014, 4, 11]);
+        test.equal(m.quarter(2).month(), 4, "set same quarter");
+        test.equal(m.quarter(3).month(), 7, "set 3rd quarter");
+        test.equal(m.quarter(1).month(), 1, "set 1st quarter");
+        test.equal(m.quarter(4).month(), 10, "set 4th quarter");
+
+        test.done();
+    },
+
+    "quarter setter plural" : function (test) {
+        var m;
+        test.expect(4);
+
+        m = moment([2014, 4, 11]);
+        test.equal(m.quarters(2).month(), 4, "set same quarter");
+        test.equal(m.quarters(3).month(), 7, "set 3rd quarter");
+        test.equal(m.quarters(1).month(), 1, "set 1st quarter");
+        test.equal(m.quarters(4).month(), 10, "set 4th quarter");
+
+        test.done();
+    },
+
+    "quarter setter programmatic" : function (test) {
+        var m;
+        test.expect(4);
+
+        m = moment([2014, 4, 11]);
+        test.equal(m.set("quarter", 2).month(), 4, "set same quarter");
+        test.equal(m.set("quarter", 3).month(), 7, "set 3rd quarter");
+        test.equal(m.set("quarter", 1).month(), 1, "set 1st quarter");
+        test.equal(m.set("quarter", 4).month(), 10, "set 4th quarter");
+
+        test.done();
+    },
+
+    "quarter setter programmatic plural" : function (test) {
+        var m;
+        test.expect(4);
+
+        m = moment([2014, 4, 11]);
+        test.equal(m.set("quarters", 2).month(), 4, "set same quarter");
+        test.equal(m.set("quarters", 3).month(), 7, "set 3rd quarter");
+        test.equal(m.set("quarters", 1).month(), 1, "set 1st quarter");
+        test.equal(m.set("quarters", 4).month(), 10, "set 4th quarter");
+
+        test.done();
+    },
+
+    "quarter setter programmatic abbr" : function (test) {
+        var m;
+        test.expect(4);
+
+        m = moment([2014, 4, 11]);
+        test.equal(m.set("Q", 2).month(), 4, "set same quarter");
+        test.equal(m.set("Q", 3).month(), 7, "set 3rd quarter");
+        test.equal(m.set("Q", 1).month(), 1, "set 1st quarter");
+        test.equal(m.set("Q", 4).month(), 10, "set 4th quarter");
+
+        test.done();
+    },
+
+    "quarter setter only month changes" : function (test) {
+        var m;
+        test.expect(7);
+
+        m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4);
+        test.equal(m.year(), 2014, "keep year");
+        test.equal(m.month(), 10, "set month");
+        test.equal(m.date(), 11, "keep date");
+        test.equal(m.hour(), 1, "keep hour");
+        test.equal(m.minute(), 2, "keep minutes");
+        test.equal(m.second(), 3, "keep seconds");
+        test.equal(m.millisecond(), 4, "keep milliseconds");
+
+        test.done();
+    },
+
+    "quarter setter bubble to next year" : function (test) {
+        var m;
+        test.expect(7);
+
+        m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7);
+        test.equal(m.year(), 2015, "year bubbled");
+        test.equal(m.month(), 7, "set month");
+        test.equal(m.date(), 11, "keep date");
+        test.equal(m.hour(), 1, "keep hour");
+        test.equal(m.minute(), 2, "keep minutes");
+        test.equal(m.second(), 3, "keep seconds");
+        test.equal(m.millisecond(), 4, "keep milliseconds");
+
+        test.done();
+    },
+
+    "quarter setter bubble to previous year" : function (test) {
+        var m;
+        test.expect(7);
+
+        m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3);
+        test.equal(m.year(), 2013, "year bubbled");
+        test.equal(m.month(), 1, "set month");
+        test.equal(m.date(), 11, "keep date");
+        test.equal(m.hour(), 1, "keep hour");
+        test.equal(m.minute(), 2, "keep minutes");
+        test.equal(m.second(), 3, "keep seconds");
+        test.equal(m.millisecond(), 4, "keep milliseconds");
+
         test.done();
     }
 };