4
import tango.io.Stdout;
5
import tango.text.xml.Document;
6
import tango.text.xml.DocPrinter;
7
import tango.math.random.Random;
8
import tango.text.convert.Integer;
13
DocPrinter!(char) printer;
14
char[] nsxsi="http://www.w3.org/2001/XMLSchema-instance";
15
char[] nsenc="http://www.w3.org/2001/12/soap-encoding";
16
char[] nssoap="http://www.w3.org/2001/12/soap-envelope";
17
char[] nsopc="http://opcfoundation.org/webservices/OPCDA/";
19
extern(C) void initXML(TestData *td) {
20
generator = new Random();
21
// generator.seed(delegate () { return cast(uint)0; });
23
printer = new DocPrinter!(char);
27
extern(C) void releaseXML(TestData *td) {
29
extern(C) void parseXML(TestData *td, uint iter) {
34
Document!(char) doc = new Document!(char);
35
doc.Node proot,pnode,node,node1,node2;
38
proot = doc.tree.element(nssoap,"Envelope");
39
proot.attribute(null,"xmlns",nssoap);
40
proot.attribute(null,"xmlns:xsi",nsxsi);
41
proot.attribute(null,"xmlns:enc",nsenc);
42
pnode = proot.element(nssoap,"Body");
44
node=pnode.element(nsopc,"WriteResponse");
47
node=pnode.element(nsopc,"WriteResult");
48
node.attribute(null,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
49
node.attribute(null,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
50
node.attribute(null,"ClientRequestHandle","WriteError");
51
node.attribute(null,"RevisedLocaleID","en");
52
node.attribute(null,"ServerState","running");
53
node1=node.element(nsopc,"RItemList");
54
node=pnode.element(nsopc,"Errors");
55
node.attribute(null,"ID","E_UNKNOWNITEMID");
56
node2=node.element(nsopc,"Text","The item does not exist in the server address space.");
57
node=pnode.element(nsopc,"Errors");
58
node.attribute(null,"ID","S_CLAMP");
59
node2=node.element(nsopc,"Text","The value written was accepted but the output was clamped.");
62
node=pnode.element(nsopc,"Items");
63
node.attribute(null,"ItemPath","");
64
node.attribute(null,"ItemName","WrongItemID1");
65
node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
66
node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
67
node1=node.element(nsopc,"Value");
68
node.attribute(null,"xsi:nil","true");
70
node=pnode.element(nsopc,"Items");
71
node.attribute(null,"ItemPath","");
72
node.attribute(null,"ItemName","WrongItemID2");
73
node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
74
node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
75
node1=node.element(nsopc,"Value");
76
node.attribute(null,"xsi:nil","true");
78
node=pnode.element(nsopc,"Items");
79
node.attribute(null,"ItemPath","/Reals");
80
node.attribute(null,"ItemName","Float1");
81
node.attribute(null,"ValueType","xsd:float");
82
node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
83
node1=node.element(nsopc,"Value","10.0141414");
84
node.attribute(null,"xsi:type","xsd:float");
86
node=pnode.element(nsopc,"Items");
87
node.attribute(null,"ItemPath","/Reals");
88
node.attribute(null,"ItemName","Float2");
89
node.attribute(null,"ValueType","xsd:float");
90
node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
91
node.attribute(null,"SuccessID","S_CLAMP");
92
node1=node.element(nsopc,"Value","1.07");
93
node.attribute(null,"xsi:type","xsd:float");
95
for (i=0;i<td.inc;i++) {
96
node=pnode.element(nsopc,"Items");
97
node.attribute(null,"ItemPath","/Integer");
98
node.attribute(null,"ItemName","IntN");
99
node.attribute(null,"ValueType","xsd:int");
100
node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
101
node.attribute(null,"SuccessID","S_CLAMP");
102
Integer.itoa!(char)(stmp, generator.uniform!(uint));
103
node1=node.element(nsopc,"Value", stmp);
104
node1.attribute(null,"xsi:type","xsd:int");
108
proot = doc.tree.element(null,"Envelope");
109
proot.attribute(null,"xmlns",nssoap);
110
proot.attribute(null,"xmlns:xsi",nsxsi);
111
proot.attribute(null,"xmlns:enc",nsenc);
112
proot.attribute(null,"xmlns:opc",nsopc);
113
pnode = proot.element(null,"Body");
115
node=pnode.element(null,"WriteResponse");
116
node.attribute(null,"xmlns",nsopc);
119
node=pnode.element(null,"WriteResult");
120
node.attribute(null,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
121
node.attribute(null,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
122
node.attribute(null,"ClientRequestHandle","WriteError");
123
node.attribute(null,"RevisedLocaleID","en");
124
node.attribute(null,"ServerState","running");
125
node1=node.element(null,"RItemList");
126
node=pnode.element(null,"Errors");
127
node.attribute(null,"ID","E_UNKNOWNITEMID");
128
node2=node.element(null,"Text","The item does not exist in the server address space.");
129
node=pnode.element(null,"Errors");
130
node.attribute(null,"ID","S_CLAMP");
131
node2=node.element(null,"Text","The value written was accepted but the output was clamped.");
134
node=pnode.element(null,"Items");
135
node.attribute(null,"ItemPath","");
136
node.attribute(null,"ItemName","WrongItemID1");
137
node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
138
node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
139
node1=node.element(null,"Value");
140
node.attribute(null,"xsi:nil","true");
142
node=pnode.element(null,"Items");
143
node.attribute(null,"ItemPath","");
144
node.attribute(null,"ItemName","WrongItemID2");
145
node.attribute(null,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
146
node.attribute(null,"ErrorID","E_UNKNOWNITEMID");
147
node1=node.element(null,"Value");
148
node.attribute(null,"xsi:nil","true");
150
node=pnode.element(null,"Items");
151
node.attribute(null,"ItemPath","/Reals");
152
node.attribute(null,"ItemName","Float1");
153
node.attribute(null,"ValueType","xsd:float");
154
node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
155
node1=node.element(null,"Value","10.0141414");
156
node.attribute(null,"xsi:type","xsd:float");
158
node=pnode.element(null,"Items");
159
node.attribute(null,"ItemPath","/Reals");
160
node.attribute(null,"ItemName","Float2");
161
node.attribute(null,"ValueType","xsd:float");
162
node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
163
node.attribute(null,"SuccessID","S_CLAMP");
164
node1=node.element(null,"Value","1.07");
165
node.attribute(null,"xsi:type","xsd:float");
167
for (i=0;i<td.inc;i++) {
168
node=pnode.element(null,"Items");
169
node.attribute(null,"ItemPath","/Integer");
170
node.attribute(null,"ItemName","IntN");
171
node.attribute(null,"ValueType","xsd:int");
172
node.attribute(null,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
173
node.attribute(null,"SuccessID","S_CLAMP");
174
/* That doesn't work since stmp is referenced in node.element, not copied
175
Integer.itoa!(char)(stmp, generator.uniform!(uint));
176
node1=node.element(null,"Value", stmp);
178
node1=node.element(null,"Value", Integer.toString(generator.uniform!(uint)));
179
node1.attribute(null,"xsi:type","xsd:int");
182
mem = printer.print(doc);
183
// if (!iter) Stdout(mem).newline;
188
void main(char[][] args)
191
Stdout("WARNING! Namespaces are not really supported\n");