1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.fourthline.cling.test.model;
17
18 import org.fourthline.cling.model.meta.LocalDevice;
19 import org.fourthline.cling.model.meta.RemoteDevice;
20 import org.fourthline.cling.model.meta.Service;
21 import org.fourthline.cling.model.types.ServiceType;
22 import org.fourthline.cling.test.data.SampleData;
23 import org.fourthline.cling.test.data.SampleDeviceEmbeddedOne;
24 import org.fourthline.cling.test.data.SampleDeviceEmbeddedTwo;
25 import org.fourthline.cling.test.data.SampleDeviceRootLocal;
26 import org.testng.annotations.Test;
27
28 import static org.testng.Assert.assertEquals;
29
30
31
32
33 public class DeviceGraphTest {
34
35 @Test
36 public void findRoot() throws Exception {
37 LocalDevice ld = SampleData.createLocalDevice();
38
39 LocalDevice root = ld.getEmbeddedDevices()[0].getRoot();
40 assertEquals(root.getIdentity().getUdn(), SampleDeviceRootLocal.getRootUDN());
41
42 root = ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getRoot();
43 assertEquals(root.getIdentity().getUdn(), SampleDeviceRootLocal.getRootUDN());
44
45 }
46
47 @Test
48 public void findEmbeddedDevices() throws Exception {
49 LocalDevice ld = SampleData.createLocalDevice();
50
51 LocalDevice[] embedded = ld.findEmbeddedDevices();
52 assertEquals(embedded.length, 2);
53
54 boolean haveOne = false, haveTwo = false;
55
56 for (LocalDevice em : embedded) {
57 if (em.getIdentity().getUdn().equals(ld.getEmbeddedDevices()[0].getIdentity().getUdn())) haveOne = true;
58 if (em.getIdentity().getUdn().equals(ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getIdentity().getUdn()))
59 haveTwo = true;
60 }
61
62 assert haveOne;
63 assert haveTwo;
64 }
65
66 @Test
67 public void findDevicesWithUDN() throws Exception {
68 LocalDevice ld = SampleData.createLocalDevice();
69
70 LocalDevice ldOne = ld.findDevice(SampleDeviceRootLocal.getRootUDN());
71 assertEquals(ldOne.getIdentity().getUdn(), SampleDeviceRootLocal.getRootUDN());
72
73 LocalDevice ldTwo = ld.findDevice(SampleDeviceEmbeddedOne.getEmbeddedOneUDN());
74 assertEquals(ldTwo.getIdentity().getUdn(), SampleDeviceEmbeddedOne.getEmbeddedOneUDN());
75
76 LocalDevice ldThree = ld.findDevice(SampleDeviceEmbeddedTwo.getEmbeddedTwoUDN());
77 assertEquals(ldThree.getIdentity().getUdn(), SampleDeviceEmbeddedTwo.getEmbeddedTwoUDN());
78
79 RemoteDevice rd = SampleData.createRemoteDevice();
80
81 RemoteDevice rdOne = rd.findDevice(SampleDeviceRootLocal.getRootUDN());
82 assertEquals(rdOne.getIdentity().getUdn(), SampleDeviceRootLocal.getRootUDN());
83
84 RemoteDevice rdTwo = rd.findDevice(SampleDeviceEmbeddedOne.getEmbeddedOneUDN());
85 assertEquals(rdTwo.getIdentity().getUdn(), SampleDeviceEmbeddedOne.getEmbeddedOneUDN());
86
87 RemoteDevice rdThree = rd.findDevice(SampleDeviceEmbeddedTwo.getEmbeddedTwoUDN());
88 assertEquals(rdThree.getIdentity().getUdn(), SampleDeviceEmbeddedTwo.getEmbeddedTwoUDN());
89
90 }
91
92 @Test
93 public void findDevicesWithDeviceType() throws Exception {
94 LocalDevice ld = SampleData.createLocalDevice();
95
96 LocalDevice[] ldOne = ld.findDevices(ld.getType());
97 assertEquals(ldOne.length, 1);
98 assertEquals(ldOne[0].getIdentity().getUdn(), SampleDeviceRootLocal.getRootUDN());
99
100 LocalDevice[] ldTwo = ld.findDevices(ld.getEmbeddedDevices()[0].getType());
101 assertEquals(ldTwo.length, 1);
102 assertEquals(ldTwo[0].getIdentity().getUdn(), SampleDeviceEmbeddedOne.getEmbeddedOneUDN());
103
104 LocalDevice[] ldThree = ld.findDevices(ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getType());
105 assertEquals(ldThree.length, 1);
106 assertEquals(ldThree[0].getIdentity().getUdn(), SampleDeviceEmbeddedTwo.getEmbeddedTwoUDN());
107
108 RemoteDevice rd = SampleData.createRemoteDevice();
109
110 RemoteDevice[] rdOne = rd.findDevices(rd.getType());
111 assertEquals(rdOne.length, 1);
112 assertEquals(rdOne[0].getIdentity().getUdn(), SampleDeviceRootLocal.getRootUDN());
113
114 RemoteDevice[] rdTwo = rd.findDevices(rd.getEmbeddedDevices()[0].getType());
115 assertEquals(rdTwo.length, 1);
116 assertEquals(rdTwo[0].getIdentity().getUdn(), SampleDeviceEmbeddedOne.getEmbeddedOneUDN());
117
118 RemoteDevice[] rdThree = rd.findDevices(rd.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getType());
119 assertEquals(rdThree.length, 1);
120 assertEquals(rdThree[0].getIdentity().getUdn(), SampleDeviceEmbeddedTwo.getEmbeddedTwoUDN());
121
122 }
123
124 @Test
125 public void findServicesAll() throws Exception {
126 LocalDevice ld = SampleData.createLocalDevice();
127
128 Service one = ld.getServices()[0];
129 Service two = ld.getEmbeddedDevices()[0].getServices()[0];
130 Service three = ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getServices()[0];
131
132 Service[] services = ld.findServices();
133
134 boolean haveOne = false, haveTwo = false, haveThree = false;
135 for (Service service : services) {
136 if (service.getServiceId().equals(one.getServiceId())) haveOne = true;
137 if (service.getServiceId().equals(two.getServiceId())) haveTwo = true;
138 if (service.getServiceId().equals(three.getServiceId())) haveThree = true;
139 }
140 assert haveOne;
141 assert haveTwo;
142 assert haveThree;
143 }
144
145 @Test
146 public void findServicesType() throws Exception {
147 LocalDevice ld = SampleData.createLocalDevice();
148
149 Service one = ld.getServices()[0];
150 Service two = ld.getEmbeddedDevices()[0].getServices()[0];
151 Service three = ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getServices()[0];
152
153 Service[] services = ld.findServices(one.getServiceType());
154 assertEquals(services.length, 1);
155 assertEquals(services[0].getServiceId(), one.getServiceId());
156
157 services = ld.findServices(two.getServiceType());
158 assertEquals(services.length, 1);
159 assertEquals(services[0].getServiceId(), two.getServiceId());
160
161 services = ld.findServices(three.getServiceType());
162 assertEquals(services.length, 1);
163 assertEquals(services[0].getServiceId(), three.getServiceId());
164 }
165
166 @Test
167 public void findServicesId() throws Exception {
168 LocalDevice ld = SampleData.createLocalDevice();
169
170 Service one = ld.getServices()[0];
171 Service two = ld.getEmbeddedDevices()[0].getServices()[0];
172 Service three = ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getServices()[0];
173
174 Service service = ld.findService(one.getServiceId());
175 assertEquals(service.getServiceId(), one.getServiceId());
176
177 service = ld.findService(two.getServiceId());
178 assertEquals(service.getServiceId(), two.getServiceId());
179
180 service = ld.findService(three.getServiceId());
181 assertEquals(service.getServiceId(), three.getServiceId());
182 }
183
184 @Test
185 public void findServicesFirst() throws Exception {
186 LocalDevice ld = SampleData.createLocalDevice();
187
188 Service one = ld.getServices()[0];
189 Service two = ld.getEmbeddedDevices()[0].getServices()[0];
190 Service three = ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getServices()[0];
191
192 Service service = ld.findService(one.getServiceType());
193 assertEquals(service.getServiceId(), one.getServiceId());
194
195 service = ld.findService(two.getServiceType());
196 assertEquals(service.getServiceId(), two.getServiceId());
197
198 service = ld.findService(three.getServiceType());
199 assertEquals(service.getServiceId(), three.getServiceId());
200 }
201
202 @Test
203 public void findServiceTypes() throws Exception {
204 LocalDevice ld = SampleData.createLocalDevice();
205
206 ServiceType[] svcTypes = ld.findServiceTypes();
207 assertEquals(svcTypes.length, 3);
208
209 boolean haveOne = false, haveTwo = false, haveThree = false;
210
211 for (ServiceType svcType : svcTypes) {
212 if (svcType.equals(ld.getServices()[0].getServiceType())) haveOne = true;
213 if (svcType.equals(ld.getEmbeddedDevices()[0].getServices()[0].getServiceType())) haveTwo = true;
214 if (svcType.equals(ld.getEmbeddedDevices()[0].getEmbeddedDevices()[0].getServices()[0].getServiceType()))
215 haveThree = true;
216 }
217
218 assert haveOne;
219 assert haveTwo;
220 assert haveThree;
221
222 }
223 }