Skip to content

Commit 952209d

Browse files
committed
Implement tests for Language.java and LanguageSetBuilder classes
1 parent 5065892 commit 952209d

4 files changed

Lines changed: 56 additions & 13 deletions

File tree

protobuf-maven-plugin/src/main/java/io/github/ascopes/protobufmavenplugin/generation/Language.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package io.github.ascopes.protobufmavenplugin.generation;
1717

1818
import java.util.EnumSet;
19+
import java.util.Set;
1920

2021
/**
2122
* Supported generated source languages.
@@ -27,7 +28,7 @@ public enum Language {
2728
JAVA("java"),
2829
KOTLIN("kotlin"),
2930
PYTHON("python"),
30-
PYI("pyi"),
31+
PYTHON_STUBS("pyi"),
3132
RUBY("ruby");
3233

3334
private final String flagName;
@@ -45,7 +46,7 @@ public String getFlagName() {
4546
return flagName;
4647
}
4748

48-
public static LanguageSetBuilder languageSet() {
49+
public static LanguageSetBuilder setBuilder() {
4950
return new LanguageSetBuilder();
5051
}
5152

@@ -64,15 +65,13 @@ private LanguageSetBuilder() {
6465
}
6566

6667
public LanguageSetBuilder addIf(boolean condition, Language language) {
67-
return condition ? add(language) : this;
68-
}
69-
70-
public LanguageSetBuilder add(Language language) {
71-
values.add(language);
68+
if (condition) {
69+
values.add(language);
70+
}
7271
return this;
7372
}
7473

75-
public EnumSet<Language> build() {
74+
public Set<Language> build() {
7675
return values;
7776
}
7877
}

protobuf-maven-plugin/src/main/java/io/github/ascopes/protobufmavenplugin/mojo/AbstractGenerateMojo.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,11 +1066,11 @@ public void execute() throws MojoExecutionException, MojoFailureException {
10661066
return;
10671067
}
10681068

1069-
var enabledLanguages = Language.languageSet()
1069+
var enabledLanguages = Language.setBuilder()
10701070
.addIf(javaEnabled, Language.JAVA)
10711071
.addIf(kotlinEnabled, Language.KOTLIN)
10721072
.addIf(pythonEnabled, Language.PYTHON)
1073-
.addIf(pythonStubsEnabled, Language.PYI)
1073+
.addIf(pythonStubsEnabled, Language.PYTHON_STUBS)
10741074
.addIf(rubyEnabled, Language.RUBY)
10751075
.build();
10761076

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.github.ascopes.protobufmavenplugin.generation;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import org.junit.jupiter.api.DisplayName;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.params.ParameterizedTest;
8+
import org.junit.jupiter.params.provider.CsvSource;
9+
10+
@DisplayName("Language tests")
11+
class LanguageTest {
12+
13+
@CsvSource({
14+
" JAVA, --java_out=",
15+
" KOTLIN, --kotlin_out=",
16+
" PYTHON, --python_out=",
17+
"PYTHON_STUBS, --pyi_out=",
18+
" RUBY, --ruby_out=",
19+
})
20+
@DisplayName("Language enum members have the expected output flag format")
21+
@ParameterizedTest(name = "for {0}")
22+
void languageEnumMembersHaveExpectedOutputFlagFormat(Language language, String expectedFlag) {
23+
// When
24+
var actualFlag = "--%s_out=".formatted(language.getFlagName());
25+
26+
// Then
27+
assertThat(actualFlag).isEqualTo(expectedFlag);
28+
}
29+
30+
@DisplayName("LanguageSetBuilder creates an enum of the enabled languages")
31+
@Test
32+
void languageSetBuilderCreatesEnumOfEnabledLanguages() {
33+
// When
34+
var enumSet = Language.setBuilder()
35+
.addIf(true, Language.PYTHON_STUBS)
36+
.addIf(true, Language.PYTHON)
37+
.addIf(false, Language.RUBY)
38+
.addIf(true, Language.JAVA)
39+
.build();
40+
41+
// Then
42+
assertThat(enumSet)
43+
.containsExactlyInAnyOrder(Language.PYTHON_STUBS, Language.PYTHON, Language.JAVA);
44+
}
45+
}

protobuf-maven-plugin/src/test/java/io/github/ascopes/protobufmavenplugin/mojo/AbstractGenerateMojoTestTemplate.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
import org.mockito.ArgumentCaptor;
7777
import org.mockito.quality.Strictness;
7878

79-
@SuppressWarnings("removal")
8079
abstract class AbstractGenerateMojoTestTemplate<A extends AbstractGenerateMojo> {
8180

8281
@TempDir
@@ -1172,7 +1171,7 @@ static Stream<Arguments> languageEnablingCases() {
11721171
arguments("Java", consumer(a -> a.javaEnabled = true), EnumSet.of(Language.JAVA)),
11731172
arguments("Kotlin", consumer(a -> a.kotlinEnabled = true), EnumSet.of(Language.KOTLIN)),
11741173
arguments("Python", consumer(a -> a.pythonEnabled = true), EnumSet.of(Language.PYTHON)),
1175-
arguments("PYI", consumer(a -> a.pythonStubsEnabled = true), EnumSet.of(Language.PYI)),
1174+
arguments("PYI", consumer(a -> a.pythonStubsEnabled = true), EnumSet.of(Language.PYTHON_STUBS)),
11761175
arguments("Ruby", consumer(a -> a.rubyEnabled = true), EnumSet.of(Language.RUBY)),
11771176
// Combined cases
11781177
arguments(
@@ -1189,7 +1188,7 @@ static Stream<Arguments> languageEnablingCases() {
11891188
a.pythonEnabled = true;
11901189
a.pythonStubsEnabled = true;
11911190
}),
1192-
EnumSet.of(Language.PYTHON, Language.PYI)
1191+
EnumSet.of(Language.PYTHON, Language.PYTHON_STUBS)
11931192
),
11941193
arguments(
11951194
"everything",

0 commit comments

Comments
 (0)