blob: 7333ef7db4cb3156fd7cdd2f41356fc371b1a61f [file] [log] [blame]
Sho SHIMIZUe571d442016-02-11 19:10:52 -08001/*
2 * Copyright 2016 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.net.newresource;
17
18import com.google.common.testing.EqualsTester;
19import org.junit.Test;
20import org.onlab.packet.VlanId;
21import org.onlab.util.Bandwidth;
22import org.onosproject.net.DeviceId;
23import org.onosproject.net.PortNumber;
24
25import java.util.Optional;
26
27import static org.hamcrest.Matchers.is;
28import static org.junit.Assert.*;
29
30/**
31 * Unit test for DiscreteResource.
32 */
33public class DiscreteResourceTest {
34
35 private static final DeviceId D1 = DeviceId.deviceId("of:001");
36 private static final DeviceId D2 = DeviceId.deviceId("of:002");
37 private static final PortNumber P1 = PortNumber.portNumber(1);
38 private static final VlanId VLAN1 = VlanId.vlanId((short) 100);
39 private static final Bandwidth BW1 = Bandwidth.gbps(2);
40
41 @Test
42 public void testEquals() {
43 DiscreteResource resource1 = Resources.discrete(D1, P1, VLAN1).resource();
44 DiscreteResource sameAsResource1 = Resources.discrete(D1, P1, VLAN1).resource();
45 DiscreteResource resource2 = Resources.discrete(D2, P1, VLAN1).resource();
46
47 new EqualsTester()
48 .addEqualityGroup(resource1, sameAsResource1)
49 .addEqualityGroup(resource2)
50 .testEquals();
51 }
52
53 @Test
54 public void testChild() {
55 DiscreteResource r1 = Resources.discrete(D1).resource().child(P1);
56 DiscreteResource sameAsR2 = Resources.discrete(D1, P1).resource();
57
58 assertThat(r1, is(sameAsR2));
59 }
60
61 @Test
62 public void testThereIsParent() {
63 DiscreteResource resource = Resources.discrete(D1, P1, VLAN1).resource();
64 DiscreteResource parent = Resources.discrete(D1, P1).resource();
65
66 assertThat(resource.parent(), is(Optional.of(parent)));
67 }
68
69 @Test
70 public void testNoParent() {
71 DiscreteResource resource = Resources.discrete(D1).resource();
72
73 assertThat(resource.parent(), is(Optional.of(Resource.ROOT)));
74 }
75
76 @Test
77 public void testTypeOf() {
78 DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource();
79 assertThat(discrete.isTypeOf(DeviceId.class), is(false));
80 assertThat(discrete.isTypeOf(PortNumber.class), is(false));
81 assertThat(discrete.isTypeOf(VlanId.class), is(true));
82 }
83
84 @Test
85 public void testSubTypeOf() {
86 DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource();
87 assertThat(discrete.isSubTypeOf(DeviceId.class), is(true));
88 assertThat(discrete.isSubTypeOf(PortNumber.class), is(true));
89 assertThat(discrete.isSubTypeOf(VlanId.class), is(true));
90 assertThat(discrete.isSubTypeOf(Bandwidth.class), is(false));
91 }
92
93 @Test
94 public void testBase() {
95 DiscreteResource resource = Resources.discrete(D1).resource();
96
97 DeviceId child = (DeviceId) resource.last();
98 assertThat(child, is(D1));
99 }
100
101 @Test
102 public void testValueAs() {
103 DiscreteResource resource = Resources.discrete(D1).resource();
104
105 Optional<DeviceId> volume = resource.valueAs(DeviceId.class);
106 assertThat(volume.get(), is(D1));
107 }
108
109 @Test
110 public void testValueOfRoot() {
111 DiscreteResource resource = Resource.ROOT;
112
113 assertThat(resource.valueAs(Object.class), is(Optional.empty()));
114 }
115}