1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package example.localservice;
16
17 import org.fourthline.cling.binding.LocalServiceBinder;
18 import org.fourthline.cling.binding.annotations.AnnotationLocalServiceBinder;
19 import org.fourthline.cling.model.DefaultServiceManager;
20 import org.fourthline.cling.model.action.ActionInvocation;
21 import org.fourthline.cling.model.meta.ActionArgument;
22 import org.fourthline.cling.model.meta.DeviceDetails;
23 import org.fourthline.cling.model.meta.LocalDevice;
24 import org.fourthline.cling.model.meta.LocalService;
25 import org.fourthline.cling.model.types.Datatype;
26 import org.fourthline.cling.model.types.DeviceType;
27 import org.fourthline.cling.test.data.SampleData;
28 import org.testng.annotations.DataProvider;
29 import org.testng.annotations.Test;
30
31 import static org.testng.Assert.assertEquals;
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class EnumTest {
51
52 public LocalDevice createTestDevice(Class serviceClass) throws Exception {
53
54 LocalServiceBinder binder = new AnnotationLocalServiceBinder();
55 LocalService svc = binder.read(serviceClass);
56 svc.setManager(new DefaultServiceManager(svc, serviceClass));
57
58 return new LocalDevice(
59 SampleData.createLocalDeviceIdentity(),
60 new DeviceType("mydomain", "CustomDevice", 1),
61 new DeviceDetails("A Custom Device"),
62 svc
63 );
64 }
65
66 @DataProvider(name = "devices")
67 public Object[][] getDevices() {
68
69
70 try {
71 return new LocalDevice[][]{
72 {createTestDevice(MyServiceWithEnum.class)},
73 };
74 } catch (Exception ex) {
75 ex.printStackTrace(System.err);
76
77 throw new RuntimeException(ex);
78 }
79 }
80
81 @Test(dataProvider = "devices")
82 public void validateBinding(LocalDevice device) {
83
84 LocalService svc = device.getServices()[0];
85
86 assertEquals(svc.getStateVariables().length, 1);
87 assertEquals(svc.getStateVariables()[0].getTypeDetails().getDatatype().getBuiltin(), Datatype.Builtin.STRING);
88
89 assertEquals(svc.getActions().length, 3);
90
91 assertEquals(svc.getAction("GetColor").getArguments().length, 1);
92 assertEquals(svc.getAction("GetColor").getArguments()[0].getName(), "Out");
93 assertEquals(svc.getAction("GetColor").getArguments()[0].getDirection(), ActionArgument.Direction.OUT);
94 assertEquals(svc.getAction("GetColor").getArguments()[0].getRelatedStateVariableName(), "Color");
95
96 assertEquals(svc.getAction("SetColor").getArguments().length, 1);
97 assertEquals(svc.getAction("SetColor").getArguments()[0].getName(), "In");
98 assertEquals(svc.getAction("SetColor").getArguments()[0].getDirection(), ActionArgument.Direction.IN);
99 assertEquals(svc.getAction("SetColor").getArguments()[0].getRelatedStateVariableName(), "Color");
100
101 }
102
103 @Test(dataProvider = "devices")
104 public void invokeActions(LocalDevice device) {
105 LocalService svc = device.getServices()[0];
106
107 ActionInvocation setColor = new ActionInvocation(svc.getAction("SetColor"));
108 setColor.setInput("In", MyServiceWithEnum.Color.Blue);
109 svc.getExecutor(setColor.getAction()).execute(setColor);
110 assertEquals(setColor.getFailure(), null);
111 assertEquals(setColor.getOutput().length, 0);
112
113 ActionInvocation getColor = new ActionInvocation(svc.getAction("GetColor"));
114 svc.getExecutor(getColor.getAction()).execute(getColor);
115 assertEquals(getColor.getFailure(), null);
116 assertEquals(getColor.getOutput().length, 1);
117 assertEquals(getColor.getOutput()[0].toString(), MyServiceWithEnum.Color.Blue.name());
118
119 }
120 }