Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8362427

ModuleDescriptor.Version can return different hashcodes for equal objects

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P3 P3
    • tbd
    • 9, 11, 24
    • core-libs
    • Fix Understood
    • 9
    • generic
    • generic

      A DESCRIPTION OF THE PROBLEM :
      Version(in java.lang.module), using the String in it to calc hashcode(). And equals using compareTo() == 0, which impls by anthor way.


      ---------- BEGIN SOURCE ----------


      import java.lang.module.ModuleDescriptor.Version;
      import org.testng.annotations.Test;
      import org.testng.annotations.DataProvider;
      import static org.testng.Assert.*;

      @Test
      public class VersionTest {

          // equal version strings
          @DataProvider(name = "equalVersions")
          public Object[][] equalVersions() {
              return new Object[][]{

                  { "1", "1.0.0" },
                  { "1.0", "1.0.0" },
                  { "1.0-beta", "1.0.0-beta" },
                  { "01", "1" }, // Leading zeros in version number
                  { "1.0.1.0", "1.0.1" }, // Trailing zero in version number
                  { "1.0-alpha.0", "1.0-alpha" }, // Trailing zero in pre-release

              };
          }

          /**
           * Test compareTo with equal versions.
           */
          @Test(dataProvider = "equalVersions")
          public void testCompareEqualsVersions(String vs1, String vs2) {

              Version v1 = Version.parse(vs1);
              assertTrue(v1.compareTo(v1) == 0);

              Version v2 = Version.parse(vs2);
              assertTrue(v2.compareTo(v2) == 0);

              v1.equals(v2);
              assertTrue(v1.compareTo(v2) == 0);
              assertTrue(v2.compareTo(v1) == 0);
              assertEquals(v1, v2);
              assertEquals(v2, v1);

              assertEquals(v1.hashCode(), v2.hashCode(), "Hash codes must match for equal versions");
          }

      }
      ---------- END SOURCE ----------

            mr Mark Reinhold
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: