Skip to content

Commit 89428c1

Browse files
author
Sampada
authored
BAEL-3894: Apache Commons vs Google Guava (eugenp#10206)
1 parent f51149d commit 89428c1

File tree

2 files changed

+227
-0
lines changed

2 files changed

+227
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
package com.baeldung.apache.commons;
2+
3+
import static org.junit.Assert.assertArrayEquals;
4+
import static org.junit.Assert.assertEquals;
5+
import static org.junit.Assert.assertFalse;
6+
7+
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.List;
10+
11+
import org.apache.commons.collections4.BidiMap;
12+
import org.apache.commons.collections4.MultiValuedMap;
13+
import org.apache.commons.collections4.bidimap.TreeBidiMap;
14+
import org.apache.commons.collections4.map.MultiKeyMap;
15+
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
16+
import org.junit.Test;
17+
18+
public class CollectionsUnitTest {
19+
private final static BidiMap<Integer, String> daysOfWeek = new TreeBidiMap<Integer, String>();
20+
private final static MultiValuedMap<String, String> groceryCart = new ArrayListValuedHashMap<>();
21+
private final static MultiKeyMap<String, String> days = new MultiKeyMap<String, String>();
22+
private final static MultiKeyMap<String, String> cityCoordinates = new MultiKeyMap<String, String>();
23+
24+
static {
25+
daysOfWeek.put(1, "Monday");
26+
daysOfWeek.put(2, "Tuesday");
27+
daysOfWeek.put(3, "Wednesday");
28+
daysOfWeek.put(4, "Thursday");
29+
daysOfWeek.put(5, "Friday");
30+
daysOfWeek.put(6, "Saturday");
31+
daysOfWeek.put(7, "Sunday");
32+
33+
groceryCart.put("Fruits", "Apple");
34+
groceryCart.put("Fruits", "Grapes");
35+
groceryCart.put("Fruits", "Strawberries");
36+
groceryCart.put("Vegetables", "Spinach");
37+
groceryCart.put("Vegetables", "Cabbage");
38+
39+
days.put("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Weekday");
40+
days.put("Saturday", "Sunday", "Weekend");
41+
42+
cityCoordinates.put("40.7128° N", "74.0060° W", "New York");
43+
cityCoordinates.put("48.8566° N", "2.3522° E", "Paris");
44+
cityCoordinates.put("19.0760° N", "72.8777° E", "Mumbai");
45+
46+
}
47+
48+
@Test
49+
public void givenBidiMap_whenValue_thenKeyReturned() {
50+
assertEquals(Integer.valueOf(7), daysOfWeek.inverseBidiMap()
51+
.get("Sunday"));
52+
}
53+
54+
@Test
55+
public void givenBidiMap_whenKey_thenValueReturned() {
56+
assertEquals("Tuesday", daysOfWeek.get(2));
57+
}
58+
59+
@Test
60+
public void givenMultiValuedMap_whenFruitsFetched_thenFruitsReturned() {
61+
62+
List<String> fruits = Arrays.asList("Apple", "Grapes", "Strawberries");
63+
assertEquals(fruits, groceryCart.get("Fruits"));
64+
}
65+
66+
@Test
67+
public void givenMultiValuedMap_whenVeggiesFetched_thenVeggiesReturned() {
68+
List<String> veggies = Arrays.asList("Spinach", "Cabbage");
69+
assertEquals(veggies, groceryCart.get("Vegetables"));
70+
}
71+
72+
@Test
73+
public void givenMultiValuedMap_whenFuitsRemoved_thenVeggiesPreserved() {
74+
75+
assertEquals(5, groceryCart.size());
76+
77+
groceryCart.remove("Fruits");
78+
assertEquals(2, groceryCart.size());
79+
}
80+
81+
@Test
82+
public void givenDaysMultiKeyMap_whenFetched_thenOK() {
83+
assertFalse(days.get("Saturday", "Sunday")
84+
.equals("Weekday"));
85+
}
86+
87+
@Test
88+
public void givenCoordinatesMultiKeyMap_whenQueried_thenOK() {
89+
List<String> expectedLongitudes = Arrays.asList("72.8777° E", "2.3522° E", "74.0060° W");
90+
List<String> longitudes = new ArrayList<>();
91+
92+
cityCoordinates.forEach((key, value) -> {
93+
longitudes.add(key.getKey(1));
94+
});
95+
96+
assertArrayEquals(expectedLongitudes.toArray(), longitudes.toArray());
97+
98+
List<String> expectedCities = Arrays.asList("Mumbai", "Paris", "New York");
99+
List<String> cities = new ArrayList<>();
100+
101+
cityCoordinates.forEach((key, value) -> {
102+
cities.add(value);
103+
});
104+
105+
assertArrayEquals(expectedCities.toArray(), cities.toArray());
106+
107+
}
108+
109+
}
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package com.baeldung.guava;
2+
3+
import static org.junit.Assert.assertArrayEquals;
4+
import static org.junit.Assert.assertEquals;
5+
import static org.junit.Assert.assertTrue;
6+
7+
import java.util.Arrays;
8+
import java.util.List;
9+
10+
import org.junit.Test;
11+
12+
import com.google.common.collect.ArrayListMultimap;
13+
import com.google.common.collect.BiMap;
14+
import com.google.common.collect.HashBasedTable;
15+
import com.google.common.collect.HashBiMap;
16+
import com.google.common.collect.Multimap;
17+
import com.google.common.collect.Table;
18+
19+
public class GuavaUnitTest {
20+
private final static BiMap<Integer, String> daysOfWeek = HashBiMap.create();
21+
private final static Multimap<String, String> groceryCart = ArrayListMultimap.create();
22+
private final static Table<String, String, String> cityCoordinates = HashBasedTable.create();
23+
private final static Table<String, String, String> movies = HashBasedTable.create();
24+
25+
static {
26+
daysOfWeek.put(1, "Monday");
27+
daysOfWeek.put(2, "Tuesday");
28+
daysOfWeek.put(3, "Wednesday");
29+
daysOfWeek.put(4, "Thursday");
30+
daysOfWeek.put(5, "Friday");
31+
daysOfWeek.put(6, "Saturday");
32+
daysOfWeek.put(7, "Sunday");
33+
34+
groceryCart.put("Fruits", "Apple");
35+
groceryCart.put("Fruits", "Grapes");
36+
groceryCart.put("Fruits", "Strawberries");
37+
groceryCart.put("Vegetables", "Spinach");
38+
groceryCart.put("Vegetables", "Cabbage");
39+
40+
cityCoordinates.put("40.7128° N", "74.0060° W", "New York");
41+
cityCoordinates.put("48.8566° N", "2.3522° E", "Paris");
42+
cityCoordinates.put("19.0760° N", "72.8777° E", "Mumbai");
43+
44+
movies.put("Tom Hanks", "Meg Ryan", "You've Got Mail");
45+
movies.put("Tom Hanks", "Catherine Zeta-Jones", "The Terminal");
46+
movies.put("Bradley Cooper", "Lady Gaga", "A Star is Born");
47+
movies.put("Keenu Reaves", "Sandra Bullock", "Speed");
48+
movies.put("Tom Hanks", "Sandra Bullock", "Extremely Loud & Incredibly Close");
49+
}
50+
51+
@Test
52+
public void givenBiMap_whenValue_thenKeyReturned() {
53+
assertEquals(Integer.valueOf(7), daysOfWeek.inverse()
54+
.get("Sunday"));
55+
}
56+
57+
@Test
58+
public void givenBiMap_whenKey_thenValueReturned() {
59+
assertEquals("Tuesday", daysOfWeek.get(2));
60+
}
61+
62+
@Test
63+
public void givenMultiValuedMap_whenFruitsFetched_thenFruitsReturned() {
64+
65+
List<String> fruits = Arrays.asList("Apple", "Grapes", "Strawberries");
66+
assertEquals(fruits, groceryCart.get("Fruits"));
67+
}
68+
69+
@Test
70+
public void givenMultiValuedMap_whenVeggiesFetched_thenVeggiesReturned() {
71+
List<String> veggies = Arrays.asList("Spinach", "Cabbage");
72+
assertEquals(veggies, groceryCart.get("Vegetables"));
73+
}
74+
75+
@Test
76+
public void givenMultiValuedMap_whenFuitsRemoved_thenVeggiesPreserved() {
77+
78+
assertEquals(5, groceryCart.size());
79+
80+
groceryCart.remove("Fruits", "Apple");
81+
assertEquals(4, groceryCart.size());
82+
83+
groceryCart.removeAll("Fruits");
84+
assertEquals(2, groceryCart.size());
85+
}
86+
87+
@Test
88+
public void givenCoordinatesTable_whenFetched_thenOK() {
89+
90+
List<String> expectedLongitudes = Arrays.asList("74.0060° W", "2.3522° E", "72.8777° E");
91+
92+
assertArrayEquals(expectedLongitudes.toArray(), cityCoordinates.columnKeySet()
93+
.toArray());
94+
95+
List<String> expectedCities = Arrays.asList("New York", "Paris", "Mumbai");
96+
97+
assertArrayEquals(expectedCities.toArray(), cityCoordinates.values()
98+
.toArray());
99+
100+
assertTrue(cityCoordinates.rowKeySet()
101+
.contains("48.8566° N"));
102+
103+
}
104+
105+
@Test
106+
public void givenMoviesTable_whenFetched_thenOK() {
107+
assertEquals(3, movies.row("Tom Hanks")
108+
.size());
109+
110+
assertEquals(2, movies.column("Sandra Bullock")
111+
.size());
112+
113+
assertEquals("A Star is Born", movies.get("Bradley Cooper", "Lady Gaga"));
114+
115+
assertTrue(movies.containsValue("Speed"));
116+
117+
}
118+
}

0 commit comments

Comments
 (0)