@@ -4,21 +4,53 @@ const assert = require('assert');
44function runAllTests ( ) {
55 // Test 1: Basic ASCII Characters
66 console . log ( 'Running basic ASCII character tests...' ) ;
7- assert . strictEqual ( wcswidth ( 'Hello' ) , 5 , 'ASCII string should have correct width' ) ;
7+ assert . strictEqual (
8+ wcswidth ( 'Hello' ) ,
9+ 5 ,
10+ 'ASCII string should have correct width'
11+ ) ;
812 assert . strictEqual ( wcswidth ( '123' ) , 3 , 'Numbers should have correct width' ) ;
9- assert . strictEqual ( wcswidth ( '!@#' ) , 3 , 'Special characters should have correct width' ) ;
13+ assert . strictEqual (
14+ wcswidth ( '!@#' ) ,
15+ 3 ,
16+ 'Special characters should have correct width'
17+ ) ;
1018
1119 // Test 2: CJK Characters (Chinese, Japanese, Korean)
1220 console . log ( 'Running CJK character tests...' ) ;
13- assert . strictEqual ( wcswidth ( '你好' ) , 4 , 'Chinese characters should have width 2 each' ) ;
14- assert . strictEqual ( wcswidth ( 'こんにちは' ) , 10 , 'Japanese characters should have width 2 each' ) ;
15- assert . strictEqual ( wcswidth ( '안녕하세요' ) , 10 , 'Korean characters should have width 2 each' ) ;
21+ assert . strictEqual (
22+ wcswidth ( '你好' ) ,
23+ 4 ,
24+ 'Chinese characters should have width 2 each'
25+ ) ;
26+ assert . strictEqual (
27+ wcswidth ( 'こんにちは' ) ,
28+ 10 ,
29+ 'Japanese characters should have width 2 each'
30+ ) ;
31+ assert . strictEqual (
32+ wcswidth ( '안녕하세요' ) ,
33+ 10 ,
34+ 'Korean characters should have width 2 each'
35+ ) ;
1636
1737 // Test 3: Mixed Content
1838 console . log ( 'Running mixed content tests...' ) ;
19- assert . strictEqual ( wcswidth ( 'Hello 世界' ) , 10 , 'Mixed ASCII and CJK should have correct width' ) ;
20- assert . strictEqual ( wcswidth ( '123 你好' ) , 8 , 'Mixed numbers and CJK should have correct width' ) ;
21- assert . strictEqual ( wcswidth ( '!@# こんにちは' ) , 14 , 'Mixed special chars and CJK should have correct width' ) ;
39+ assert . strictEqual (
40+ wcswidth ( 'Hello 世界' ) ,
41+ 10 ,
42+ 'Mixed ASCII and CJK should have correct width'
43+ ) ;
44+ assert . strictEqual (
45+ wcswidth ( '123 你好' ) ,
46+ 8 ,
47+ 'Mixed numbers and CJK should have correct width'
48+ ) ;
49+ assert . strictEqual (
50+ wcswidth ( '!@# こんにちは' ) ,
51+ 14 ,
52+ 'Mixed special chars and CJK should have correct width'
53+ ) ;
2254
2355 // Test 4: Control Characters
2456 console . log ( 'Running control character tests...' ) ;
@@ -29,21 +61,57 @@ function runAllTests() {
2961
3062 // Test 5: Fullwidth Characters
3163 console . log ( 'Running fullwidth character tests...' ) ;
32- assert . strictEqual ( wcswidth ( 'ABC' ) , 6 , 'Fullwidth Latin should have width 2 each' ) ;
33- assert . strictEqual ( wcswidth ( '123' ) , 6 , 'Fullwidth numbers should have width 2 each' ) ;
34- assert . strictEqual ( wcswidth ( '!?' ) , 4 , 'Fullwidth punctuation should have width 2 each' ) ;
64+ assert . strictEqual (
65+ wcswidth ( 'ABC' ) ,
66+ 6 ,
67+ 'Fullwidth Latin should have width 2 each'
68+ ) ;
69+ assert . strictEqual (
70+ wcswidth ( '123' ) ,
71+ 6 ,
72+ 'Fullwidth numbers should have width 2 each'
73+ ) ;
74+ assert . strictEqual (
75+ wcswidth ( '!?' ) ,
76+ 4 ,
77+ 'Fullwidth punctuation should have width 2 each'
78+ ) ;
3579
3680 // Test 6: Combining Characters
3781 console . log ( 'Running combining character tests...' ) ;
38- assert . strictEqual ( wcswidth ( 'e\u0301' ) , 1 , 'Combining character should have width 1' ) ;
39- assert . strictEqual ( wcswidth ( 'a\u0308' ) , 1 , 'Combining character should have width 1' ) ;
82+ assert . strictEqual (
83+ wcswidth ( 'e\u0301' ) ,
84+ 1 ,
85+ 'Combining character should have width 1'
86+ ) ;
87+ assert . strictEqual (
88+ wcswidth ( 'a\u0308' ) ,
89+ 1 ,
90+ 'Combining character should have width 1'
91+ ) ;
4092
4193 // Test 7: Individual Character Widths
4294 console . log ( 'Running individual character width tests...' ) ;
43- assert . strictEqual ( wcwidth ( 'A' . charCodeAt ( 0 ) ) , 1 , 'ASCII character should have width 1' ) ;
44- assert . strictEqual ( wcwidth ( '你' . charCodeAt ( 0 ) ) , 2 , 'CJK character should have width 2' ) ;
45- assert . strictEqual ( wcwidth ( '\t' . charCodeAt ( 0 ) ) , - 1 , 'Control character should return -1' ) ;
46- assert . strictEqual ( wcwidth ( 'A' . charCodeAt ( 0 ) ) , 2 , 'Fullwidth character should have width 2' ) ;
95+ assert . strictEqual (
96+ wcwidth ( 'A' . charCodeAt ( 0 ) ) ,
97+ 1 ,
98+ 'ASCII character should have width 1'
99+ ) ;
100+ assert . strictEqual (
101+ wcwidth ( '你' . charCodeAt ( 0 ) ) ,
102+ 2 ,
103+ 'CJK character should have width 2'
104+ ) ;
105+ assert . strictEqual (
106+ wcwidth ( '\t' . charCodeAt ( 0 ) ) ,
107+ - 1 ,
108+ 'Control character should return -1'
109+ ) ;
110+ assert . strictEqual (
111+ wcwidth ( 'A' . charCodeAt ( 0 ) ) ,
112+ 2 ,
113+ 'Fullwidth character should have width 2'
114+ ) ;
47115
48116 // Test 8: Edge Cases
49117 console . log ( 'Running edge case tests...' ) ;
0 commit comments