@@ -24,6 +24,31 @@ describe("semver.mjs exports", () => {
2424 expect ( parseVersion ( "0.0.1" ) ) . toEqual ( { major : 0 , minor : 0 , patch : 1 } )
2525 expect ( parseVersion ( "999.999.999" ) ) . toEqual ( { major : 999 , minor : 999 , patch : 999 } )
2626 } )
27+
28+ it ( "should throw TypeError for null" , ( ) => {
29+ expect ( ( ) => parseVersion ( null as unknown as string ) ) . toThrow ( TypeError )
30+ expect ( ( ) => parseVersion ( null as unknown as string ) ) . toThrow (
31+ "parseVersion: version must be a string, got null" ,
32+ )
33+ } )
34+
35+ it ( "should throw TypeError for undefined" , ( ) => {
36+ expect ( ( ) => parseVersion ( undefined as unknown as string ) ) . toThrow ( TypeError )
37+ expect ( ( ) => parseVersion ( undefined as unknown as string ) ) . toThrow (
38+ "parseVersion: version must be a string, got undefined" ,
39+ )
40+ } )
41+
42+ it ( "should throw TypeError for non-string inputs" , ( ) => {
43+ expect ( ( ) => parseVersion ( 123 as unknown as string ) ) . toThrow ( TypeError )
44+ expect ( ( ) => parseVersion ( 123 as unknown as string ) ) . toThrow (
45+ "parseVersion: version must be a string, got number" ,
46+ )
47+ expect ( ( ) => parseVersion ( { } as unknown as string ) ) . toThrow ( TypeError )
48+ expect ( ( ) => parseVersion ( { } as unknown as string ) ) . toThrow (
49+ "parseVersion: version must be a string, got object" ,
50+ )
51+ } )
2752 } )
2853
2954 describe ( "compareVersions" , ( ) => {
@@ -76,6 +101,95 @@ describe("semver.mjs exports", () => {
76101 compareVersions ( { major : 1 , minor : 2 , patch : 0 } , { major : 1 , minor : 1 , patch : 9 } ) ,
77102 ) . toBe ( 1 )
78103 } )
104+
105+ it ( "should throw TypeError for null parameter a" , ( ) => {
106+ expect ( ( ) =>
107+ compareVersions ( null as unknown as { major : number ; minor : number ; patch : number } , {
108+ major : 1 ,
109+ minor : 0 ,
110+ patch : 0 ,
111+ } ) ,
112+ ) . toThrow ( TypeError )
113+ expect ( ( ) =>
114+ compareVersions ( null as unknown as { major : number ; minor : number ; patch : number } , {
115+ major : 1 ,
116+ minor : 0 ,
117+ patch : 0 ,
118+ } ) ,
119+ ) . toThrow ( "compareVersions: a must be a ParsedVersion object, got null" )
120+ } )
121+
122+ it ( "should throw TypeError for undefined parameter b" , ( ) => {
123+ expect ( ( ) =>
124+ compareVersions (
125+ { major : 1 , minor : 0 , patch : 0 } ,
126+ undefined as unknown as { major : number ; minor : number ; patch : number } ,
127+ ) ,
128+ ) . toThrow ( TypeError )
129+ expect ( ( ) =>
130+ compareVersions (
131+ { major : 1 , minor : 0 , patch : 0 } ,
132+ undefined as unknown as { major : number ; minor : number ; patch : number } ,
133+ ) ,
134+ ) . toThrow ( "compareVersions: b must be a ParsedVersion object, got undefined" )
135+ } )
136+
137+ it ( "should throw TypeError for non-object parameters" , ( ) => {
138+ expect ( ( ) =>
139+ compareVersions ( "1.0.0" as unknown as { major : number ; minor : number ; patch : number } , {
140+ major : 1 ,
141+ minor : 0 ,
142+ patch : 0 ,
143+ } ) ,
144+ ) . toThrow ( TypeError )
145+ expect ( ( ) =>
146+ compareVersions ( "1.0.0" as unknown as { major : number ; minor : number ; patch : number } , {
147+ major : 1 ,
148+ minor : 0 ,
149+ patch : 0 ,
150+ } ) ,
151+ ) . toThrow ( "compareVersions: a must be a ParsedVersion object, got string" )
152+ } )
153+
154+ it ( "should throw TypeError for empty objects" , ( ) => {
155+ expect ( ( ) =>
156+ compareVersions ( { } as unknown as { major : number ; minor : number ; patch : number } , {
157+ major : 1 ,
158+ minor : 0 ,
159+ patch : 0 ,
160+ } ) ,
161+ ) . toThrow ( TypeError )
162+ expect ( ( ) =>
163+ compareVersions ( { } as unknown as { major : number ; minor : number ; patch : number } , {
164+ major : 1 ,
165+ minor : 0 ,
166+ patch : 0 ,
167+ } ) ,
168+ ) . toThrow ( "compareVersions: a must have numeric major, minor, and patch properties" )
169+ } )
170+
171+ it ( "should throw TypeError for objects with non-numeric properties" , ( ) => {
172+ expect ( ( ) =>
173+ compareVersions (
174+ { major : "1" , minor : 0 , patch : 0 } as unknown as {
175+ major : number
176+ minor : number
177+ patch : number
178+ } ,
179+ { major : 1 , minor : 0 , patch : 0 } ,
180+ ) ,
181+ ) . toThrow ( TypeError )
182+ expect ( ( ) =>
183+ compareVersions (
184+ { major : 1 , minor : null , patch : 0 } as unknown as {
185+ major : number
186+ minor : number
187+ patch : number
188+ } ,
189+ { major : 1 , minor : 0 , patch : 0 } ,
190+ ) ,
191+ ) . toThrow ( "compareVersions: a must have numeric major, minor, and patch properties" )
192+ } )
79193 } )
80194
81195 describe ( "checkVersionCompatibility" , ( ) => {
0 commit comments