-
Notifications
You must be signed in to change notification settings - Fork 16
/
object-number-test.js
138 lines (124 loc) · 3.07 KB
/
object-number-test.js
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// this test is run by Vows (as all files matching *test.js)
var vows = require('vows');
var common = require('./common'),
objectShouldBeValid = common.objectShouldBeValid,
objectShouldBeInvalid = common.objectShouldBeInvalid;
var obj = {
num: 108
};
var schemaCorrectMinimum = {
type: 'object',
properties: {
num: {
type: 'number',
minimum: 108,
required: true
}
}
};
var schemaIncorrectMinimum = {
type: 'object',
properties: {
num: {
type: 'number',
minimum: 109,
required: true
}
}
};
var schemaCorrectExclusiveMinimum = {
type: 'object',
properties: {
num: {
type: 'number',
minimum: 107.999,
exclusiveMinimum: true,
required: true
}
}
};
var schemaIncorrectExclusiveMinimum = {
type: 'object',
properties: {
num: {
type: 'number',
minimum: 108,
exclusiveMinimum: true,
required: true
}
}
};
var schemaCorrectMaximum = {
type: 'object',
properties: {
num: {
type: 'number',
maximum: 108,
required: true
}
}
};
var schemaIncorrectMaximum = {
type: 'object',
properties: {
num: {
type: 'number',
maximum: 107,
required: true
}
}
};
var schemaCorrectExclusiveMaximum = {
type: 'object',
properties: {
num: {
type: 'number',
maximum: 108.001,
exclusiveMaximum: true,
required: true
}
}
};
var schemaIncorrectExclusiveMaximum = {
type: 'object',
properties: {
num: {
type: 'number',
maximum: 108,
exclusiveMaximum: true,
required: true
}
}
};
var schemaCorrectDivisibleBy = {
type: 'object',
properties: {
num: {
type: 'number',
divisibleBy: 36,
required: true
}
}
};
var schemaIncorrectDivisibleBy = {
type: 'object',
properties: {
num: {
type: 'number',
divisibleBy: 17,
required: true
}
}
};
vows.describe('Object Number').addBatch({
'when complies with minimum': objectShouldBeValid(obj, schemaCorrectMinimum),
'when exceeds minimum': objectShouldBeInvalid(obj, schemaIncorrectMinimum, { errMsg: 'JSON object property \'num\' is 108 when it should be at least 109' }),
'when complies with exclusive minimum': objectShouldBeValid(obj, schemaCorrectExclusiveMinimum),
'when exceeds exclusive minimum': objectShouldBeInvalid(obj, schemaIncorrectExclusiveMinimum, { errMsg: 'JSON object property \'num\' is 108 when it should be greater than 108' }),
'when complies with maximum': objectShouldBeValid(obj, schemaCorrectMaximum),
'when exceeds maximum': objectShouldBeInvalid(obj, schemaIncorrectMaximum, { errMsg: 'JSON object property \'num\' is 108 when it should be at most 107' }),
'when complies with exclusive maximum': objectShouldBeValid(obj, schemaCorrectExclusiveMaximum),
'when exceeds exclusive maximum': objectShouldBeInvalid(obj, schemaIncorrectExclusiveMaximum, { errMsg: 'JSON object property \'num\' is 108 when it should be less than 108' }),
'when divisible by given divisor': objectShouldBeValid(obj, schemaCorrectDivisibleBy),
'when not divisible by given divisor': objectShouldBeInvalid(obj, schemaIncorrectDivisibleBy, { errMsg: 'JSON object property \'num\' is 108 when it should be divisible by 17' })
}).export(module);