Skip to content

Commit

Permalink
Merge pull request #34804 from eydunn
Browse files Browse the repository at this point in the history
* gh-34804:
  Polish "Fix asymmetry of equals when element has trailing dashes"
  Fix asymmetry of equals when element has trailing dashes

Closes gh-34804
  • Loading branch information
wilkinsona committed Jun 30, 2023
2 parents 7b565bd + b06e7e6 commit 2b89b87
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -406,7 +406,7 @@ private boolean dashIgnoringElementEquals(Elements e1, Elements e2, int i) {
int i2 = 0;
while (i1 < l1) {
if (i2 >= l2) {
return false;
return remainderIsDashes(e1, i, i1);
}
char ch1 = e1.charAt(i, i1);
char ch2 = e2.charAt(i, i2);
Expand Down Expand Up @@ -487,6 +487,21 @@ private boolean remainderIsNotAlphanumeric(Elements elements, int element, int i
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++));

This comment has been minimized.

Copy link
@mjustin

mjustin Nov 10, 2023

The toLowerCase conversion appears unnecessary here, since '-' is the only char whose Character.toLowerCase value produces '-'.

char c = elements.charAt(element, index++);

This comment has been minimized.

Copy link
@wilkinsona

wilkinsona Nov 10, 2023

Author Member

I think you're right, @mjustin. Thanks. Would you like to open a PR or an issue for the change?

This comment has been minimized.

Copy link
@wilkinsona

wilkinsona Nov 22, 2023

Author Member
if (c != '-') {
return false;
}
}
while (index < length);
return true;
}

@Override
public int hashCode() {
int hashCode = this.hashCode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -693,15 +693,22 @@ void equalsWhenNameStartsTheSameUsingDashedCompare() {
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 // 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
void isValidWhenValidShouldReturnTrue() {
assertThat(ConfigurationPropertyName.isValid("")).isTrue();
Expand Down

0 comments on commit 2b89b87

Please sign in to comment.