@@ -15,42 +15,6 @@ ClassMethod toGlobal(word As %String)
1515 elseif ('$data (@global @(" word3" ))) { set @global @(" word3" ) = word }
1616}
1717
18- /// @Declarative("test.map:nameNumber")
19- ClassMethod nameNumber (value As %Numeric ) As %String
20- {
21- return $select (value =1 :" one" , value =2 :" two" , value =3 :" three" , 1 :" " )
22- }
23-
24- /// @Declarative("test.find:isEven")
25- ClassMethod isEven (value As %Numeric )
26- {
27- return value # 2 = 0
28- }
29-
30- /// @Declarative("test.filter:isOdd")
31- ClassMethod isOdd (value As %Numeric )
32- {
33- return '..isEven (value )
34- }
35-
36- /// @Declarative("test.exists:isNameMaks")
37- ClassMethod isNameMaks (value As %String )
38- {
39- return value = " Maks"
40- }
41-
42- /// @Declarative("test.exists:isNamePeter")
43- ClassMethod isNamePeter (value As %String )
44- {
45- return value = " Peter"
46- }
47-
48- /// @Declarative("test.count:greateOrEqualThan2000")
49- ClassMethod greateOrEqualThan2000 (value As %Numeric )
50- {
51- return (value >= 2000 )
52- }
53-
5418Method TestForEach ()
5519{
5620 set global = $name (@..#TESTGLOBALNAME@(" forEach" ))
@@ -75,96 +39,103 @@ Method TestForEach()
7539
7640Method TestMap ()
7741{
78- set (number1 , number2 , number3 ) = $lb (1 , 2 , 3 )
79-
8042 set numbers = ##class (%ListOfDataTypes ).%New ()
81- do numbers .Insert (number1 )
82- do numbers .Insert (number2 )
83- do numbers .Insert (number3 )
8443
85- set namedNumbers = $zmap ( numbers , " test.map:nameNumber " )
44+ for i = 1 : 1 : 10 { do numbers . Insert ( $random ( 1000 )) }
8645
87- do $$$AssertEquals (numbers . Count (), namedNumbers . Count (), " Numbers collections must have the same count of items " )
46+ set hexNumbers = $zmap (numbers , " examples:toHex " )
8847
89- do $$$AssertEquals( numbers .%ClassName (), namedNumbers . %ClassName (), " Numbers collections must have the same class name " )
48+ for i = 1 : 1 : numbers .Count () { do numbers . SetAt ( $zhex ( numbers . GetAt ( i )), i ) }
9049
91- do $$$AssertEquals(..nameNumber (number1 ), namedNumbers .GetAt (number1 ), " 1 == one" )
92- do $$$AssertEquals(..nameNumber (number2 ), namedNumbers .GetAt (number2 ), " 2 == two" )
93- do $$$AssertEquals(..nameNumber (number3 ), namedNumbers .GetAt (number3 ), " 3 == three" )
50+ do $$$AssertEquals($zjoin (numbers , " ," ), $zjoin (hexNumbers , " ," ), " $zmap works!" )
9451}
9552
9653Method TestFind ()
9754{
98- set (number1 , number2 , number3 ) = $lb (1 , 2 , 3 )
99-
10055 set numbers = ##class (%ListOfDataTypes ).%New ()
101- do numbers .Insert (number1 )
102- do numbers .Insert (number2 )
103- do numbers .Insert (number3 )
10456
105- set evenNumber = $zfind ( numbers , " test.find:isEven " )
57+ for i = 1 : 1 : 10 { do numbers . Insert ( $random ( 1000 )) }
10658
107- do $$$AssertEquals( number2 , evenNumber , " 2 is even " )
59+ set expectedPrimeNumber = " "
10860
109- do numbers .RemoveAt (number2 )
61+ for i =1 :1 :numbers .Count () {
62+ set number = numbers .GetAt (i )
11063
111- do $$$AssertNotTrue($zfind (numbers , " test.find:isEven" ), " Numbers collection has no even numbers now" )
64+ if (##class (DeclarativeCOS.Examples ).isPrime (number )) {
65+ set expectedPrimeNumber = number
66+ }
67+
68+ quit :expectedPrimeNumber '=" "
69+ }
70+
71+ set actualPrimeNumber = $zfind (numbers , " examples:isPrime" )
72+
73+ do $$$AssertEquals(expectedPrimeNumber , actualPrimeNumber , " $zfind works!" )
11274}
11375
11476Method TestFilter ()
11577{
116- set $lb (number1 , number2 , number3 ) = $lb (1 , 2 , 3 )
117-
11878 set numbers = ##class (%ListOfDataTypes ).%New ()
119- do numbers .Insert (number1 )
120- do numbers .Insert (number2 )
121- do numbers .Insert (number3 )
12279
123- set oddNumbers = $zfilter ( numbers , " test.filter:isOdd " )
80+ for i = 1 : 1 : 10 { do numbers . Insert ( $random ( 1000 )) }
12481
125- do $$$AssertEquals( numbers . Count () - 1 , oddNumbers . Count (), " Numbers collections contains only one even number " )
82+ set expectedFilteredNumbers = ##class ( %ListOfDataTypes ). %New ( )
12683
127- do $$$AssertEquals(numbers .%ClassName (), oddNumbers .%ClassName (), " Numbers collections must have the same class name" )
84+ for i =1 :1 :numbers .Count () {
85+ set number = numbers .GetAt (i )
12886
129- do $$$AssertEquals(number1 , oddNumbers .GetAt (1 ), " 1 is odd" )
130- do $$$AssertEquals(number3 , oddNumbers .GetAt (2 ), " 3 is odd" )
87+ if (##class (DeclarativeCOS.Examples ).isOdd (number )) {
88+ do expectedFilteredNumbers .Insert (number )
89+ }
90+ }
91+
92+ set actualFilteredNumbers = $zfilter (numbers , " examples:isOdd" )
93+
94+ do $$$AssertEquals($zjoin (expectedFilteredNumbers , " ," ), $zjoin (actualFilteredNumbers , " ," ), " $zfilter works!" )
13195}
13296
13397Method TestExists ()
13498{
135- set $lb (nameMaks , nameJohn , nameDonny ) = $lb (" Maks" , " John" , " Donny" )
99+ set numbers = ##class (%ListOfDataTypes ).%New ()
100+
101+ for i =1 :1 :10 { do numbers .Insert ($random (1000 )) }
136102
137- set names = ##class (%ListOfDataTypes ).%New ()
138- do names .Insert (nameMaks )
139- do names .Insert (nameJohn )
140- do names .Insert (nameDonny )
103+ set expectedHasEvenNumber = $$$NO
141104
142- set isNameMaksExist = $zexists (names , " test.exists:isNameMaks" )
105+ for i =1 :1 :numbers .Count () {
106+ set number = numbers .GetAt (i )
143107
144- do $$$AssertTrue(isNameMaksExist , " " " Maks" " exists in names collection" )
108+ if (##class (DeclarativeCOS.Examples ).isEven (number )) {
109+ set expectedHasEvenNumber = $$$YES
110+ }
145111
146- set isNamePeterExist = $zexists (names , " test.exists:isNamePeter" )
112+ quit :expectedHasEvenNumber '=" "
113+ }
147114
148- do $$$AssertNotTrue(isNamePeterExist , " " " Peter" " doesn't exists in names collection" )
115+ set actualHasEvenNumber = $zexists (numbers , " examples:isEven" )
116+
117+ do $$$AssertEquals(expectedHasEvenNumber , actualHasEvenNumber , " $zexists works!" )
149118}
150119
151120Method TestCount ()
152121{
153- set $lb (year1998 , year1999 , year2000 , year2001 ) = $lb (1998 , 1999 , 2000 , 2001 )
122+ set numbers = ##class (%ListOfDataTypes ).%New ()
123+
124+ for i =1 :1 :10 { do numbers .Insert ($random (1000 )) }
125+
126+ set expectedPalindromicNumbersCount = 0
154127
155- set years = ##class (%ListOfDataTypes ).%New ()
156- do years .Insert (year1998 )
157- do years .Insert (year1999 )
158- do years .Insert (year2000 )
159- do years .Insert (year2001 )
128+ for i =1 :1 :numbers .Count () {
129+ set number = numbers .GetAt (i )
160130
161- set expectedFilteredYears = ##class (%ListOfDataTypes ).%New ()
162- do expectedFilteredYears .Insert (year2000 )
163- do expectedFilteredYears .Insert (year2001 )
131+ if (##class (DeclarativeCOS.Examples ).isPalindromic (number )) {
132+ set expectedPalindromicNumbersCount = $increment (expectedPalindromicNumbersCount )
133+ }
134+ }
164135
165- set filteredYearsCount = $zcount (years , " test.count:greateOrEqualThan2000 " )
136+ set actualPalindromicNumbersCount = $zcount (numbers , " examples:isPalindromic " )
166137
167- do $$$AssertEquals(expectedFilteredYears . Count (), filteredYearsCount , " Only two years should be filtered " )
138+ do $$$AssertEquals(expectedPalindromicNumbersCount , actualPalindromicNumbersCount , " $zcount works! " )
168139}
169140
170141}
0 commit comments