/** * Computes a hash code from attributes: {@code number}, {@code text}. * @return hashCode value */ @Override public int hashCode() { int h = 5381; h += (h << 5) + number.hashCode(); h += (h << 5) + text.hashCode(); return h; }
/** * Construct a new immutable {@code JCGLVersionNumber} instance. * @param major The value for the {@code major} attribute * @param minor The value for the {@code minor} attribute * @param micro The value for the {@code micro} attribute * @return An immutable JCGLVersionNumber instance */ public static JCGLVersionNumber of(int major, int minor, int micro) { return new JCGLVersionNumber(major, minor, micro); }
private boolean equalTo(JCGLVersion another) { return number.equals(another.number) && text.equals(another.text); }
@Test public void testIdentities() { final JCGLVersionNumber v0 = new JCGLVersionNumber(1, 0, 2); Assert.assertEquals(1L, (long) v0.getVersionMajor()); Assert.assertEquals(0L, (long) v0.getVersionMinor()); Assert.assertEquals(2L, (long) v0.getVersionMicro()); }
@Test public void testHashCode() { final JCGLVersionNumber v0 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v1 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v2 = new JCGLVersionNumber(1, 1, 0); final JCGLVersionNumber v3 = new JCGLVersionNumber(1, 0, 1); Assert.assertEquals((long) v0.hashCode(), (long) (v0.hashCode())); Assert.assertEquals((long) v0.hashCode(), (long) (v1.hashCode())); Assert.assertNotEquals((long) v0.hashCode(), (long) (v2.hashCode())); Assert.assertNotEquals((long) v0.hashCode(), (long) (v3.hashCode())); }
final JCGLVersionNumber v0 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v1 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v2 = new JCGLVersionNumber(2, 0, 0); final JCGLVersionNumber v3 = new JCGLVersionNumber(0, 0, 0); final JCGLVersionNumber v4 = new JCGLVersionNumber(2, 1, 0); final JCGLVersionNumber v5 = new JCGLVersionNumber(0, 1, 0); final JCGLVersionNumber v6 = new JCGLVersionNumber(0, 0, 1); final JCGLVersionNumber v7 = new JCGLVersionNumber(2, 1, 1); Assert.assertEquals((long) v0.compareTo(v1), 0L); Assert.assertTrue(v0.compareTo(v2) < 0); Assert.assertTrue(v0.compareTo(v3) > 0); Assert.assertTrue(v0.compareTo(v4) < 0); Assert.assertTrue(v0.compareTo(v5) > 0); Assert.assertTrue(v0.compareTo(v6) > 0); Assert.assertTrue(v0.compareTo(v7) < 0); Assert.assertEquals((long) v1.compareTo(v0), 0L); Assert.assertTrue(v1.compareTo(v2) < 0); Assert.assertTrue(v1.compareTo(v3) > 0); Assert.assertTrue(v1.compareTo(v4) < 0); Assert.assertTrue(v1.compareTo(v5) > 0); Assert.assertTrue(v1.compareTo(v6) > 0); Assert.assertTrue(v1.compareTo(v7) < 0); Assert.assertTrue(v2.compareTo(v0) > 0); Assert.assertEquals((long) v2.compareTo(v2), 0L); Assert.assertTrue(v2.compareTo(v3) > 0); Assert.assertTrue(v2.compareTo(v4) < 0);
@Test public void testToString() { final JCGLVersionNumber v0 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v1 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v2 = new JCGLVersionNumber(1, 1, 0); final JCGLVersionNumber v3 = new JCGLVersionNumber(1, 0, 1); Assert.assertEquals(v0.toString(), v0.toString()); Assert.assertEquals(v0.toString(), v1.toString()); Assert.assertNotEquals(v0.toString(), v2.toString()); Assert.assertNotEquals(v0.toString(), v3.toString()); } }
/** * @return The major version of the implementation. */ public int getVersionMajor() { return this.number.getVersionMajor(); }
/** * @return The micro version of the implementation (typically zero). */ public int getVersionMicro() { return this.number.getVersionMicro(); }
/** * @return The minor version of the implementation. */ public int getVersionMinor() { return this.number.getVersionMinor(); }
@Override default int compareTo( final @Nullable JCGLVersionType other) { return this.number().compareTo(other.number()); } }
/** * This instance is equal to all instances of {@code JCGLVersionNumber} that have equal attribute values. * @return {@code true} if {@code this} is equal to {@code another} instance */ @Override public boolean equals(Object another) { if (this == another) return true; return another instanceof JCGLVersionNumber && equalTo((JCGLVersionNumber) another); }
/** * Builds a new {@link JCGLVersionNumber JCGLVersionNumber}. * @return An immutable instance of JCGLVersionNumber * @throws java.lang.IllegalStateException if any required attributes are missing */ public JCGLVersionNumber build() { if (initBits != 0) { throw new IllegalStateException(formatRequiredAttributesMessage()); } return new JCGLVersionNumber(this); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = (prime * result) + this.number.hashCode(); result = (prime * result) + this.text.hashCode(); return result; }
@Override public boolean equals( final @Nullable Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (this.getClass() != obj.getClass()) { return false; } final JCGLVersion other = (JCGLVersion) obj; return this.number.equals(other.number) && this.text.equals(other.text); }
@Test public void testEquals() { final JCGLVersionNumber v0 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v1 = new JCGLVersionNumber(1, 0, 0); final JCGLVersionNumber v2 = new JCGLVersionNumber(1, 1, 0); final JCGLVersionNumber v3 = new JCGLVersionNumber(1, 0, 1); Assert.assertEquals(v0, v0); Assert.assertNotEquals(v0, null); Assert.assertNotEquals(v0, Integer.valueOf(23)); Assert.assertEquals(v0, v1); Assert.assertNotEquals(v0, v2); Assert.assertNotEquals(v0, v3); }
@Override public int compareTo( final @Nullable JCGLVersionNumber other) { final JCGLVersionNumber o = NullCheck.notNull(other, "Other"); if (this.equals(other)) { return 0; } if (this.version_major < o.version_major) { return -1; } if (this.version_major > o.version_major) { return 1; } if (this.version_minor < o.version_minor) { return -1; } if (this.version_minor > o.version_minor) { return 1; } if (this.version_micro < o.version_micro) { return -1; } if (this.version_micro > o.version_micro) { return 1; } throw new UnreachableCodeException(); }
@Test public void testEquals() { final JCGLVersion v0 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v1 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v2 = JCGLVersion.make( new JCGLVersionNumber(2, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v3 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.0x"); Assert.assertEquals(v0, v0); Assert.assertNotEquals(v0, null); Assert.assertNotEquals(v0, (Integer.valueOf(23))); Assert.assertEquals(v0, v1); Assert.assertNotEquals(v0, v2); Assert.assertNotEquals(v0, v3); }
@Test public void testHashCode() { final JCGLVersion v0 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v1 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v2 = JCGLVersion.make( new JCGLVersionNumber(2, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v3 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.0x"); Assert.assertEquals((long) v0.hashCode(), (long) (v0.hashCode())); Assert.assertEquals((long) v0.hashCode(), (long) (v1.hashCode())); Assert.assertNotEquals((long) v0.hashCode(), (long) (v2.hashCode())); Assert.assertNotEquals((long) v0.hashCode(), (long) (v3.hashCode())); }
@Test public void testToString() { final JCGLVersion v0 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v1 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v2 = JCGLVersion.make( new JCGLVersionNumber(2, 0, 0), "OpenGL ES GLSL ES 1.00"); final JCGLVersion v3 = JCGLVersion.make( new JCGLVersionNumber(1, 0, 0), "OpenGL ES GLSL ES 1.0x"); Assert.assertEquals(v0.toString(), v0.toString()); Assert.assertEquals(v0.toString(), v1.toString()); Assert.assertNotEquals(v0.toString(), v2.toString()); Assert.assertNotEquals(v0.toString(), v3.toString()); } }