Added printing of status code by response classes. Close #8

This commit is contained in:
Erik C. Thauvin 2023-09-28 23:34:02 -07:00
parent 7b3e4adfc8
commit 1fca084fc9
3 changed files with 37 additions and 11 deletions

View file

@ -302,3 +302,14 @@ $ java -jar httpstatus-1.1.0.jar
226: IM Used
...
```
You can also print status codes by [response classes](https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes):
```sh
$ java -jar httpstatus-1.1.0.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
204: No Content
...
```

View file

@ -100,9 +100,18 @@ public final class Reasons {
public static void main(final String... args) {
if (args.length >= 1) {
for (final String key : args) {
final String value = REASON_PHRASES.get(key);
if (value != null) {
System.out.println(key + ": " + value);
if (key.endsWith("xx")) {
var cat = key.charAt(0);
REASON_PHRASES.forEach((k, v) -> {
if (k.charAt(0) == cat) {
System.out.println(k + ": " + v);
}
});
} else {
final String value = REASON_PHRASES.get(key);
if (value != null) {
System.out.println(key + ": " + value);
}
}
}
} else {

View file

@ -71,28 +71,34 @@ class ReasonsMainTest {
@Test
void testMain() {
Reasons.main("401");
assertThat(outContent.toString().contains(Reasons.getReasonPhrase("401"))).as("401").isTrue();
assertThat(outContent.toString().contains("500")).as("401 no 500").isFalse();
assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("401")).as("401");
assertThat(outContent.toString()).doesNotContain("500").as("401 no 500");
}
@Test
void testMainAll() {
Reasons.main();
assertThat(outContent.toString().contains(Reasons.getReasonPhrase(301))).as("301").isTrue();
assertThat(outContent.toString().contains(Reasons.getReasonPhrase(404))).as("404").isTrue();
assertThat(outContent.toString()).contains(Reasons.getReasonPhrase(301)).as("301");
assertThat(outContent.toString()).contains(Reasons.getReasonPhrase(404)).as("404");
}
@Test
void testMainArgs() {
Reasons.main("500", "302");
assertThat(outContent.toString().contains(Reasons.getReasonPhrase("500"))).as("500 (302)").isTrue();
assertThat(outContent.toString().contains(Reasons.getReasonPhrase("302"))).as("(500) 302").isTrue();
assertThat(outContent.toString().contains("404")).as("500/302 not 404").isFalse();
assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("500")).as("500 (302)");
assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("302")).as("(500) 302");
assertThat(outContent.toString()).doesNotContain("404").as("500/302 not 404");
}
@Test
void testMainArgsClass() {
Reasons.main("2xx");
assertThat(outContent.toString()).contains(Reasons.getReasonPhrase("200")).as("2xx");
}
@Test
void testMainInvalid() {
Reasons.main("aaa");
assertThat(outContent.toString().isEmpty()).as("invalid argument: aaa").isTrue();
assertThat(outContent.toString()).as("invalid argument: aaa").isEmpty();
}
}