@@ -324,3 +324,123 @@ Test('Should IsClassInstance 15', () => {
324324 const strObj = new String ( 'abc' )
325325 Assert . IsEqual ( Guard . IsClassInstance ( strObj ) , true )
326326} )
327+ // ------------------------------------------------------------------
328+ // Guard.StringGraphemeCount
329+ // ------------------------------------------------------------------
330+ Test ( 'Should StringGraphemeCount 1' , ( ) => {
331+ Assert . IsEqual ( Guard . StringGraphemeCount ( '' ) , 0 )
332+ } )
333+ Test ( 'Should StringGraphemeCount 2' , ( ) => {
334+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a' ) , 1 )
335+ } )
336+ Test ( 'Should StringGraphemeCount 3' , ( ) => {
337+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'hello' ) , 5 )
338+ } )
339+ Test ( 'Should StringGraphemeCount 4' , ( ) => {
340+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a b c' ) , 5 )
341+ } )
342+ Test ( 'Should StringGraphemeCount 5' , ( ) => {
343+ Assert . IsEqual ( Guard . StringGraphemeCount ( '!?.' ) , 3 )
344+ } )
345+ Test ( 'Should StringGraphemeCount 6' , ( ) => {
346+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'é' ) , 1 )
347+ } )
348+ Test ( 'Should StringGraphemeCount 7' , ( ) => {
349+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'éàè' ) , 3 )
350+ } )
351+ Test ( 'Should StringGraphemeCount 8' , ( ) => {
352+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'e\u0301' ) , 1 )
353+ } )
354+ Test ( 'Should StringGraphemeCount 9' , ( ) => {
355+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a\u0301b\u0301' ) , 2 )
356+ } )
357+ Test ( 'Should StringGraphemeCount 10' , ( ) => {
358+ Assert . IsEqual ( Guard . StringGraphemeCount ( '漢字' ) , 2 )
359+ } )
360+ Test ( 'Should StringGraphemeCount 11' , ( ) => {
361+ Assert . IsEqual ( Guard . StringGraphemeCount ( '😄' ) , 1 )
362+ } )
363+ Test ( 'Should StringGraphemeCount 12' , ( ) => {
364+ Assert . IsEqual ( Guard . StringGraphemeCount ( '😄😄😄' ) , 3 )
365+ } )
366+ Test ( 'Should StringGraphemeCount 13' , ( ) => {
367+ Assert . IsEqual ( Guard . StringGraphemeCount ( '😄🎉🔥' ) , 3 )
368+ } )
369+ Test ( 'Should StringGraphemeCount 14' , ( ) => {
370+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'Hello 😄!' ) , 8 )
371+ } )
372+ Test ( 'Should StringGraphemeCount 15' , ( ) => {
373+ Assert . IsEqual ( Guard . StringGraphemeCount ( '𝄞' ) , 1 )
374+ } )
375+ Test ( 'Should StringGraphemeCount 16' , ( ) => {
376+ Assert . IsEqual ( Guard . StringGraphemeCount ( '𝄞𝄞' ) , 2 )
377+ } )
378+ Test ( 'Should StringGraphemeCount 17' , ( ) => {
379+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'A𝄞B' ) , 3 )
380+ } )
381+ Test ( 'Should StringGraphemeCount 18' , ( ) => {
382+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a😄b' ) , 3 )
383+ } )
384+ Test ( 'Should StringGraphemeCount 19' , ( ) => {
385+ Assert . IsEqual ( Guard . StringGraphemeCount ( '😄🎉' ) , 2 )
386+ } )
387+ Test ( 'Should StringGraphemeCount 20' , ( ) => {
388+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🗺️' ) , 1 )
389+ } )
390+ Test ( 'Should StringGraphemeCount 21' , ( ) => {
391+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🗺️✈️' ) , 2 )
392+ } )
393+ Test ( 'Should StringGraphemeCount 22' , ( ) => {
394+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🗺️a' ) , 2 )
395+ } )
396+ Test ( 'Should StringGraphemeCount 23' , ( ) => {
397+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🗺️\u0301' ) , 1 )
398+ } )
399+ Test ( 'Should StringGraphemeCount 24' , ( ) => {
400+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🇳🇿' ) , 1 )
401+ } )
402+ Test ( 'Should StringGraphemeCount 25' , ( ) => {
403+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🇳🇿🇰🇷' ) , 2 )
404+ } )
405+ Test ( 'Should StringGraphemeCount 26' , ( ) => {
406+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'NZ🇳🇿' ) , 3 )
407+ } )
408+ Test ( 'Should StringGraphemeCount 27' , ( ) => {
409+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🇳🇿😄' ) , 2 )
410+ } )
411+ Test ( 'Should StringGraphemeCount 28' , ( ) => {
412+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a😄e\u0301' ) , 3 )
413+ } )
414+ Test ( 'Should StringGraphemeCount 29' , ( ) => {
415+ Assert . IsEqual ( Guard . StringGraphemeCount ( '😄🇳🇿e\u0301' ) , 3 )
416+ } )
417+ Test ( 'Should StringGraphemeCount 30' , ( ) => {
418+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🧳🇰🇷abc' ) , 5 )
419+ } )
420+ Test ( 'Should StringGraphemeCount 31' , ( ) => {
421+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a🇰🇷😄🗺️e\u0301' ) , 5 )
422+ } )
423+ Test ( 'Should StringGraphemeCount 32' , ( ) => {
424+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🇳🇿🇰🇷🇯🇵' ) , 3 )
425+ } )
426+ Test ( 'Should StringGraphemeCount 33' , ( ) => {
427+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a\u0301\u0323' ) , 1 ) // a + acute + dot below
428+ } )
429+ Test ( 'Should StringGraphemeCount 34' , ( ) => {
430+ Assert . IsEqual ( Guard . StringGraphemeCount ( '\u0301b' ) , 2 ) // combining mark + b
431+ } )
432+ Test ( 'Should StringGraphemeCount 35' , ( ) => {
433+ Assert . IsEqual ( Guard . StringGraphemeCount ( '\uDC00' ) , 1 )
434+ } )
435+ Test ( 'Should StringGraphemeCount 36' , ( ) => {
436+ Assert . IsEqual ( Guard . StringGraphemeCount ( '🏝️🛳️' ) , 2 )
437+ } )
438+ Test ( 'Should StringGraphemeCount 37' , ( ) => {
439+ Assert . IsEqual ( Guard . StringGraphemeCount ( '✈️🗺️' ) , 2 )
440+ } )
441+ Test ( 'Should StringGraphemeCount 38' , ( ) => {
442+ Assert . IsEqual ( Guard . StringGraphemeCount ( 'a🇳🇿🧳b' ) , 4 )
443+ } )
444+ Test ( 'Should StringGraphemeCount 39' , ( ) => {
445+ Assert . IsEqual ( Guard . StringGraphemeCount ( '𝄞𝄢𝄫' ) , 3 ) // multiple musical symbols (surrogate pairs)
446+ } )
0 commit comments