2 * Copyright (c) 2016 CableLabs and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.unimgr.utils;
11 import org.junit.Test;
12 import org.opendaylight.yang.gen.v1.urn.mef.unimgr.ext.rev160725.ForwardingConstruct1;
13 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.forwarding.constructs.ForwardingConstruct;
14 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
15 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcSpec;
17 import java.util.ArrayList;
18 import java.util.List;
19 import java.util.Optional;
20 import java.util.stream.Collectors;
22 import static org.junit.Assert.*;
23 import static org.mockito.Matchers.eq;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.when;
27 public class NullAwareDatastoreGetterTest {
30 public void testCollectNotNull() {
32 ForwardingConstruct fc = mock(ForwardingConstruct.class);
33 FcSpec expected = mock(FcSpec.class);
35 when(fc.getFcSpec()).thenReturn(expected);
38 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fc)
39 .collect(x -> x::getFcSpec)
43 assertNotNull(actualOptional);
44 assertTrue(actualOptional.isPresent());
45 assertEquals(expected, actualOptional.get());
49 public void testCollectNull() {
51 ForwardingConstruct fc = mock(ForwardingConstruct.class);
52 when(fc.getFcSpec()).thenReturn(null);
55 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fc)
56 .collect(x -> x::getFcSpec)
60 assertNotNull(actualOptional);
61 assertFalse(actualOptional.isPresent());
65 public void testCollectInputNull() {
67 ForwardingConstruct fc = null;
70 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fc)
71 .collect(x -> x::getFcSpec)
75 assertNotNull(actualOptional);
76 assertFalse(actualOptional.isPresent());
80 public void testCollectInputOptionalPresent() {
82 ForwardingConstruct fc = mock(ForwardingConstruct.class);
83 FcSpec expected = mock(FcSpec.class);
85 when(fc.getFcSpec()).thenReturn(expected);
87 Optional<ForwardingConstruct> fcOptional = Optional.of(fc);
90 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fcOptional)
91 .collect(x -> x::getFcSpec)
95 assertNotNull(actualOptional);
96 assertTrue(actualOptional.isPresent());
97 assertEquals(expected, actualOptional.get());
101 public void testCollectInputOptionalAbsent() {
103 Optional<ForwardingConstruct> fcOptional = Optional.empty();
106 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fcOptional)
107 .collect(x -> x::getFcSpec)
111 assertNotNull(actualOptional);
112 assertFalse(actualOptional.isPresent());
116 public void testCollectInputGoogleOptionalPresent() {
118 ForwardingConstruct fc = mock(ForwardingConstruct.class);
119 FcSpec expected = mock(FcSpec.class);
121 when(fc.getFcSpec()).thenReturn(expected);
123 com.google.common.base.Optional<ForwardingConstruct> fcOptional = com.google.common.base.Optional.of(fc);
126 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fcOptional)
127 .collect(x -> x::getFcSpec)
131 assertNotNull(actualOptional);
132 assertTrue(actualOptional.isPresent());
133 assertEquals(expected, actualOptional.get());
137 public void testCollectInputGoogleOptionalAbsent() {
139 com.google.common.base.Optional<ForwardingConstruct> fcOptional = com.google.common.base.Optional.absent();
142 Optional<FcSpec> actualOptional = new NullAwareDatastoreGetter<>(fcOptional)
143 .collect(x -> x::getFcSpec)
147 assertNotNull(actualOptional);
148 assertFalse(actualOptional.isPresent());
152 public void testCollectAugmentationNotNull() {
154 ForwardingConstruct fc = mock(ForwardingConstruct.class);
155 ForwardingConstruct1 expected = mock(ForwardingConstruct1.class);
157 when(fc.getAugmentation(eq(ForwardingConstruct1.class))).thenReturn(expected);
160 Optional<ForwardingConstruct1> actualOptional = new NullAwareDatastoreGetter<>(fc)
161 .collect(x -> x::getAugmentation, ForwardingConstruct1.class)
165 assertNotNull(actualOptional);
166 assertTrue(actualOptional.isPresent());
167 assertEquals(expected, actualOptional.get());
171 public void testCollectAugmentationNull() {
173 ForwardingConstruct fc = mock(ForwardingConstruct.class);
174 when(fc.getAugmentation(eq(ForwardingConstruct1.class))).thenReturn(null);
177 Optional<ForwardingConstruct1> actualOptional = new NullAwareDatastoreGetter<>(fc)
178 .collect(x -> x::getAugmentation, ForwardingConstruct1.class)
182 assertNotNull(actualOptional);
183 assertFalse(actualOptional.isPresent());
187 public void testCollectManyNotNull() {
189 ForwardingConstruct fc = mock(ForwardingConstruct.class);
191 FcPort fcPortA = mock(FcPort.class);
192 FcPort fcPortZ = mock(FcPort.class);
194 List<FcPort> fcPorts = new ArrayList<>();
195 fcPorts.add(fcPortA);
196 fcPorts.add(fcPortZ);
198 when(fc.getFcPort()).thenReturn(fcPorts);
201 List<NullAwareDatastoreGetter<FcPort>> nullAwareDatastoreGetters = new NullAwareDatastoreGetter<>(fc)
202 .collectMany(x -> x::getFcPort);
205 assertNotNull(nullAwareDatastoreGetters);
206 assertEquals(2, nullAwareDatastoreGetters.size());
208 NullAwareDatastoreGetter fcPortNadg1 = nullAwareDatastoreGetters.get(0);
209 assertTrue(fcPortNadg1.get().isPresent());
210 assertEquals(fcPortA, fcPortNadg1.get().get());
212 NullAwareDatastoreGetter fcPortNadg2 = nullAwareDatastoreGetters.get(1);
213 assertTrue(fcPortNadg2.get().isPresent());
214 assertEquals(fcPortZ, fcPortNadg2.get().get());
218 public void testCollectManyNull() {
220 ForwardingConstruct fc = mock(ForwardingConstruct.class);
221 List<FcPort> fcPorts = null;
223 when(fc.getFcPort()).thenReturn(fcPorts);
226 List<NullAwareDatastoreGetter<FcPort>> nullAwareDatastoreGetters = new NullAwareDatastoreGetter<>(fc)
227 .collectMany(x -> x::getFcPort);
230 assertNotNull(nullAwareDatastoreGetters);
231 assertEquals(0, nullAwareDatastoreGetters.size());