On 23 July 2017 at 16:48,  <fschumac...@apache.org> wrote:
> Author: fschumacher
> Date: Sun Jul 23 15:48:41 2017
> New Revision: 1802732
>
> URL: http://svn.apache.org/viewvc?rev=1802732&view=rev
> Log:
> Change equals and hashCode so that they are more independent from 
> JMeterVariables.
>
> Modified:
>     
> jmeter/trunk/src/core/org/apache/jmeter/threads/UnmodifiableJMeterVariables.java
>     
> jmeter/trunk/test/src/org/apache/jmeter/threads/TestUnmodifiableJMeterVariables.java
>
> Modified: 
> jmeter/trunk/src/core/org/apache/jmeter/threads/UnmodifiableJMeterVariables.java
> URL: 
> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/threads/UnmodifiableJMeterVariables.java?rev=1802732&r1=1802731&r2=1802732&view=diff
> ==============================================================================
> --- 
> jmeter/trunk/src/core/org/apache/jmeter/threads/UnmodifiableJMeterVariables.java
>  (original)
> +++ 
> jmeter/trunk/src/core/org/apache/jmeter/threads/UnmodifiableJMeterVariables.java
>  Sun Jul 23 15:48:41 2017
> @@ -40,8 +40,13 @@ class UnmodifiableJMeterVariables extend
>
>      @Override
>      public int hashCode() {
> -        return variables.hashCode();
> +        final int prime = 31;
> +        int result = 1;
> +        result = prime * result

This is always 31.

> +                + ((variables == null) ? 0 : variables.hashCode());
> +        return result;

Not sure what the point of adding 31 is.

Why not just use:

return variables == null) ? 0 : variables.hashCode()

>      }
> +
>
>      @Override
>      public String getThreadName() {
> @@ -88,8 +93,21 @@ class UnmodifiableJMeterVariables extend
>          return variables.get(key);
>      }
>
> +    @Override
>      public boolean equals(Object obj) {
> -        return variables.equals(obj);
> +        if (this == obj)
> +            return true;
> +        if (obj == null)
> +            return false;
> +        if (getClass() != obj.getClass())
> +            return false;

Since null is not and instanceof anything, the last two checks can be
simplified to:

    if (!obj instanceof UnmodifiableJMeterVariables) {
        return false;
    }

> +        UnmodifiableJMeterVariables other = (UnmodifiableJMeterVariables) 
> obj;
> +        if (variables == null) {
> +            if (other.variables != null)
> +                return false;
> +        } else if (!variables.equals(other.variables))
> +            return false;
> +        return true;
>      }
>
>      @Override
>
> Modified: 
> jmeter/trunk/test/src/org/apache/jmeter/threads/TestUnmodifiableJMeterVariables.java
> URL: 
> http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/threads/TestUnmodifiableJMeterVariables.java?rev=1802732&r1=1802731&r2=1802732&view=diff
> ==============================================================================
> --- 
> jmeter/trunk/test/src/org/apache/jmeter/threads/TestUnmodifiableJMeterVariables.java
>  (original)
> +++ 
> jmeter/trunk/test/src/org/apache/jmeter/threads/TestUnmodifiableJMeterVariables.java
>  Sun Jul 23 15:48:41 2017
> @@ -124,13 +124,26 @@ public class TestUnmodifiableJMeterVaria
>      }
>
>      @Test
> -    public void testEqualsObject() {
> -        assertThat(unmodifiables, CoreMatchers.is(vars));
> +    public void testEqualsObjectSymmetry() {
> +        UnmodifiableJMeterVariables otherUnmodifiables = new 
> UnmodifiableJMeterVariables(vars);
> +        assertThat(unmodifiables, CoreMatchers.is(otherUnmodifiables));
> +        assertThat(otherUnmodifiables, CoreMatchers.is(unmodifiables));
> +    }
> +
> +    @Test
> +    public void testEqualsObjectReflexivity() {
> +        assertThat(unmodifiables, CoreMatchers.is(unmodifiables));
> +    }
> +
> +    @Test
> +    public void testEqualsObjectWithJMeterVariables() {
> +        assertThat(unmodifiables.equals(vars), 
> CoreMatchers.is(vars.equals(unmodifiables)));
>      }
>
>      @Test
>      public void testHashCode() {
> -        assertThat(unmodifiables.hashCode(), 
> CoreMatchers.is(vars.hashCode()));
> +        UnmodifiableJMeterVariables otherUnmodifiables = new 
> UnmodifiableJMeterVariables(vars);
> +        assertThat(unmodifiables.hashCode(), 
> CoreMatchers.is(otherUnmodifiables.hashCode()));
>      }
>
>  }
>
>

Reply via email to