View Javadoc
1   /*
2    * Copyright (C) 2013 4th Line GmbH, Switzerland
3    *
4    * The contents of this file are subject to the terms of either the GNU
5    * Lesser General Public License Version 2 or later ("LGPL") or the
6    * Common Development and Distribution License Version 1 or later
7    * ("CDDL") (collectively, the "License"). You may not use this file
8    * except in compliance with the License. See LICENSE.txt for more
9    * information.
10   *
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
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   * @author Christian Bauer
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 }