@@ -34,10 +34,8 @@ if (typeof(DateFactory) === "undefined") {
3434 var DateFactory = require ( "../../lib/DateFactory.js" ) ;
3535}
3636
37-
38- function getChromeVersion ( ) {
39- var raw = navigator . userAgent . match ( / C h r o m ( e | i u m ) \/ ( [ 0 - 9 ] + ) \. / ) ;
40- return raw ? parseInt ( raw [ 2 ] , 10 ) : false ;
37+ if ( typeof ( TestingSupport ) === "undefined" ) {
38+ var TestingSupport = require ( "../test/testingSupport.js" ) ;
4139}
4240
4341module . exports . testdatefmt_en_GB = {
@@ -144,32 +142,31 @@ module.exports.testdatefmt_en_GB = {
144142 millisecond : 0
145143 } ) ;
146144
147- if ( ilib . _getPlatform ( ) === "nodejs" ) {
148- var cldrVersion = Number ( process . versions [ "cldr" ] ) ;
149- var nodeMajorVersion = process . versions [ "node" ] . split ( "." ) [ 0 ] ;
150- if ( cldrVersion < 36 ) {
151- test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
152- } else if ( cldrVersion < 38 ) {
153- /*
154- * Both node v12.16.1 and v14.16.1 say the cldr version is 37.0.
155- * But it returns a different result.
156- */
157- if ( nodeMajorVersion === "14" ) {
158- test . equal ( fmt . format ( date ) , "29/09/2011" ) ;
159- } else {
160- test . equal ( fmt . format ( date ) , "9/29/11" ) ;
161- }
162- } else {
163- test . equal ( fmt . format ( date ) , "29/09/2011" ) ;
164- }
165- } else {
166- test . equal ( fmt . format ( date ) , "29/09/2011" ) ;
145+ var cldrVersion = TestingSupport . getCLDRVersion ( ) ;
146+ if ( cldrVersion === undefined ) {
147+ // On Node < 13, use ilib's own formatting
148+ // before node 13, node did not support new Intl.DateTimeFormat, so it uses ilib's own formatting
149+ test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
150+ test . done ( ) ;
151+ return ;
167152 }
153+ cldrVersion = Number ( cldrVersion ) ;
154+ if ( cldrVersion <= 35.1 ) {
155+ test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
156+ test . done ( ) ;
157+ return ;
158+ } else if ( cldrVersion < 38 ) {
159+ test . equal ( fmt . format ( date ) , "9/29/11" ) ;
160+ test . done ( ) ;
161+ return ;
162+ }
163+ // Default format for >= 38 or undefined
164+ test . equal ( fmt . format ( date ) , "29/09/2011" ) ;
168165 test . done ( ) ;
169166 } ,
170167 testDateFmtSimpleMedium_en_GB_useIntl : function ( test ) {
171168 if ( ! DateFmt . isIntlDateTimeAvailable ( "en-GB" ) ) {
172- // The result is different depending on the node version.
169+ // The result is different depending on the CLDR version.
173170 test . done ( ) ;
174171 return ;
175172 }
@@ -187,24 +184,28 @@ module.exports.testdatefmt_en_GB = {
187184 millisecond : 0
188185 } ) ;
189186
190- if ( ilib . _getPlatform ( ) === "nodejs" ) {
191- var cldrVersion = Number ( process . versions [ "cldr" ] ) ;
192- var nodeMajorVersion = process . versions [ "node" ] . split ( "." ) [ 0 ] ;
193- //console.log("version: " + version + " majorVersion: " + majorVersion);
194- if ( cldrVersion < 36 ) {
195- test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
196- } else if ( cldrVersion < 38 ) {
197- if ( nodeMajorVersion === "14" ) {
198- test . equal ( fmt . format ( date ) , "29 Sep 2011" ) ;
199- } else {
200- test . equal ( fmt . format ( date ) , "Sep 29, 2011" ) ;
201- }
202- } else {
203- test . equal ( fmt . format ( date ) , "29 Sept 2011" ) ;
204- }
205- } else {
206- test . equal ( fmt . format ( date ) , "29 Sept 2011" ) ;
187+ var cldrVersion = TestingSupport . getCLDRVersion ( ) ;
188+ if ( cldrVersion === undefined ) {
189+ // On Node < 13, use ilib's own formatting
190+ // before node 13, node did not support new Intl.DateTimeFormat, so it uses ilib's own formatting
191+ test . equal ( fmt . format ( date ) , "Sep 29, 2011" ) ;
192+ test . done ( ) ;
193+ return ;
194+ }
195+ cldrVersion = Number ( cldrVersion ) ;
196+ if ( cldrVersion <= 36.1 ) {
197+ test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
198+ test . done ( ) ;
199+ return ;
200+ } else if ( cldrVersion < 38 ) {
201+ // CLDR < 38.0: month name is "Sep", pattern is "d MMM y" → "29 Sep 2011"
202+ test . equal ( fmt . format ( date ) , "Sep 29, 2011" ) ;
203+ test . done ( ) ;
204+ return ;
207205 }
206+ // Default format for >= 38.0 (catches future CLDR versions)
207+ // CLDR >= 38.0: month name is "Sept", pattern is "d MMM y" → "29 Sept 2011"
208+ test . equal ( fmt . format ( date ) , "29 Sept 2011" ) ;
208209 test . done ( ) ;
209210 } ,
210211 testDateFmtSimpleLong_en_GB_useIntl : function ( test ) {
@@ -227,25 +228,26 @@ module.exports.testdatefmt_en_GB = {
227228 millisecond : 0
228229 } ) ;
229230
230- if ( ilib . _getPlatform ( ) === "nodejs" ) {
231- var cldrVersion = Number ( process . versions [ "cldr" ] ) ;
232- var nodeMajorVersion = process . versions [ "node" ] . split ( "." ) [ 0 ] ;
233- if ( cldrVersion < 36 ) {
234- test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
235- } else if ( cldrVersion < 38 ) {
236- if ( nodeMajorVersion === "14" ) {
237- test . equal ( fmt . format ( date ) , "29 September 2011" ) ;
238- } else {
239- test . equal ( fmt . format ( date ) , "September 29, 2011" ) ;
240- }
241-
242- } else {
243- test . equal ( fmt . format ( date ) , "29 September 2011" ) ;
244- }
245- } else {
246- test . equal ( fmt . format ( date ) , "29 September 2011" ) ;
231+ var cldrVersion = TestingSupport . getCLDRVersion ( ) ;
232+ if ( cldrVersion === undefined ) {
233+ // On Node < 13, use ilib's own formatting
234+ // before node 13, node did not support new Intl.DateTimeFormat, so it uses ilib's own formatting
235+ test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
236+ test . done ( ) ;
237+ return ;
247238 }
248-
239+ cldrVersion = Number ( cldrVersion ) ;
240+ if ( cldrVersion <= 36.1 ) {
241+ test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
242+ test . done ( ) ;
243+ return ;
244+ } else if ( cldrVersion < 38 ) {
245+ test . equal ( fmt . format ( date ) , "September 29, 2011" ) ;
246+ test . done ( ) ;
247+ return ;
248+ }
249+ // Default format for >= 38 or undefined
250+ test . equal ( fmt . format ( date ) , "29 September 2011" ) ;
249251 test . done ( ) ;
250252 } ,
251253 testDateFmtSimpleFull_en_GB_useIntl : function ( test ) {
@@ -291,35 +293,33 @@ module.exports.testdatefmt_en_GB = {
291293 millisecond : 0
292294 } ) ;
293295
294- var platform = ilib . _getPlatform ( ) ;
295- if ( platform === "nodejs" ) {
296- var cldrVersion = Number ( process . versions [ "cldr" ] ) ;
297- var nodeMajorVersion = process . versions [ "node" ] . split ( "." ) [ 0 ] ;
298- if ( cldrVersion < 36 ) {
299- test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
300- } else if ( cldrVersion < 38 ) {
301- if ( nodeMajorVersion === "14" ) {
302- test . equal ( fmt . format ( date ) , "Thursday, 29 September 2011" ) ;
303- } else {
304- test . equal ( fmt . format ( date ) , "Thursday, September 29, 2011" ) ;
305- }
306- } else if ( cldrVersion < 44 ) {
307- test . equal ( fmt . format ( date ) , "Thursday, 29 September 2011" ) ;
308- } else {
309- test . equal ( fmt . format ( date ) , "Thursday 29 September 2011" ) ;
310- }
311- } else if ( platform === "browser" ) {
312- var browser = ilib . _getBrowser ( ) ;
313- if ( browser === "chrome" && getChromeVersion ( ) >= 130 ) {
314- //chrome 131.0.6778.139
315- test . equal ( fmt . format ( date ) , "Thursday 29 September 2011" ) ;
316- } else {
317- // firefox 133.0.3
318- test . equal ( fmt . format ( date ) , "Thursday, 29 September 2011" ) ;
319- }
320- } else {
321- test . equal ( fmt . format ( date ) , "Thursday, 29 September 2011" ) ;
296+ var cldrVersion = TestingSupport . getCLDRVersion ( ) ;
297+ if ( cldrVersion === undefined ) {
298+ // Node < 13 or CLDR < 35.1: use ilib's own formatting
299+ // before node 13, node did not support Intl.DateTimeFormat, so it uses ilib's own formatting
300+ test . equal ( fmt . format ( date ) , "Thursday, September 29, 2011" ) ;
301+ test . done ( ) ;
302+ return ;
303+ }
304+ cldrVersion = Number ( cldrVersion ) ;
305+ if ( cldrVersion <= 36.1 ) {
306+ test . equal ( fmt . format ( date ) , "9/29/2011" ) ;
307+ test . done ( ) ;
308+ return ;
309+ } else if ( cldrVersion < 38 ) {
310+ test . equal ( fmt . format ( date ) , "Thursday, September 29, 2011" ) ;
311+ test . done ( ) ;
312+ return ;
313+ } else if ( cldrVersion >= 44.1 && cldrVersion < 46 ) {
314+ // CLDR 44.1 and 45.0: comma was removed
315+ test . equal ( fmt . format ( date ) , "Thursday 29 September 2011" ) ;
316+ test . done ( ) ;
317+ return ;
322318 }
319+ // Default format for < 44.1 or >= 46
320+ // CLDR 40.0, 41.0, 42.0, 43.1: has comma
321+ // CLDR 46.0, 47.0: has comma (restored in CLDR 46.0)
322+ test . equal ( fmt . format ( date ) , "Thursday, 29 September 2011" ) ;
323323 test . done ( ) ;
324324 } ,
325325 testDateFmtGBSimpleTimeShort : function ( test ) {
0 commit comments