Polish "Fix asymmetry of equals when element has trailing dashes"

See gh-34804
pull/36620/head
Andy Wilkinson 1 year ago
parent a86429a62a
commit b06e7e60f9

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -406,7 +406,7 @@ public final class ConfigurationPropertyName implements Comparable<Configuration
int i2 = 0;
while (i1 < l1) {
if (i2 >= l2) {
return remainderIsNotAlphanumeric(e1, i, i1);
return remainderIsDashes(e1, i, i1);
}
char ch1 = e1.charAt(i, i1);
char ch2 = e2.charAt(i, i2);
@ -487,6 +487,21 @@ public final class ConfigurationPropertyName implements Comparable<Configuration
return true;
}
private boolean remainderIsDashes(Elements elements, int element, int index) {
if (elements.getType(element).isIndexed()) {
return false;
}
int length = elements.getLength(element);
do {
char c = Character.toLowerCase(elements.charAt(element, index++));
if (c != '-') {
return false;
}
}
while (index < length);
return true;
}
@Override
public int hashCode() {
int hashCode = this.hashCode;

@ -693,21 +693,20 @@ class ConfigurationPropertyNameTests {
assertThat(n2).isNotEqualTo(n1);
}
@Test
void equalsWhenAdaptedNameMatchesDueToRemovalOfTrailingCharacters() {
// gh-30317
@Test // gh-30317
void equalsWhenAdaptedNameMatchesDueToRemovalOfTrailingNonUniformCharacters() {
ConfigurationPropertyName name1 = ConfigurationPropertyName.of("example.demo");
ConfigurationPropertyName name2 = ConfigurationPropertyName.adapt("example.demo$$", '.');
assertThat(name1).isEqualTo(name2);
assertThat(name2).isEqualTo(name1);
}
@Test
void equalsSymmetricWhenNameMatchesDueToRemovalOfTrailingDashes() {
ConfigurationPropertyName n1 = ConfigurationPropertyName.of("foobar");
ConfigurationPropertyName n2 = ConfigurationPropertyName.of("foobar--");
assertThat(n1).isEqualTo(n2);
@Test // gh-34804
void equalsSymmetricWhenNameMatchesDueToIgnoredTrailingDashes() {
ConfigurationPropertyName n1 = ConfigurationPropertyName.of("example.demo");
ConfigurationPropertyName n2 = ConfigurationPropertyName.of("example.demo--");
assertThat(n2).isEqualTo(n1);
assertThat(n1).isEqualTo(n2);
}
@Test

Loading…
Cancel
Save