File: TruthGetOrDefault.md

package info (click to toggle)
error-prone-java 2.18.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 23,204 kB
  • sloc: java: 222,992; xml: 1,319; sh: 25; makefile: 7
file content (28 lines) | stat: -rw-r--r-- 1,039 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Expectation of `Truth.assertThat(map.getOrDefault(key,
defaultValue)).isEqualTo(expectedValue)` is unclear if the `defaultValue` is
same as `expectedValue`. If the test passes, its hard to say if `map` contained
`key, expectedValue` as an entry. Most likely, developer intended to verify that
`map` doesn't contain `'key` or perhaps map `key` isn't mapped to
`defaultValue`.

Additionally, same assertion can be simplified if `defaultValue` and
`expectedValue` are different constants to
`Truth.assertThat(map.get(key)).isEqualTo(expectedValue)`.

That is, prefer this:

```java
public static void doSomething(Map<String, String> map, String key, String expectedValue) {
  assertThat(map.get(key)).isEqualTo(expectedValue);
  assertThat(map).doesNotContainKey(key);
  assertThat(map).containsEntry(key, expectedValue);
}
```

to this:

```java
public static void doSomething(Map<String, String> map, String key, String defaultValue, String expectedValue) {
  assertThat(map.getOrDefault(key, defaultValue)).isEqualTo(expectedValue);
}
```