Merge branch '5.2.x'

This commit is contained in:
Sam Brannen
2020-07-07 14:18:56 +02:00
3 changed files with 107 additions and 14 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 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.
@@ -288,10 +288,72 @@ class ProfilesTests {
@Test
void sensibleToString() {
assertThat(Profiles.of("spring & framework", "java | kotlin").toString()).isEqualTo("spring & framework or java | kotlin");
assertThat(Profiles.of("spring")).hasToString("spring");
assertThat(Profiles.of("(spring & framework) | (spring & java)")).hasToString("(spring & framework) | (spring & java)");
assertThat(Profiles.of("(spring&framework)|(spring&java)")).hasToString("(spring&framework)|(spring&java)");
assertThat(Profiles.of("spring & framework", "java | kotlin")).hasToString("spring & framework or java | kotlin");
assertThat(Profiles.of("java | kotlin", "spring & framework")).hasToString("java | kotlin or spring & framework");
}
private void assertMalformed(Supplier<Profiles> supplier) {
@Test
void sensibleEquals() {
assertEqual("(spring & framework) | (spring & java)");
assertEqual("(spring&framework)|(spring&java)");
assertEqual("spring & framework", "java | kotlin");
// Ensure order of individual expressions does not affect equals().
String expression1 = "A | B";
String expression2 = "C & (D | E)";
Profiles profiles1 = Profiles.of(expression1, expression2);
Profiles profiles2 = Profiles.of(expression2, expression1);
assertThat(profiles1).isEqualTo(profiles2);
assertThat(profiles2).isEqualTo(profiles1);
}
private void assertEqual(String... expressions) {
Profiles profiles1 = Profiles.of(expressions);
Profiles profiles2 = Profiles.of(expressions);
assertThat(profiles1).isEqualTo(profiles2);
assertThat(profiles2).isEqualTo(profiles1);
}
@Test
void sensibleHashCode() {
assertHashCode("(spring & framework) | (spring & java)");
assertHashCode("(spring&framework)|(spring&java)");
assertHashCode("spring & framework", "java | kotlin");
// Ensure order of individual expressions does not affect hashCode().
String expression1 = "A | B";
String expression2 = "C & (D | E)";
Profiles profiles1 = Profiles.of(expression1, expression2);
Profiles profiles2 = Profiles.of(expression2, expression1);
assertThat(profiles1).hasSameHashCodeAs(profiles2);
}
private void assertHashCode(String... expressions) {
Profiles profiles1 = Profiles.of(expressions);
Profiles profiles2 = Profiles.of(expressions);
assertThat(profiles1).hasSameHashCodeAs(profiles2);
}
@Test
void equalsAndHashCodeAreNotBasedOnLogicalStructureOfNodesWithinExpressionTree() {
Profiles profiles1 = Profiles.of("A | B");
Profiles profiles2 = Profiles.of("B | A");
assertThat(profiles1.matches(activeProfiles("A"))).isTrue();
assertThat(profiles1.matches(activeProfiles("B"))).isTrue();
assertThat(profiles2.matches(activeProfiles("A"))).isTrue();
assertThat(profiles2.matches(activeProfiles("B"))).isTrue();
assertThat(profiles1).isNotEqualTo(profiles2);
assertThat(profiles2).isNotEqualTo(profiles1);
assertThat(profiles1.hashCode()).isNotEqualTo(profiles2.hashCode());
}
private static void assertMalformed(Supplier<Profiles> supplier) {
assertThatIllegalArgumentException().isThrownBy(
supplier::get)
.withMessageContaining("Malformed");