|
1 | 1 | var assert = require('assert');
|
2 | 2 | var fs = require('fs');
|
| 3 | +var glob = require('glob'); |
| 4 | +var path = require('path'); |
3 | 5 | var __root = __dirname + '/..';
|
4 | 6 | var phpjsutil = new require('../lib/phpjsutil');
|
5 | 7 | var PhpjsUtil = phpjsutil({
|
6 | 8 | injectDependencies: ['ini_set', 'ini_get'],
|
7 | 9 | });
|
| 10 | +assert.deepEqualWithDifflet = require('deep-equal-with-difflet'); |
8 | 11 |
|
9 | 12 | var files = {
|
10 |
| - "array_change_key_case": fs.readFileSync(__root + '/test/fixtures/array_change_key_case.js', 'utf-8') |
| 13 | + "array_change_key_case": fs.readFileSync(__root + '/test/fixtures/func_array_change_key_case.js', 'utf-8'), |
| 14 | + "pos" : fs.readFileSync(__root + '/test/fixtures/func_pos.js', 'utf-8'), |
| 15 | + "current" : fs.readFileSync(__root + '/test/fixtures/func_current.js', 'utf-8'), |
| 16 | + "is_binary" : fs.readFileSync(__root + '/test/fixtures/func_is_binary.js', 'utf-8') |
11 | 17 | };
|
12 | 18 |
|
13 |
| -var fixtures = { |
14 |
| - "array_change_key_case": { |
15 |
| - "headKeys":{ |
16 |
| - "discuss at":[ |
17 |
| - [ |
18 |
| - "http://phpjs.org/functions/array_change_key_case/" |
19 |
| - ] |
20 |
| - ], |
21 |
| - "original by":[ |
22 |
| - [ |
23 |
| - "Ates Goral (http://magnetiq.com)" |
24 |
| - ] |
25 |
| - ], |
26 |
| - "improved by":[ |
27 |
| - [ |
28 |
| - "marrtins", |
29 |
| - "Brett Zamir (http://brett-zamir.me)" |
30 |
| - ] |
31 |
| - ], |
32 |
| - "example":[ |
33 |
| - [ |
34 |
| - "array_change_key_case(42);" |
35 |
| - ], |
36 |
| - [ |
37 |
| - "array_change_key_case([ 3, 5 ]);" |
38 |
| - ], |
39 |
| - [ |
40 |
| - "array_change_key_case({ FuBaR: 42 });" |
41 |
| - ], |
42 |
| - [ |
43 |
| - "array_change_key_case({ FuBaR: 42 }, 'CASE_LOWER');" |
44 |
| - ], |
45 |
| - [ |
46 |
| - "array_change_key_case({ FuBaR: 42 }, 'CASE_UPPER');" |
47 |
| - ], |
48 |
| - [ |
49 |
| - "array_change_key_case({ FuBaR: 42 }, 2);" |
50 |
| - ], |
51 |
| - [ |
52 |
| - "ini_set('phpjs.return_phpjs_arrays', 'on');", |
53 |
| - "var arr = [{a: 0}, {B: 1}, {c: 2}];", |
54 |
| - "var newArr = array_change_key_case(arr);", |
55 |
| - "newArr.splice(1, 1);" |
56 |
| - ] |
57 |
| - ], |
58 |
| - "returns":[ |
59 |
| - [ |
60 |
| - "false" |
61 |
| - ], |
62 |
| - [ |
63 |
| - "[3, 5]" |
64 |
| - ], |
65 |
| - [ |
66 |
| - "{\"fubar\": 42}" |
67 |
| - ], |
68 |
| - [ |
69 |
| - "{\"fubar\": 42}" |
70 |
| - ], |
71 |
| - [ |
72 |
| - "{\"FUBAR\": 42}" |
73 |
| - ], |
74 |
| - [ |
75 |
| - "{\"FUBAR\": 42}" |
76 |
| - ], |
77 |
| - [ |
78 |
| - "{b: 1}" |
79 |
| - ] |
80 |
| - ] |
81 |
| - }, |
82 |
| - "body":"var case_fn, key, tmp_ar = {};\n\n if (Object.prototype.toString.call(array) === '[object Array]') {\n return array;\n }\n if (array && typeof array === 'object' && array.change_key_case) { // Duck-type check for our own array()-created PHPJS_Array\n return array.change_key_case(cs);\n }\n if (array && typeof array === 'object') {\n case_fn = (!cs || cs === 'CASE_LOWER') ? 'toLowerCase' : 'toUpperCase';\n for (key in array) {\n tmp_ar[key[case_fn]()] = array[key];\n }\n return tmp_ar;\n }\n\n return false;", |
83 |
| - "head":" // discuss at: http://phpjs.org/functions/array_change_key_case/\n // original by: Ates Goral (http://magnetiq.com)\n // improved by: marrtins\n // improved by: Brett Zamir (http://brett-zamir.me)\n // example 1: array_change_key_case(42);\n // returns 1: false\n // example 2: array_change_key_case([ 3, 5 ]);\n // returns 2: [3, 5]\n // example 3: array_change_key_case({ FuBaR: 42 });\n // returns 3: {\"fubar\": 42}\n // example 4: array_change_key_case({ FuBaR: 42 }, 'CASE_LOWER');\n // returns 4: {\"fubar\": 42}\n // example 5: array_change_key_case({ FuBaR: 42 }, 'CASE_UPPER');\n // returns 5: {\"FUBAR\": 42}\n // example 6: array_change_key_case({ FuBaR: 42 }, 2);\n // returns 6: {\"FUBAR\": 42}\n // example 7: ini_set('phpjs.return_phpjs_arrays', 'on');\n // example 7: var arr = [{a: 0}, {B: 1}, {c: 2}];\n // example 7: var newArr = array_change_key_case(arr);\n // example 7: newArr.splice(1, 1);\n // returns 7: {b: 1}", |
84 |
| - "name":"array_change_key_case", |
85 |
| - "code":"function array_change_key_case(array, cs) {\n // discuss at: http://phpjs.org/functions/array_change_key_case/\n // original by: Ates Goral (http://magnetiq.com)\n // improved by: marrtins\n // improved by: Brett Zamir (http://brett-zamir.me)\n // example 1: array_change_key_case(42);\n // returns 1: false\n // example 2: array_change_key_case([ 3, 5 ]);\n // returns 2: [3, 5]\n // example 3: array_change_key_case({ FuBaR: 42 });\n // returns 3: {\"fubar\": 42}\n // example 4: array_change_key_case({ FuBaR: 42 }, 'CASE_LOWER');\n // returns 4: {\"fubar\": 42}\n // example 5: array_change_key_case({ FuBaR: 42 }, 'CASE_UPPER');\n // returns 5: {\"FUBAR\": 42}\n // example 6: array_change_key_case({ FuBaR: 42 }, 2);\n // returns 6: {\"FUBAR\": 42}\n // example 7: ini_set('phpjs.return_phpjs_arrays', 'on');\n // example 7: var arr = [{a: 0}, {B: 1}, {c: 2}];\n // example 7: var newArr = array_change_key_case(arr);\n // example 7: newArr.splice(1, 1);\n // returns 7: {b: 1}\n\n var case_fn, key, tmp_ar = {};\n\n if (Object.prototype.toString.call(array) === '[object Array]') {\n return array;\n }\n if (array && typeof array === 'object' && array.change_key_case) { // Duck-type check for our own array()-created PHPJS_Array\n return array.change_key_case(cs);\n }\n if (array && typeof array === 'object') {\n case_fn = (!cs || cs === 'CASE_LOWER') ? 'toLowerCase' : 'toUpperCase';\n for (key in array) {\n tmp_ar[key[case_fn]()] = array[key];\n }\n return tmp_ar;\n }\n\n return false;\n}", |
86 |
| - "dependencies":{ |
87 |
| - |
88 |
| - }, |
89 |
| - "func_signature":"function array_change_key_case(array, cs) {\n ", |
90 |
| - "func_name":"array_change_key_case", |
91 |
| - "func_arguments":[ |
92 |
| - "array", |
93 |
| - "cs" |
94 |
| - ], |
95 |
| - "commentBlocks":[ |
96 |
| - { |
97 |
| - "clean":[ |
98 |
| - "discuss at: http://phpjs.org/functions/array_change_key_case/", |
99 |
| - "original by: Ates Goral (http://magnetiq.com)", |
100 |
| - "improved by: marrtins", |
101 |
| - "improved by: Brett Zamir (http://brett-zamir.me)", |
102 |
| - "example 1: array_change_key_case(42);", |
103 |
| - "returns 1: false", |
104 |
| - "example 2: array_change_key_case([ 3, 5 ]);", |
105 |
| - "returns 2: [3, 5]", |
106 |
| - "example 3: array_change_key_case({ FuBaR: 42 });", |
107 |
| - "returns 3: {\"fubar\": 42}", |
108 |
| - "example 4: array_change_key_case({ FuBaR: 42 }, 'CASE_LOWER');", |
109 |
| - "returns 4: {\"fubar\": 42}", |
110 |
| - "example 5: array_change_key_case({ FuBaR: 42 }, 'CASE_UPPER');", |
111 |
| - "returns 5: {\"FUBAR\": 42}", |
112 |
| - "example 6: array_change_key_case({ FuBaR: 42 }, 2);", |
113 |
| - "returns 6: {\"FUBAR\": 42}", |
114 |
| - "example 7: ini_set('phpjs.return_phpjs_arrays', 'on');", |
115 |
| - "example 7: var arr = [{a: 0}, {B: 1}, {c: 2}];", |
116 |
| - "example 7: var newArr = array_change_key_case(arr);", |
117 |
| - "example 7: newArr.splice(1, 1);", |
118 |
| - "returns 7: {b: 1}" |
119 |
| - ], |
120 |
| - "raw":[ |
121 |
| - " // discuss at: http://phpjs.org/functions/array_change_key_case/", |
122 |
| - " // original by: Ates Goral (http://magnetiq.com)", |
123 |
| - " // improved by: marrtins", |
124 |
| - " // improved by: Brett Zamir (http://brett-zamir.me)", |
125 |
| - " // example 1: array_change_key_case(42);", |
126 |
| - " // returns 1: false", |
127 |
| - " // example 2: array_change_key_case([ 3, 5 ]);", |
128 |
| - " // returns 2: [3, 5]", |
129 |
| - " // example 3: array_change_key_case({ FuBaR: 42 });", |
130 |
| - " // returns 3: {\"fubar\": 42}", |
131 |
| - " // example 4: array_change_key_case({ FuBaR: 42 }, 'CASE_LOWER');", |
132 |
| - " // returns 4: {\"fubar\": 42}", |
133 |
| - " // example 5: array_change_key_case({ FuBaR: 42 }, 'CASE_UPPER');", |
134 |
| - " // returns 5: {\"FUBAR\": 42}", |
135 |
| - " // example 6: array_change_key_case({ FuBaR: 42 }, 2);", |
136 |
| - " // returns 6: {\"FUBAR\": 42}", |
137 |
| - " // example 7: ini_set('phpjs.return_phpjs_arrays', 'on');", |
138 |
| - " // example 7: var arr = [{a: 0}, {B: 1}, {c: 2}];", |
139 |
| - " // example 7: var newArr = array_change_key_case(arr);", |
140 |
| - " // example 7: newArr.splice(1, 1);", |
141 |
| - " // returns 7: {b: 1}" |
142 |
| - ] |
143 |
| - } |
144 |
| - ] |
145 |
| - } |
| 19 | +PhpjsUtil.opener = function(name, cb) { |
| 20 | + return cb(null, files[name]); |
146 | 21 | };
|
147 | 22 |
|
148 |
| -describe('phpjsutil', function(){ |
149 |
| - describe('parse', function(){ |
150 |
| - it('should return exact fixture', function(done){ |
| 23 | +var fixture = JSON.parse(fs.readFileSync(__root + '/test/fixtures/fix_array_change_key_case.js', 'utf-8')); |
| 24 | + |
| 25 | +describe('phpjsutil', function() { |
| 26 | + describe('parse', function() { |
| 27 | + it('should return exact fixture', function(done) { |
151 | 28 | PhpjsUtil.parse('array_change_key_case', files['array_change_key_case'], function(err, params) {
|
152 |
| - assert.deepEqual(params, fixtures['array_change_key_case']); |
| 29 | + assert.equal(null, err); |
| 30 | + |
| 31 | + // fs.writeFileSync(__root + '/test/fixtures/fix_array_change_key_case.js', JSON.stringify(params, null, ' ')); |
| 32 | + |
| 33 | + assert.deepEqualWithDifflet(params, fixture); |
153 | 34 | done();
|
154 | 35 | });
|
155 | 36 | });
|
|
0 commit comments