source: BMXNET_RPMS_dotNET_UTILITIES-BMX/branch/IHS BMX Framework/IndianHealthService.BMXNet.Test/FieldTypesAndFieldConstraints.cs@ 1146

Last change on this file since 1146 was 1146, checked in by Sam Habiel, 13 years ago

Initial Import of BMX4

File size: 12.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Text;
4using NUnit.Framework;
5using System.Data;
6using IndianHealthService.BMXNet.Model;
7
8
9namespace IndianHealthService.BMXNet.Tests
10{
11
12 /// <summary>
13 /// BMX ADO SS^BMX TEST FILE^^~~~~~
14 ///
15 /// </summary>
16 ///
17 public class FieldTypesAndFieldConstraints : BmxValidUserTestSuite
18 {
19
20
21 private DataRow _testRow;
22
23 public DataRow TestRow
24 {
25 get { return _testRow; }
26 set { _testRow = value; }
27 }
28 private DataTable _testTable;
29
30 public DataTable TestTable
31 {
32 get { return _testTable; }
33 set { _testTable = value; }
34 }
35
36 public bool GenerateValidTestRow()
37 {
38 // BMXNetScriptedBroker broker = new BMXNetScriptedBroker();
39 // broker.AddCall(
40 // @"{BMX}0007700062007BMX;;;;000470BMX ADO SS^000300140BMX TEST FILE00100060~~~~~",
41 // @"@@@meta@@@BMXIEN|90093.97|^90093.97|.001|N|15|BMXIEN|TRUE|TRUE|FALSE^90093.97|.01|T|30|NAME|FALSE|FALSE|FALSE^90093.97|.02|N|4|NUMBER|FALSE|FALSE|TRUE^90093.97|.03|D|21|DATE|FALSE|FALSE|TRUE^90093.97|.04|D|21|DATE TIME|FALSE|FALSE|TRUE^90093.97|.05|T|3|SET|FALSE|FALSE|TRUE^90093.97|.06|T|30|NAME R/O|TRUE|FALSE|TRUE^90093.97|.07|N|4|NUMBER R/O|TRUE|FALSE|TRUE^90093.97|.08|D|21|DATE R/O|TRUE|FALSE|TRUE^90093.97|.09|D|21|DATE TIME R/O|TRUE|FALSE|TRUE^90093.97|.1|T|3|SET R/O|TRUE|FALSE|TRUE^90093.97|.11|I|2|INTEGER|FALSE|FALSE|TRUE^90093.97|.12|I|2|INTEGER R/O|TRUE|FALSE|TRUE
421^John^8^OCT 10, 1970^^^^^^^^^
43");
44
45 //SMH: Table needs to be cleared at this point since it expects to have a clean slate
46 //SMH: And here it is!
47 DataTable table = this.RemoteSession.TableFromCommand(this.FetchTableString);
48
49 foreach (DataRow each in table.Rows)
50 {
51 each.Delete();
52 }
53 this.RemoteSession.SaveChanges(table);
54 //end my changes
55
56 table = this.RemoteSession.TableFromCommand(this.FetchTableString);
57 DataRow row = table.NewRow();
58 row["NAME"] = "John";
59 row["DATE"] = new DateTime(1970, 10, 10);
60 row["NUMBER"] = 8;
61 row["NUMBER R/O"] = 9;
62 table.Rows.Add(row);
63 Assert.AreEqual(1, table.Rows.Count);
64
65 Assert.IsTrue(this.RemoteSession.SaveChanges(table));
66
67 this.TestTable = RemoteSession.TableFromCommand(this.FetchTableString);
68 Assert.AreEqual(1, this.TestTable.Rows.Count);
69 this.TestRow = this.TestTable.Rows[0];
70 Assert.AreEqual(row["NAME"], "John");
71 Assert.AreEqual(row["DATE"], new DateTime(1970, 10, 10));
72
73 return true;
74
75 }
76
77 public bool RefetchTestRow()
78 {
79 try
80 {
81 this.TestTable = this.RemoteSession.TableFromCommand(this.FetchTableString);
82 Assert.AreEqual(1, this.TestTable.Rows.Count);
83 this.TestRow = this.TestTable.Rows[0];
84 return true;
85 }
86 catch
87 {
88 return false;
89 }
90 }
91
92 /*
93 90093.97,.01 NAME 0;1 FREE TEXT (Required)
94 INPUT TRANSFORM: K:$L(X)>30!($L(X)<3)!'(X'?1P.E) X
95 LAST EDITED: JAN 16, 2008
96 HELP-PROMPT: Answer must be 3-30 characters in length.
97 CROSS-REFERENCE: 90093.97^B
98 1)= S ^BMXTEST("B",$E(X,1,30),DA)=""
99 2)= K ^BMXTEST("B",$E(X,1,30),DA)
100 */
101
102
103 /*
104 90093.97,.06 NUMBER 0;6 NUMBER
105 INPUT TRANSFORM: K:+X'=X!(X>99)!(X<5)!(X?.E1"."2N.N) X
106 LAST EDITED: JAN 16, 2008
107 HELP-PROMPT: Type a Number between 5 and 99, 1 Decimal Digit*/
108 [Test]
109 [ExpectedException(typeof(BMXNetException))]
110 public void NumberMin()
111 {
112 this.GenerateValidTestRow();
113 this.TestRow["Number"] = 0;
114 this.RemoteSession.SaveChanges(this.TestTable);
115 }
116
117 [Test]
118 [ExpectedException(typeof(BMXNetException))]
119 public void NumberMax()
120 {
121 this.GenerateValidTestRow();
122 this.TestRow["Number"] = 120;
123 this.RemoteSession.SaveChanges(this.TestTable);
124 }
125
126 [Test]
127 [ExpectedException(typeof(BMXNetException))]
128 public void NumberTooManyDecimals()
129 {
130 this.GenerateValidTestRow();
131 this.TestRow["Number"] = 120.1234;
132 this.RemoteSession.SaveChanges(this.TestTable);
133 }
134
135 [Test]
136 public void NumberDecimals()
137 {
138 this.GenerateValidTestRow();
139 this.TestRow["NUMBER"] = 5.6;
140 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
141
142 this.RefetchTestRow();
143 Assert.AreEqual(this.TestRow["NUMBER"], 5.6);
144 }
145
146 /*90093.97,.07 NUMBER R/O 0;7 NUMBER
147
148 INPUT TRANSFORM: K:+X'=X!(X>99)!(X<5)!(X?.E1"."1N.N) X
149 LAST EDITED: JAN 16, 2008
150 HELP-PROMPT: Type a Number between 5 and 99, 0 Decimal
151 Digits*/
152
153 /// <summary>
154 /// THIS WILL FAIL!!!! NOTHING IN THE BMX LIBRARY THROWS THIS EXCEPTION//SMH
155 /// </summary>
156 [Test]
157 [ExpectedException(typeof(System.Data.ReadOnlyException))]
158 public void UpdateReadOnlyNumber()
159 {
160 this.GenerateValidTestRow();
161 this.TestRow["NUMBER R/O"] = 100;
162 }
163
164
165 [Test]
166 [ExpectedException(typeof(BMXNetException))]
167 public void StringMinLength()
168 {
169 this.GenerateValidTestRow();
170 this.TestRow["NAME"] = "John";
171 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
172
173 this.RefetchTestRow();
174 Assert.AreEqual(this.TestRow["NAME"], "John");
175 this.TestRow["NAME"] = "T";
176 Assert.IsFalse(this.RemoteSession.SaveChanges(this.TestTable));
177 }
178
179 [Test]
180 public void StringMinLengthNoSideEffect()
181 {
182 this.GenerateValidTestRow();
183 this.TestRow["NAME"] = "John";
184 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
185
186 this.RefetchTestRow();
187 try
188 {
189 this.TestRow["NAME"] = "T";
190 Assert.IsFalse(this.RemoteSession.SaveChanges(this.TestTable));
191 Assert.IsTrue(false);
192 }
193 catch
194 {
195 }
196
197 this.RefetchTestRow();
198 Assert.AreEqual(this.TestRow["NAME"], "John");
199 }
200
201 [Test]
202 [ExpectedException(typeof(BMXNetException))]
203 public void StringMaxLength()
204 {
205 this.GenerateValidTestRow();
206 this.TestRow["NAME"] = "John";
207 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
208
209 this.RefetchTestRow();
210 Assert.AreEqual(this.TestRow["NAME"], "John");
211 this.TestRow["NAME"] = "T1234567890123456789012345678901234567890";
212 Assert.IsFalse(this.RemoteSession.SaveChanges(this.TestTable));
213 }
214
215 [Test]
216 public void StringMaxLengthNoSideEffect()
217 {
218 this.GenerateValidTestRow();
219 this.TestRow["NAME"] = "John";
220 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
221
222 this.RefetchTestRow();
223 try
224 {
225 this.TestRow["NAME"] = "T1234567890123456789012345678901234567890";
226 Assert.IsFalse(this.RemoteSession.SaveChanges(this.TestTable));
227 Assert.IsTrue(false);
228 }
229 catch
230 {
231 }
232
233 this.RefetchTestRow();
234 Assert.AreEqual(this.TestRow["NAME"], "John");
235 }
236
237 /*90093.97,.03 DATE 0;3 DATE
238
239 INPUT TRANSFORM: S %DT="EX" D ^%DT S X=Y K:Y<1 X
240 LAST EDITED: JAN 16, 2008*/
241 [Test]
242 public void SetDateAt0Second()
243 {
244 this.GenerateValidTestRow();
245 this.TestRow["DATE"] = new DateTime(1950,1,1);
246 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
247
248 this.RefetchTestRow();
249 Assert.AreEqual(new DateTime(1950,1,1),(DateTime)this.TestRow["DATE"]);
250 }
251
252
253 [Test]
254 [ExpectedException(typeof(BMXNetException))]
255 public void SetDateAtWithTime()
256 {
257 this.GenerateValidTestRow();
258 this.TestRow["DATE"] = new DateTime(1950, 1, 1,10,30,30);
259 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
260
261 this.RefetchTestRow();
262 Assert.AreEqual(new DateTime(1950, 1, 1, 10, 30, 30), (DateTime)this.TestRow["DATE"]);
263 }
264
265
266 /*
267 90093.97,.04 DATE TIME 0;4 DATE
268 INPUT TRANSFORM: S %DT="ETX" D ^%DT S X=Y K:Y<1 X
269 LAST EDITED: JAN 16, 2008*/
270 [Test]
271 [ExpectedException(typeof(BMXNetException))]
272 public void SetDateTimeAtWithTimeHavingSeconds()
273 {
274 this.GenerateValidTestRow();
275 this.TestRow["DATE TIME"] = new DateTime(1950, 1, 1, 20, 30,1);
276 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
277 }
278
279 /*90093.97,.05 DATE R/O 0;5 DATE
280
281 INPUT TRANSFORM: S %DT="EX" D ^%DT S X=Y K:Y<1 X*/
282
283 [Test]
284 public void SetDateTimeAtWithTime()
285 {
286 this.GenerateValidTestRow();
287 this.TestRow["DATE TIME"] = new DateTime(1950, 1, 1, 20, 30, 0);
288 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
289
290 this.RefetchTestRow();
291 Assert.AreEqual(new DateTime(1950, 1, 1, 20, 30, 0), (DateTime)this.TestRow["DATE TIME"]);
292 }
293
294
295 /// <summary>
296 /// THIS WILL FAIL!!!! NOTHING IN THE BMX LIBRARY THROWS THIS EXCEPTION//SMH
297 /// </summary>
298 [Test]
299 [ExpectedException(typeof(System.Data.ReadOnlyException))]
300 public void UpdateReadOnlyDate()
301 {
302
303
304 this.GenerateValidTestRow();
305 this.TestRow["DATE R/O"] = new DateTime(1950, 1, 1);
306 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
307
308 this.RefetchTestRow();
309 String peek = this.TestRow["DATE R/O"].ToString();
310 Assert.AreEqual(new DateTime(1950, 1, 1), (DateTime)this.TestRow["DATE R/O"]);
311 }
312
313 /* * 93.97,.08 SET 0;8 SET
314
315 '1' FOR YES;
316 '0' FOR NO;
317 LAST EDITED: JAN 16, 2008*/
318
319 [Test]
320 public void SetSetToCode()
321 {
322 this.GenerateValidTestRow();
323 this.TestRow["SET"] = "YES";
324 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
325
326 this.RefetchTestRow();
327
328 Assert.AreEqual("YES", this.TestRow["SET"]);
329 }
330 [Test]
331 public void SetSetToNull()
332 {
333 this.GenerateValidTestRow();
334 this.TestRow["SET"] = "";
335 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
336
337 this.RefetchTestRow();
338
339 Assert.AreEqual("", this.TestRow["SET"]);
340 }
341
342 [Test]
343 [ExpectedException(typeof(BMXNetException))]
344 public void SetSetToInvalid()
345 {
346 this.GenerateValidTestRow();
347 this.TestRow["SET"] = "MAYBE";
348 Assert.IsTrue(this.RemoteSession.SaveChanges(this.TestTable));
349
350 this.RefetchTestRow();
351
352 Assert.AreEqual("MAYBE", this.TestRow["SET"]);
353 }
354
355
356 /*
357
358
359
360
361 /*
362
363
36490093.97,.09 SET R/O 0;9 SET
365
366 '1' FOR YES;
367 '0' FOR NO;
368 LAST EDITED: JAN 16, 2008
369
37090093.97,.1 LOCATION 0;10 POINTER TO LOCATION FILE (#9999999.06
371 )
372 */
373
374
375
376 }
377}
Note: See TracBrowser for help on using the repository browser.