@@ -158,33 +158,41 @@ public void testConstructorParameters() throws MalformedPackageURLException {
158158 if (invalid ) {
159159 try {
160160 PackageURL purl = new PackageURL (type , namespace , name , version , map , subpath );
161- Assert .fail ("Invalid package url components should have caused an exception: " + purl );
161+ // If we get here, then only the scheme can be invalid
162+ verifyComponentsEquals (purl , type , namespace , name , version , subpath , qualifiers );
163+
164+ if (!cpurlString .equals (purl .toString ())) {
165+ throw new MalformedPackageURLException ("The PackageURL scheme is invalid for purl: " + purl );
166+ }
167+
168+ Assert .fail ("Invalid package url components should have caused an exception: " + purl .toString ());
162169 } catch (MalformedPackageURLException e ) {
163170 Assert .assertNotNull (e .getMessage ());
164171 }
165172 continue ;
166173 }
167174
168175 PackageURL purl = new PackageURL (type , namespace , name , version , map , subpath );
169-
176+ verifyComponentsEquals ( purl , type , namespace , name , version , subpath , qualifiers );
170177 Assert .assertEquals (cpurlString , purl .canonicalize ());
171- Assert .assertEquals ("pkg" , purl .getScheme ());
172- Assert .assertEquals (type , purl .getType ());
173- Assert .assertEquals (namespace , purl .getNamespace ());
174- Assert .assertEquals (name , purl .getName ());
175- Assert .assertEquals (version , purl .getVersion ());
176- Assert .assertEquals (subpath , purl .getSubpath ());
177- if (qualifiers != null ) {
178- Assert .assertNotNull (purl .getQualifiers ());
179- Assert .assertEquals (qualifiers .length (), purl .getQualifiers ().size ());
180- qualifiers .keySet ().forEach (key -> {
181- String value = qualifiers .getString (key );
182- Assert .assertTrue (purl .getQualifiers ().containsKey (key ));
183- Assert .assertEquals (value , purl .getQualifiers ().get (key ));
184- });
185- PackageURL purl2 = new PackageURL (type , namespace , name , version , hashMap , subpath );
186- Assert .assertEquals (purl .getQualifiers (), purl2 .getQualifiers ());
187- }
178+ }
179+ }
180+
181+ private static void verifyComponentsEquals (PackageURL purl , String type , String namespace , String name , String version , String subpath , JSONObject qualifiers ) {
182+ Assert .assertEquals ("pkg" , purl .getScheme ());
183+ Assert .assertEquals (type , purl .getType ());
184+ Assert .assertEquals (namespace , purl .getNamespace ());
185+ Assert .assertEquals (name , purl .getName ());
186+ Assert .assertEquals (version , purl .getVersion ());
187+ Assert .assertEquals (subpath , purl .getSubpath ());
188+ if (qualifiers != null ) {
189+ Assert .assertNotNull (purl .getQualifiers ());
190+ Assert .assertEquals (qualifiers .length (), purl .getQualifiers ().size ());
191+ qualifiers .keySet ().forEach ((key ) -> {
192+ String value = qualifiers .getString (key );
193+ Assert .assertTrue (purl .getQualifiers ().containsKey (key ));
194+ Assert .assertEquals (value , purl .getQualifiers ().get (key ));
195+ });
188196 }
189197 }
190198
@@ -352,6 +360,19 @@ public void testStandardTypes() {
352360 Assert .assertEquals ("pub" , PackageURL .StandardTypes .PUB );
353361 Assert .assertEquals ("pypi" , PackageURL .StandardTypes .PYPI );
354362 Assert .assertEquals ("rpm" , PackageURL .StandardTypes .RPM );
363+ Assert .assertEquals ("hackage" , PackageURL .StandardTypes .HACKAGE );
364+ Assert .assertEquals ("hex" , PackageURL .StandardTypes .HEX );
365+ Assert .assertEquals ("huggingface" , PackageURL .StandardTypes .HUGGINGFACE );
366+ Assert .assertEquals ("luarocks" , PackageURL .StandardTypes .LUAROCKS );
367+ Assert .assertEquals ("maven" , PackageURL .StandardTypes .MAVEN );
368+ Assert .assertEquals ("mlflow" , PackageURL .StandardTypes .MLFLOW );
369+ Assert .assertEquals ("npm" , PackageURL .StandardTypes .NPM );
370+ Assert .assertEquals ("nuget" , PackageURL .StandardTypes .NUGET );
371+ Assert .assertEquals ("qpkg" , PackageURL .StandardTypes .QPKG );
372+ Assert .assertEquals ("oci" , PackageURL .StandardTypes .OCI );
373+ Assert .assertEquals ("pub" , PackageURL .StandardTypes .PUB );
374+ Assert .assertEquals ("pypi" , PackageURL .StandardTypes .PYPI );
375+ Assert .assertEquals ("rpm" , PackageURL .StandardTypes .RPM );
355376 Assert .assertEquals ("swid" , PackageURL .StandardTypes .SWID );
356377 Assert .assertEquals ("swift" , PackageURL .StandardTypes .SWIFT );
357378 }
0 commit comments