Hong-Phuc Bui
2025-01-16 2889de7f0c2d587a17fbd322af57c29e84238620
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import test from "ava";
import {Calendar} from "../../src/lib/calendar-v2.js";
 
test("Calendar: first day of week start as defined", t =>{
    let firstDayOfWeek = 1;
    Calendar.firstDayOfWeek = firstDayOfWeek;
    let cal = Calendar.buildCalendar(1, 1970);
    let expectedWeekDays = [1, 2, 3, 4, 5, 6, 0];
    t.deepEqual(cal.weekDays, expectedWeekDays);
    t.is(firstDayOfWeek, Calendar.firstDayOfWeek);
});
 
test("Calendar: first week contains correct number of spaces", t =>{
    console.log("Calendar: first week contains correct number of spaces");
    let firstDayOfWeek = 1;
    Calendar.firstDayOfWeek = firstDayOfWeek;
    let cal = Calendar.buildCalendar(1, 1970);
    let firstWeek = cal.weeks[0];
    let expectedFirstWeek = ['', '', '', 1, 2, 3, 4];
    t.deepEqual(firstWeek, expectedFirstWeek);
});
 
test("Calendar: Test Jan. 2021, America Format", t=>{
    Calendar.firstDayOfWeek = 0;
 
    let cal = Calendar.buildCalendar(1, 2021);
    let expectedCal = {
        month: 1,
        year: 2021,
        weekDays: [0, 1, 2, 3, 4, 5, 6],
        weeks: [
            ['', '', '', '','',   1,  2],
            [ 3,  4,  5, 6,   7,  8,  9],
            [10, 11, 12, 13, 14, 15, 16],
            [17, 18, 19, 20, 21, 22, 23],
            [24, 25, 26, 27, 28, 29, 30],
            [31]
        ]
    };
    t.deepEqual(cal, expectedCal);
});
 
test("Calendar: buildCalendar.apply() is a valid call", t=>{
    Calendar.firstDayOfWeek = 0;
 
    let cal = Calendar.buildCalendar.apply(undefined, [1, 2021]);
    let expectedCal = {
        month: 1,
        year: 2021,
        weekDays: [0, 1, 2, 3, 4, 5, 6],
        weeks: [
            ['', '', '', '','',   1,  2],
            [ 3,  4,  5, 6,   7,  8,  9],
            [10, 11, 12, 13, 14, 15, 16],
            [17, 18, 19, 20, 21, 22, 23],
            [24, 25, 26, 27, 28, 29, 30],
            [31]
        ]
    };
    t.deepEqual(cal, expectedCal);
});
 
test("Calendar: buildCalendar.call() is a valid call", t=>{
    Calendar.firstDayOfWeek = 0;
 
    let cal = Calendar.buildCalendar.call(undefined, 1, 2021);
    let expectedCal = {
        month: 1,
        year: 2021,
        weekDays: [0, 1, 2, 3, 4, 5, 6],
        weeks: [
            ['', '', '', '','',   1,  2],
            [ 3,  4,  5, 6,   7,  8,  9],
            [10, 11, 12, 13, 14, 15, 16],
            [17, 18, 19, 20, 21, 22, 23],
            [24, 25, 26, 27, 28, 29, 30],
            [31]
        ]
    };
    t.deepEqual(cal, expectedCal);
});
 
 
test("Calendar: first day is a Sunday, months start with Monday", t => {
    Calendar.firstDayOfWeek = 1;
    let cal = Calendar.buildCalendar(5, 2022);
    let expectedCal = {
        month:5,
        year:2022,
        weekDays:[1,2,3,4,5,6,0],
        weeks:[
            ["","","","","","", 1],
            [ 2, 3, 4, 5, 6, 7, 8],
            [ 9,10,11,12,13,14,15],
            [16,17,18,19,20,21,22],
            [23,24,25,26,27,28,29],
            [30,31]
        ]
    };
    t.deepEqual(cal, expectedCal);
});
 
test("Calendar: do not append empty week", t=>{
    Calendar.firstDayOfWeek = 1;
    let cal = Calendar.buildCalendar(10, 2021);
    let expectedCal = {
        month: 10,
        year: 2021,
        weekDays:[1,2,3,4,5,6,0],
        weeks:[
            ["","","","", 1, 2, 3],
            [ 4, 5, 6, 7, 8, 9,10],
            [11,12,13,14,15,16,17],
            [18,19,20,21,22,23,24],
            [25,26,27,28,29,30,31]/*next week will be empty, so do not append it*/
        ]
    };
    t.deepEqual(cal, expectedCal);
});