Skip to content

Commit 01f9f5c

Browse files
committed
Add tests
1 parent de6fcb0 commit 01f9f5c

File tree

2 files changed

+118
-15
lines changed

2 files changed

+118
-15
lines changed

test/numeric_types.test.js

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,76 +2,106 @@ var test = require('tape')
22
, convert = require('../')
33
;
44

5-
test('handles integer types', function(assert) {
5+
test('handles int32 format', function(assert) {
66
var schema
77
, result
88
, expected
99
;
1010

11-
assert.plan(2);
11+
assert.plan(1);
1212

1313
schema = {
1414
type: 'integer',
15+
format: 'int32'
1516
};
1617

1718
result = convert(schema);
1819

1920
expected = {
2021
$schema: 'http://json-schema.org/draft-04/schema#',
2122
type: 'integer',
23+
format: 'int32',
24+
minimum: 0 - Math.pow(2, 31),
25+
maximum: Math.pow(2, 31) - 1
2226
};
2327

24-
assert.deepEqual(result, expected, 'integer type untouched');
28+
assert.deepEqual(result, expected, 'int32 converted to minimum|maximum');
29+
});
30+
31+
test('handles int64 format', function(assert) {
32+
var schema
33+
, result
34+
, expected
35+
;
36+
37+
assert.plan(1);
2538

2639
schema = {
2740
type: 'integer',
28-
format: 'int32',
41+
format: 'int64'
2942
};
3043

3144
result = convert(schema);
3245

3346
expected = {
3447
$schema: 'http://json-schema.org/draft-04/schema#',
3548
type: 'integer',
36-
format: 'int32'
49+
format: 'int64',
50+
minimum: 0 - Math.pow(2, 63),
51+
maximum: Math.pow(2, 63) - 1
3752
};
3853

39-
assert.deepEqual(result, expected, 'integer type and format untouched');
54+
assert.deepEqual(result, expected, 'int64 converted to minimum|maximum');
4055
});
4156

42-
test('handles number types', function(assert) {
57+
test('handles float format', function(assert) {
4358
var schema
4459
, result
4560
, expected
4661
;
4762

48-
assert.plan(2);
63+
assert.plan(1);
4964

5065
schema = {
5166
type: 'number',
67+
format: 'float'
5268
};
5369

5470
result = convert(schema);
5571

5672
expected = {
5773
$schema: 'http://json-schema.org/draft-04/schema#',
5874
type: 'number',
75+
format: 'float',
76+
minimum: 0 - Math.pow(2, 128),
77+
maximum: Math.pow(2, 128) - 1
5978
};
6079

61-
assert.deepEqual(result, expected, 'number type untouched');
80+
assert.deepEqual(result, expected, 'float converted to minimum|maximum');
81+
});
82+
83+
test('handles double format', function(assert) {
84+
var schema
85+
, result
86+
, expected
87+
;
88+
89+
assert.plan(1);
6290

6391
schema = {
6492
type: 'number',
65-
format: 'float'
93+
format: 'double'
6694
};
6795

6896
result = convert(schema);
6997

7098
expected = {
7199
$schema: 'http://json-schema.org/draft-04/schema#',
72100
type: 'number',
73-
format: 'float'
101+
format: 'double',
102+
minimum: 0 - Number.MAX_VALUE,
103+
maximum: Number.MAX_VALUE
74104
};
75105

76-
assert.deepEqual(result, expected, 'number type and format untouched');
106+
assert.deepEqual(result, expected, 'double converted to minimum|maximum');
77107
});

test/string_types.test.js

Lines changed: 76 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,31 @@ test('handling date', function(assert) {
6363
assert.deepEqual(result, expected, 'date converted to date-time');
6464
});
6565

66+
test('handles byte format', function(assert) {
67+
var schema
68+
, result
69+
, expected
70+
;
71+
72+
assert.plan(1);
73+
74+
schema = {
75+
type: 'string',
76+
format: 'byte'
77+
};
78+
79+
result = convert(schema);
80+
81+
expected = {
82+
$schema: 'http://json-schema.org/draft-04/schema#',
83+
type: 'string',
84+
format: 'byte',
85+
pattern: '^[\\w\\d+\\/=]*$'
86+
};
87+
88+
assert.deepEqual(result, expected, 'byte converted to pattern');
89+
});
90+
6691
test('retaining custom formats', function(assert) {
6792
var schema
6893
, result
@@ -73,16 +98,64 @@ test('retaining custom formats', function(assert) {
7398

7499
schema = {
75100
type: 'string',
76-
format: 'email'
101+
format: 'custom_email'
102+
};
103+
104+
result = convert(schema);
105+
106+
expected = {
107+
$schema: 'http://json-schema.org/draft-04/schema#',
108+
type: 'string',
109+
format: 'custom_email'
110+
};
111+
112+
assert.deepEqual(result, expected, 'custom format retained');
113+
});
114+
115+
test('retain password format', function(assert) {
116+
var schema
117+
, result
118+
, expected
119+
;
120+
121+
assert.plan(1);
122+
123+
schema = {
124+
type: 'string',
125+
format: 'password'
126+
};
127+
128+
result = convert(schema);
129+
130+
expected = {
131+
$schema: 'http://json-schema.org/draft-04/schema#',
132+
type: 'string',
133+
format: 'password'
134+
};
135+
136+
assert.deepEqual(result, expected, 'password format retained');
137+
});
138+
139+
test('retain binary format', function(assert) {
140+
var schema
141+
, result
142+
, expected
143+
;
144+
145+
assert.plan(1);
146+
147+
schema = {
148+
type: 'string',
149+
format: 'binary'
77150
};
78151

79152
result = convert(schema);
80153

81154
expected = {
82155
$schema: 'http://json-schema.org/draft-04/schema#',
83156
type: 'string',
84-
format: 'email'
157+
format: 'binary'
85158
};
86159

87-
assert.deepEqual(result, expected, 'email retained');
160+
assert.deepEqual(result, expected, 'binary format retained');
88161
});

0 commit comments

Comments
 (0)