trackler 2.0.3.4 → 2.0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/common/exercises/all-your-base/canonical-data.json +21 -21
- data/common/exercises/wordy/description.md +24 -38
- data/common/exercises/wordy/metadata.yml +1 -1
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/config.json +10 -0
- data/tracks/c/exercises/meetup/makefile +15 -0
- data/tracks/c/exercises/meetup/src/example.c +139 -0
- data/tracks/c/exercises/meetup/src/example.h +7 -0
- data/tracks/c/exercises/meetup/test/test_meetup.c +223 -0
- data/tracks/c/exercises/meetup/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/meetup/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/meetup/test/vendor/unity_internals.h +701 -0
- data/tracks/crystal/config.json +12 -0
- data/tracks/crystal/exercises/pascals-triangle/spec/pascals_triangle_spec.cr +30 -0
- data/tracks/crystal/exercises/pascals-triangle/src/example.cr +19 -0
- data/tracks/crystal/exercises/pascals-triangle/src/pascals_triangle.cr +1 -0
- data/tracks/crystal/exercises/run-length-encoding/spec/run_length_encoding_spec.cr +36 -0
- data/tracks/crystal/exercises/run-length-encoding/src/example.cr +40 -0
- data/tracks/crystal/src/generator/exercises/pascals-triangle.cr +58 -0
- data/tracks/crystal/src/generator/exercises/run_length_encoding.cr +42 -0
- data/tracks/javascript/config.json +8 -1
- data/tracks/javascript/exercises/all-your-base/all-your-base.spec.js +141 -0
- data/tracks/javascript/exercises/all-your-base/example.js +59 -0
- data/tracks/javascript/exercises/word-count/example.js +5 -5
- data/tracks/javascript/exercises/word-count/word-count.spec.js +23 -8
- data/tracks/lua/SETUP.md +60 -7
- data/tracks/lua/config.json +9 -0
- data/tracks/lua/exercises/say/example.lua +4 -4
- data/tracks/lua/exercises/variable-length-quantity/example.lua +36 -0
- data/tracks/lua/exercises/variable-length-quantity/variable-length-quantity_spec.lua +73 -0
- data/tracks/objective-c/.travis.yml +1 -0
- data/tracks/objective-c/config.json +8 -0
- data/tracks/objective-c/docs/TESTS.md +1 -1
- data/tracks/objective-c/exercises/transpose/TransposeExample.h +7 -0
- data/tracks/objective-c/exercises/transpose/TransposeExample.m +59 -0
- data/tracks/objective-c/exercises/transpose/TransposeTest.m +150 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/ocaml/.gitignore +1 -0
- data/tracks/ocaml/tools/test-generator/Makefile +3 -0
- data/tracks/ocaml/tools/test-generator/src/controller.ml +11 -16
- data/tracks/ocaml/tools/test-generator/src/model.ml +4 -0
- data/tracks/ocaml/tools/test-generator/src/parser.ml +8 -1
- data/tracks/ocaml/tools/test-generator/src/special_cases.ml +5 -0
- data/tracks/ocaml/tools/test-generator/templates/all-your-base/template.ml +16 -0
- data/tracks/ocaml/tools/test-generator/test/model_test.ml +2 -0
- data/tracks/ocaml/tools/test-generator/test/parser_test.ml +8 -0
- data/tracks/perl5/docs/RESOURCES.md +57 -0
- data/tracks/perl5/exercises/hamming/Example.pm +7 -0
- data/tracks/perl5/exercises/hamming/hamming.t +17 -4
- data/tracks/perl5/exercises/rna-transcription/rna.t +4 -4
- data/tracks/perl6/.gitignore +2 -0
- data/tracks/perl6/config.json +5 -0
- data/tracks/perl6/exercises/phone-number/Example.pm +30 -0
- data/tracks/perl6/exercises/phone-number/cases.json +47 -0
- data/tracks/perl6/exercises/phone-number/phone.t +48 -0
- data/tracks/purescript/.gitignore +8 -0
- data/tracks/purescript/config.json +8 -3
- data/tracks/purescript/exercises/hello-world/bower.json +17 -0
- data/tracks/purescript/exercises/hello-world/examples/src/HelloWorld.purs +8 -0
- data/tracks/purescript/exercises/hello-world/src/HelloWorld.purs +6 -0
- data/tracks/purescript/exercises/hello-world/test/Main.purs +18 -0
- data/tracks/scala/exercises/leap/HINTS.md +4 -0
- data/tracks/scala/exercises/robot-name/HINTS.md +5 -0
- data/tracks/swift/docs/INSTALLATION.md +4 -1
- data/tracks/swift/exercises/accumulate/AccumulateTest.swift +1 -1
- data/tracks/swift/exercises/binary/BinaryExample.swift +4 -1
- data/tracks/swift/exercises/crypto-square/CryptoSquareExample.swift +3 -2
- data/tracks/swift/exercises/leap/LeapExample.swift +1 -3
- data/tracks/swift/exercises/pascals-triangle/PascalsTriangleTest.swift +1 -1
- data/tracks/swift/exercises/poker/PokerExample.swift +3 -3
- data/tracks/swift/exercises/poker/PokerTest.swift +38 -38
- data/tracks/swift/exercises/saddle-points/SaddlePointsTest.swift +1 -1
- data/tracks/swift/exercises/scrabble-score/ScrabbleScoreExample.swift +6 -3
- data/tracks/swift/exercises/series/SeriesTest.swift +1 -1
- data/tracks/swift/exercises/simple-linked-list/SimpleLinkedListExample.swift +2 -2
- data/tracks/swift/exercises/space-age/SpaceAgeExample.swift +10 -12
- data/tracks/swift/exercises/strain/StrainTest.swift +1 -1
- data/tracks/swift/exercises/tournament/TournamentExample.swift +2 -2
- data/tracks/swift/exercises/triangle/TriangleExample.swift +7 -3
- data/tracks/swift/exercises/wordy/WordyExample.swift +1 -2
- metadata +34 -3
- data/tracks/purescript/exercises/.keep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7246bea41baef8aa38999af188d6a25fb21c359
|
4
|
+
data.tar.gz: c9b3666bcd5f4c51d3251b9fb1f97048425ed156
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e45c5da080f94f7723a6f32aaabf00005108f74e1000a03436904fa1b7b8f283f3b1c66c2923a3d38ce29d41607c4d61df35986c419faafdb33f94135c5e68a
|
7
|
+
data.tar.gz: 5e0c721dd96f6beb5e4e4a7e7dde487d74161ff94bb861f62dfe7928fa3fce7a3b45aef1a824c2bd5452a0bdb16295e51ec8e462f33e663802d83633f88f498c
|
@@ -23,126 +23,126 @@
|
|
23
23
|
, "input_base" : 2
|
24
24
|
, "input_digits" : [1]
|
25
25
|
, "output_base" : 10
|
26
|
-
, "
|
26
|
+
, "expected" : [1]
|
27
27
|
},
|
28
28
|
{ "description" : "binary to single decimal"
|
29
29
|
, "input_base" : 2
|
30
30
|
, "input_digits" : [1, 0, 1]
|
31
31
|
, "output_base" : 10
|
32
|
-
, "
|
32
|
+
, "expected" : [5]
|
33
33
|
},
|
34
34
|
{ "description" : "single decimal to binary"
|
35
35
|
, "input_base" : 10
|
36
36
|
, "input_digits" : [5]
|
37
37
|
, "output_base" : 2
|
38
|
-
, "
|
38
|
+
, "expected" : [1, 0, 1]
|
39
39
|
},
|
40
40
|
{ "description" : "binary to multiple decimal"
|
41
41
|
, "input_base" : 2
|
42
42
|
, "input_digits" : [1, 0, 1, 0, 1, 0]
|
43
43
|
, "output_base" : 10
|
44
|
-
, "
|
44
|
+
, "expected" : [4, 2]
|
45
45
|
},
|
46
46
|
{ "description" : "decimal to binary"
|
47
47
|
, "input_base" : 10
|
48
48
|
, "input_digits" : [4, 2]
|
49
49
|
, "output_base" : 2
|
50
|
-
, "
|
50
|
+
, "expected" : [1, 0, 1, 0, 1, 0]
|
51
51
|
},
|
52
52
|
{ "description" : "trinary to hexadecimal"
|
53
53
|
, "input_base" : 3
|
54
54
|
, "input_digits" : [1, 1, 2, 0]
|
55
55
|
, "output_base" : 16
|
56
|
-
, "
|
56
|
+
, "expected" : [2, 10]
|
57
57
|
},
|
58
58
|
{ "description" : "hexadecimal to trinary"
|
59
59
|
, "input_base" : 16
|
60
60
|
, "input_digits" : [2, 10]
|
61
61
|
, "output_base" : 3
|
62
|
-
, "
|
62
|
+
, "expected" : [1, 1, 2, 0]
|
63
63
|
},
|
64
64
|
{ "description" : "15-bit integer"
|
65
65
|
, "input_base" : 97
|
66
66
|
, "input_digits" : [3,46,60]
|
67
67
|
, "output_base" : 73
|
68
|
-
, "
|
68
|
+
, "expected" : [6,10,45]
|
69
69
|
},
|
70
70
|
{ "description" : "empty list"
|
71
71
|
, "input_base" : 2
|
72
72
|
, "input_digits" : []
|
73
73
|
, "output_base" : 10
|
74
|
-
, "
|
74
|
+
, "expected" : null
|
75
75
|
},
|
76
76
|
{ "description" : "single zero"
|
77
77
|
, "input_base" : 10
|
78
78
|
, "input_digits" : [0]
|
79
79
|
, "output_base" : 2
|
80
|
-
, "
|
80
|
+
, "expected" : null
|
81
81
|
},
|
82
82
|
{ "description" : "multiple zeros"
|
83
83
|
, "input_base" : 10
|
84
84
|
, "input_digits" : [0, 0, 0]
|
85
85
|
, "output_base" : 2
|
86
|
-
, "
|
86
|
+
, "expected" : null
|
87
87
|
},
|
88
88
|
{ "description" : "leading zeros"
|
89
89
|
, "input_base" : 7
|
90
90
|
, "input_digits" : [0, 6, 0]
|
91
91
|
, "output_base" : 10
|
92
|
-
, "
|
92
|
+
, "expected" : null
|
93
93
|
},
|
94
94
|
{ "description" : "negative digit"
|
95
95
|
, "input_base" : 2
|
96
96
|
, "input_digits" : [1, -1, 1, 0, 1, 0]
|
97
97
|
, "output_base" : 10
|
98
|
-
, "
|
98
|
+
, "expected" : null
|
99
99
|
},
|
100
100
|
{ "description" : "invalid positive digit"
|
101
101
|
, "input_base" : 2
|
102
102
|
, "input_digits" : [1, 2, 1, 0, 1, 0]
|
103
103
|
, "output_base" : 10
|
104
|
-
, "
|
104
|
+
, "expected" : null
|
105
105
|
},
|
106
106
|
{ "description" : "first base is one"
|
107
107
|
, "input_base" : 1
|
108
108
|
, "input_digits" : []
|
109
109
|
, "output_base" : 10
|
110
|
-
, "
|
110
|
+
, "expected" : null
|
111
111
|
},
|
112
112
|
{ "description" : "second base is one"
|
113
113
|
, "input_base" : 2
|
114
114
|
, "input_digits" : [1, 0, 1, 0, 1, 0]
|
115
115
|
, "output_base" : 1
|
116
|
-
, "
|
116
|
+
, "expected" : null
|
117
117
|
},
|
118
118
|
{ "description" : "first base is zero"
|
119
119
|
, "input_base" : 0
|
120
120
|
, "input_digits" : []
|
121
121
|
, "output_base" : 10
|
122
|
-
, "
|
122
|
+
, "expected" : null
|
123
123
|
},
|
124
124
|
{ "description" : "second base is zero"
|
125
125
|
, "input_base" : 10
|
126
126
|
, "input_digits" : [7]
|
127
127
|
, "output_base" : 0
|
128
|
-
, "
|
128
|
+
, "expected" : null
|
129
129
|
},
|
130
130
|
{ "description" : "first base is negative"
|
131
131
|
, "input_base" : -2
|
132
132
|
, "input_digits" : [1]
|
133
133
|
, "output_base" : 10
|
134
|
-
, "
|
134
|
+
, "expected" : null
|
135
135
|
},
|
136
136
|
{ "description" : "second base is negative"
|
137
137
|
, "input_base" : 2
|
138
138
|
, "input_digits" : [1]
|
139
139
|
, "output_base" : -7
|
140
|
-
, "
|
140
|
+
, "expected" : null
|
141
141
|
},
|
142
142
|
{ "description" : "both bases are negative"
|
143
143
|
, "input_base" : -2
|
144
144
|
, "input_digits" : [1]
|
145
145
|
, "output_base" : -7
|
146
|
-
, "
|
146
|
+
, "expected" : null
|
147
147
|
} ]
|
148
148
|
}
|
@@ -1,67 +1,53 @@
|
|
1
|
-
## Step 1
|
2
1
|
|
3
|
-
|
2
|
+
## Iteration 1 — Addition
|
4
3
|
|
5
|
-
|
4
|
+
Add two numbers together.
|
6
5
|
|
7
|
-
|
6
|
+
> What is 5 plus 13?
|
8
7
|
|
9
|
-
|
10
|
-
normally would treat a written problem. This means that you calculate
|
11
|
-
as you move forward each step. In other words, you should ignore order
|
12
|
-
of operations. 3 + 2 * 3 = 15, not 9.
|
8
|
+
Evaluates to 18.
|
13
9
|
|
14
|
-
|
15
|
-
at a time.
|
10
|
+
Handle large numbers and negative numbers.
|
16
11
|
|
17
|
-
## Step 2
|
18
12
|
|
19
|
-
|
13
|
+
## Iteration 2 — Subtraction, Multiplication and Division
|
20
14
|
|
21
|
-
|
15
|
+
Now, perform the other three operations.
|
22
16
|
|
23
17
|
> What is 7 minus 5?
|
24
18
|
|
25
|
-
|
19
|
+
2
|
26
20
|
|
27
|
-
> What is
|
28
|
-
|
29
|
-
## Step 3
|
30
|
-
|
31
|
-
E.g.
|
32
|
-
|
33
|
-
> What is 5 plus 13 plus 6?
|
34
|
-
|
35
|
-
> What is 7 minus 5 minus 1?
|
21
|
+
> What is 6 multiplied by 4?
|
36
22
|
|
37
|
-
|
23
|
+
24
|
38
24
|
|
39
|
-
> What is
|
25
|
+
> What is 25 divided by 5?
|
40
26
|
|
41
|
-
|
27
|
+
5
|
42
28
|
|
43
|
-
E.g.
|
44
29
|
|
45
|
-
|
30
|
+
## Iteration 3 — Multiple Operations
|
46
31
|
|
47
|
-
|
32
|
+
Handle a set of operations, in sequence.
|
48
33
|
|
49
|
-
|
34
|
+
Since these are verbal word problems, evaluate the expression from
|
35
|
+
left-to-right, _ignoring the typical order of operations._
|
50
36
|
|
51
|
-
> What is
|
37
|
+
> What is 5 plus 13 plus 6?
|
52
38
|
|
53
|
-
|
39
|
+
24
|
54
40
|
|
55
|
-
> What is
|
41
|
+
> What is 3 plus 2 times 3?
|
56
42
|
|
57
|
-
|
43
|
+
15 (i.e. not 9)
|
58
44
|
|
59
|
-
> What is 4 plus 3 times 2?
|
60
45
|
|
61
|
-
##
|
46
|
+
## Bonus — Exponentials
|
62
47
|
|
63
|
-
|
48
|
+
If you'd like, handle exponentials.
|
64
49
|
|
65
50
|
> What is 2 raised to the 5th power?
|
66
51
|
|
67
|
-
|
52
|
+
32
|
53
|
+
|
@@ -1,4 +1,4 @@
|
|
1
1
|
---
|
2
|
-
blurb: "
|
2
|
+
blurb: "Parse and evaluate simple math word problems returning the answer as an integer."
|
3
3
|
source: "Inspired by one of the generated questions in the Extreme Startup game."
|
4
4
|
source_url: "https://github.com/rchatley/extreme_startup"
|
data/lib/trackler/version.rb
CHANGED
data/tracks/c/config.json
CHANGED
@@ -196,6 +196,16 @@
|
|
196
196
|
"text formatting",
|
197
197
|
"memory management"
|
198
198
|
]
|
199
|
+
}, {
|
200
|
+
"difficulty": 4,
|
201
|
+
"slug": "meetup",
|
202
|
+
"topics": [
|
203
|
+
"control-flow (if-statements)",
|
204
|
+
"strings",
|
205
|
+
"structs",
|
206
|
+
"time functions",
|
207
|
+
"preprocessor (x-macros in test)"
|
208
|
+
]
|
199
209
|
}, {
|
200
210
|
"difficulty": 2,
|
201
211
|
"slug": "robot-simulator",
|
@@ -0,0 +1,15 @@
|
|
1
|
+
CFLAGS = -std=c99
|
2
|
+
CFLAGS += -Wall
|
3
|
+
CFLAGS += -Wextra
|
4
|
+
CFLAGS += -pedantic
|
5
|
+
CFLAGS += -Werror
|
6
|
+
|
7
|
+
test: tests.out
|
8
|
+
@./tests.out
|
9
|
+
|
10
|
+
clean:
|
11
|
+
rm -f *.o *.out
|
12
|
+
|
13
|
+
tests.out: test/test_meetup.c src/meetup.c src/meetup.h src/example.c
|
14
|
+
@echo Compiling $@
|
15
|
+
@cc $(CFLAGS) src/meetup.c test/vendor/unity.c test/test_meetup.c -o tests.out
|
@@ -0,0 +1,139 @@
|
|
1
|
+
#include <string.h>
|
2
|
+
#include <stdbool.h>
|
3
|
+
#include <time.h>
|
4
|
+
#include "meetup.h"
|
5
|
+
|
6
|
+
#define BAD_DATE_REQUESTED (0)
|
7
|
+
|
8
|
+
typedef struct {
|
9
|
+
const char *text;
|
10
|
+
int number;
|
11
|
+
} TextToIntLookup_t;
|
12
|
+
|
13
|
+
static bool isLeapyear(int year)
|
14
|
+
{
|
15
|
+
return ((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0));
|
16
|
+
}
|
17
|
+
|
18
|
+
static int daysInMonth(int year, int month)
|
19
|
+
{
|
20
|
+
int numberOfDays = 31;
|
21
|
+
|
22
|
+
switch (month) {
|
23
|
+
case 4:
|
24
|
+
case 6:
|
25
|
+
case 9:
|
26
|
+
case 11:
|
27
|
+
numberOfDays = 30;
|
28
|
+
break;
|
29
|
+
case 2:
|
30
|
+
if (isLeapyear(year)) {
|
31
|
+
numberOfDays = 29;
|
32
|
+
} else {
|
33
|
+
numberOfDays = 28;
|
34
|
+
}
|
35
|
+
break;
|
36
|
+
}
|
37
|
+
return numberOfDays;
|
38
|
+
}
|
39
|
+
|
40
|
+
static int getNumberGivenText(const char *text, TextToIntLookup_t * lookup,
|
41
|
+
size_t numberEntries)
|
42
|
+
{
|
43
|
+
int matchNumber = -1;
|
44
|
+
|
45
|
+
for (size_t index = 0; index < numberEntries; index++) {
|
46
|
+
if (0 == strcmp(text, lookup[index].text)) {
|
47
|
+
matchNumber = lookup[index].number;
|
48
|
+
break;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
return matchNumber;
|
52
|
+
}
|
53
|
+
|
54
|
+
static int getDayOfWeekFromDate(unsigned int year, unsigned int month,
|
55
|
+
unsigned int day)
|
56
|
+
{
|
57
|
+
struct tm firstDayOfTestMonth;
|
58
|
+
time_t midnightFirstDayofTestMonth;
|
59
|
+
|
60
|
+
firstDayOfTestMonth.tm_year = year - 1900;
|
61
|
+
firstDayOfTestMonth.tm_mon = month - 1;
|
62
|
+
firstDayOfTestMonth.tm_mday = day;
|
63
|
+
firstDayOfTestMonth.tm_hour = 0;
|
64
|
+
firstDayOfTestMonth.tm_min = 0;
|
65
|
+
firstDayOfTestMonth.tm_sec = 0;
|
66
|
+
firstDayOfTestMonth.tm_isdst = 0;
|
67
|
+
midnightFirstDayofTestMonth = mktime(&firstDayOfTestMonth);
|
68
|
+
|
69
|
+
return (localtime(&midnightFirstDayofTestMonth)->tm_wday);
|
70
|
+
}
|
71
|
+
|
72
|
+
static int getWeekOfMonth(const char *week)
|
73
|
+
{
|
74
|
+
TextToIntLookup_t whichWeekOfMonthLookup[] = {
|
75
|
+
{"first", 1},
|
76
|
+
{"second", 2},
|
77
|
+
{"third", 3},
|
78
|
+
{"fourth", 4},
|
79
|
+
{"fifth", 5},
|
80
|
+
{"last", 6},
|
81
|
+
{"teenth", 7}
|
82
|
+
};
|
83
|
+
|
84
|
+
return getNumberGivenText(week, &whichWeekOfMonthLookup[0],
|
85
|
+
sizeof(whichWeekOfMonthLookup) /
|
86
|
+
sizeof(TextToIntLookup_t));
|
87
|
+
}
|
88
|
+
|
89
|
+
static int getRequestedDayOfWeek(const char *dayOfWeek)
|
90
|
+
{
|
91
|
+
TextToIntLookup_t dayLookup[] = {
|
92
|
+
{"Sunday", 0},
|
93
|
+
{"Monday", 1},
|
94
|
+
{"Tuesday", 2},
|
95
|
+
{"Wednesday", 3},
|
96
|
+
{"Thursday", 4},
|
97
|
+
{"Friday", 5},
|
98
|
+
{"Saturday", 6}
|
99
|
+
};
|
100
|
+
|
101
|
+
return getNumberGivenText(dayOfWeek, &dayLookup[0],
|
102
|
+
sizeof(dayLookup) / sizeof(TextToIntLookup_t));
|
103
|
+
}
|
104
|
+
|
105
|
+
int meetupDayOfMonth(unsigned int year, unsigned int month, const char *week,
|
106
|
+
const char *dayOfWeek)
|
107
|
+
{
|
108
|
+
int dayOfMonth = BAD_DATE_REQUESTED;
|
109
|
+
int baselineDayOfWeek;
|
110
|
+
int daysInTestMonth = daysInMonth(year, month);
|
111
|
+
int dayOffset;
|
112
|
+
int referenceDay = 1; // used to calculate a baseline day of week given a target date.
|
113
|
+
|
114
|
+
int whichWeekOfMonth = getWeekOfMonth(week);
|
115
|
+
int targetDayInWeek = getRequestedDayOfWeek(dayOfWeek);
|
116
|
+
|
117
|
+
// check for valid lookup...
|
118
|
+
if ((whichWeekOfMonth >= 0) && (targetDayInWeek >= 0)) {
|
119
|
+
// first - fifth Xday of month
|
120
|
+
if (whichWeekOfMonth <= 5) {
|
121
|
+
dayOffset = 1 + ((whichWeekOfMonth - 1) * 7);
|
122
|
+
} else {
|
123
|
+
// code for last Xday of month
|
124
|
+
if (6 == whichWeekOfMonth) {
|
125
|
+
referenceDay = daysInTestMonth - 6; // use the last unique day near end of month as reference
|
126
|
+
} else {
|
127
|
+
referenceDay = 13; // use first teenth day as reference
|
128
|
+
}
|
129
|
+
dayOffset = referenceDay;
|
130
|
+
}
|
131
|
+
baselineDayOfWeek = getDayOfWeekFromDate(year, month, referenceDay);
|
132
|
+
dayOfMonth = dayOffset + ((targetDayInWeek + 7 - baselineDayOfWeek) % 7);
|
133
|
+
}
|
134
|
+
|
135
|
+
if (dayOfMonth > daysInTestMonth) {
|
136
|
+
dayOfMonth = BAD_DATE_REQUESTED;
|
137
|
+
}
|
138
|
+
return dayOfMonth;
|
139
|
+
}
|