1- package org .aml .typesystem .tests ;
2-
3- import java .util .Arrays ;
4-
5- import org .aml .typesystem .AbstractType ;
6- import org .aml .typesystem .BuiltIns ;
7- import org .aml .typesystem .Status ;
8- import org .aml .typesystem .TypeOps ;
9- import org .aml .typesystem .meta .restrictions .ComponentShouldBeOfType ;
10- import org .aml .typesystem .meta .restrictions .Enum ;
11- import org .aml .typesystem .meta .restrictions .Pattern ;
12- import org .aml .typesystem .meta .restrictions .UniqueItems ;
13- import org .aml .typesystem .meta .restrictions .minmax .MaxItems ;
14- import org .aml .typesystem .meta .restrictions .minmax .MaxLength ;
15- import org .aml .typesystem .meta .restrictions .minmax .MaxProperties ;
16- import org .aml .typesystem .meta .restrictions .minmax .Maximum ;
17- import org .aml .typesystem .meta .restrictions .minmax .MinItems ;
18- import org .aml .typesystem .meta .restrictions .minmax .MinLength ;
19- import org .aml .typesystem .meta .restrictions .minmax .MinProperties ;
20- import org .aml .typesystem .meta .restrictions .minmax .Minimum ;
21- import org .aml .typesystem .values .ArrayImpl ;
22- import org .aml .typesystem .values .ObjectImpl ;
23-
24- import junit .framework .Assert ;
25- import junit .framework .TestCase ;
26-
27- public class InstanceValidationTest extends TestCase {
28-
29- public void test0 () {
30- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
31- person .declareProperty ("name" , BuiltIns .STRING , false );
32- person .declareProperty ("age" , BuiltIns .NUMBER , true );
33- final ObjectImpl obj = new ObjectImpl ();
34- obj .putProperty ("name" , "Pavel" );
35- final Status validateDirect = person .validateDirect (obj );
36- Assert .assertTrue (validateDirect .isOk ());
37- }
38-
39- public void test1 () {
40- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
41- person .declareProperty ("name" , BuiltIns .STRING , false );
42- person .declareProperty ("age" , BuiltIns .NUMBER , true );
43- final ObjectImpl obj = new ObjectImpl ();
44- obj .putProperty ("name" , 2 );
45- final Status validateDirect = person .validateDirect (obj );
46- Assert .assertTrue (!validateDirect .isOk ());
47- }
48-
49- public void test10 () {
50- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
51- person .declareProperty ("name" , BuiltIns .STRING , false );
52- person .closeUnknownProperties ();
53- final ObjectImpl obj = new ObjectImpl ();
54- obj .putProperty ("name" , "Pavel" );
55- obj .putProperty ("d" , "Pavel" );
56- final Status validateDirect = person .validateDirect (obj );
57- Assert .assertTrue (!validateDirect .isOk ());
58- }
59-
60- public void test11 () {
61- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
62- person .declareProperty ("name" , BuiltIns .STRING , false );
63- person .closeUnknownProperties ();
64- final ObjectImpl obj = new ObjectImpl ();
65- obj .putProperty ("name" , "Pavel" );
66- final Status validateDirect = person .validateDirect (obj );
67- Assert .assertTrue (validateDirect .isOk ());
68- }
69-
70- public void test12 () {
71- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
72- person .declareProperty ("name" , BuiltIns .STRING , false );
73- person .addMeta (new MinProperties (2 ));
74- person .closeUnknownProperties ();
75- final ObjectImpl obj = new ObjectImpl ();
76- obj .putProperty ("name" , "Pavel" );
77- final Status validateDirect = person .validateDirect (obj );
78- Assert .assertTrue (!validateDirect .isOk ());
79- }
80-
81- public void test13 () {
82- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
83- person .declareProperty ("name" , BuiltIns .STRING , false );
84- person .addMeta (new MinProperties (1 ));
85- person .closeUnknownProperties ();
86- final ObjectImpl obj = new ObjectImpl ();
87- obj .putProperty ("name" , "Pavel" );
88- final Status validateDirect = person .validateDirect (obj );
89- Assert .assertTrue (validateDirect .isOk ());
90- }
91-
92- public void test14 () {
93- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
94- person .declareProperty ("name" , BuiltIns .STRING , false );
95- person .addMeta (new MaxProperties (2 ));
96- person .closeUnknownProperties ();
97- final ObjectImpl obj = new ObjectImpl ();
98- obj .putProperty ("name" , "Pavel" );
99- final Status validateDirect = person .validateDirect (obj );
100- Assert .assertTrue (validateDirect .isOk ());
101- }
102-
103- public void test15 () {
104- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
105- person .declareProperty ("name" , BuiltIns .STRING , false );
106- person .addMeta (new MaxProperties (0 ));
107- person .closeUnknownProperties ();
108- final ObjectImpl obj = new ObjectImpl ();
109- obj .putProperty ("name" , "Pavel" );
110- final Status validateDirect = person .validateDirect (obj );
111- Assert .assertTrue (!validateDirect .isOk ());
112- }
113-
114- public void test16 () {
115- final AbstractType person = TypeOps .derive ("Persons" , BuiltIns .ARRAY );
116- person .addMeta (new MinItems (0 ));
117- final ArrayImpl obj = new ArrayImpl ();
118- final Status validateDirect = person .validateDirect (obj );
119- Assert .assertTrue (validateDirect .isOk ());
120- }
121-
122- public void test17 () {
123- final AbstractType person = TypeOps .derive ("Persons" , BuiltIns .ARRAY );
124- person .addMeta (new MinItems (1 ));
125- final ArrayImpl obj = new ArrayImpl ();
126- final Status validateDirect = person .validateDirect (obj );
127- Assert .assertTrue (!validateDirect .isOk ());
128- }
129-
130- public void test18 () {
131- final AbstractType person = TypeOps .derive ("Persons" , BuiltIns .ARRAY );
132- person .addMeta (new MaxItems (0 ));
133- final ArrayImpl obj = new ArrayImpl ();
134- final Status validateDirect = person .validateDirect (obj );
135- Assert .assertTrue (validateDirect .isOk ());
136- }
137-
138- public void test19 () {
139- final AbstractType person = TypeOps .derive ("Persons" , BuiltIns .ARRAY );
140- person .addMeta (new MaxItems (0 ));
141- final ArrayImpl obj = new ArrayImpl ();
142- obj .add (3 );
143- final Status validateDirect = person .validateDirect (obj );
144- Assert .assertTrue (!validateDirect .isOk ());
145- }
146-
147- public void test2 () {
148- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
149- person .declareProperty ("name" , BuiltIns .STRING , false );
150- person .declareProperty ("age" , BuiltIns .NUMBER , false );
151- final ObjectImpl obj = new ObjectImpl ();
152- obj .putProperty ("name" , "Pavel" );
153- final Status validateDirect = person .validateDirect (obj );
154- Assert .assertTrue (!validateDirect .isOk ());
155- }
156-
157- public void test20 () {
158- final AbstractType person = TypeOps .derive ("INts" , BuiltIns .ARRAY );
159- person .addMeta (new UniqueItems ());
160- final ArrayImpl obj = new ArrayImpl ();
161- obj .add (3 );
162- obj .add (3 );
163- final Status validateDirect = person .validateDirect (obj );
164- Assert .assertTrue (!validateDirect .isOk ());
165- }
166-
167- public void test21 () {
168- final AbstractType person = TypeOps .derive ("Ints" , BuiltIns .ARRAY );
169- person .addMeta (new UniqueItems ());
170- final ArrayImpl obj = new ArrayImpl ();
171- obj .add (3 );
172- obj .add (4 );
173- final Status validateDirect = person .validateDirect (obj );
174- Assert .assertTrue (validateDirect .isOk ());
175- }
176-
177- public void test22 () {
178- final AbstractType string = TypeOps .derive ("MyString" , BuiltIns .STRING );
179- string .addMeta (new MinLength (3 ));
180- Status validateDirect = string .validateDirect ("1234" );
181- Assert .assertTrue (validateDirect .isOk ());
182- validateDirect = string .validateDirect ("12" );
183- Assert .assertTrue (!validateDirect .isOk ());
184- }
185-
186- public void test24 () {
187- final AbstractType string = TypeOps .derive ("MyString" , BuiltIns .STRING );
188- string .addMeta (new MaxLength (3 ));
189- Status validateDirect = string .validateDirect ("1234" );
190- Assert .assertTrue (!validateDirect .isOk ());
191- validateDirect = string .validateDirect ("12" );
192- Assert .assertTrue (validateDirect .isOk ());
193- }
194-
195- public void test25 () {
196- final AbstractType string = TypeOps .derive ("MyString" , BuiltIns .STRING );
197- string .addMeta (new Pattern ("." ));
198- Status validateDirect = string .validateDirect ("12" );
199- Assert .assertTrue (!validateDirect .isOk ());
200- validateDirect = string .validateDirect ("1" );
201- Assert .assertTrue (validateDirect .isOk ());
202- }
203-
204- public void test27 () {
205- final AbstractType string = TypeOps .derive ("MyNumber" , BuiltIns .NUMBER );
206- string .addMeta (new Minimum (1 ));
207- Status validateDirect = string .validateDirect (0 );
208- Assert .assertTrue (!validateDirect .isOk ());
209- validateDirect = string .validateDirect (2 );
210- Assert .assertTrue (validateDirect .isOk ());
211- }
212-
213- public void test28 () {
214- final AbstractType string = TypeOps .derive ("MyNumber" , BuiltIns .NUMBER );
215- string .addMeta (new Maximum (1 ));
216- Status validateDirect = string .validateDirect (0 );
217- Assert .assertTrue (validateDirect .isOk ());
218- validateDirect = string .validateDirect (2 );
219- Assert .assertTrue (!validateDirect .isOk ());
220- }
221-
222- public void test29 () {
223- final AbstractType string = TypeOps .derive ("MyNumber" , BuiltIns .ARRAY );
224- final Status validateDirect = string .validateDirect (0 );
225- Assert .assertTrue (!validateDirect .isOk ());
226- }
227-
228- public void test3 () {
229- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
230- person .declareProperty ("name" , BuiltIns .STRING , false );
231- person .declareMapProperty ("." , BuiltIns .NUMBER );
232- final ObjectImpl obj = new ObjectImpl ();
233- obj .putProperty ("name" , "Pavel" );
234- obj .putProperty ("d" , "Pavel" );
235- final Status validateDirect = person .validateDirect (obj );
236- Assert .assertTrue (!validateDirect .isOk ());
237- }
238-
239- public void test30 () {
240- final AbstractType strings = TypeOps .derive ("MyNumber" , BuiltIns .ARRAY );
241- strings .addMeta (new ComponentShouldBeOfType (BuiltIns .STRING ));
242- Status validateDirect = strings .validateDirect (0 );
243- Assert .assertTrue (!validateDirect .isOk ());
244- ArrayImpl at = new ArrayImpl ();
245- at .add (3 );
246- validateDirect = strings .validateDirect (at );
247- Assert .assertTrue (!validateDirect .isOk ());
248- at = new ArrayImpl ();
249- at .add ("3" );
250- validateDirect = strings .validateDirect (at );
251- Assert .assertTrue (validateDirect .isOk ());
252- }
253-
254- public void test31 () {
255- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .STRING );
256- person .addMeta (new Enum (Arrays .asList (new String [] { "a" , "b" })));
257- final Status validateDirect = person .validateDirect ("c" );
258- Assert .assertTrue (!validateDirect .isOk ());
259- }
260-
261- public void test32 () {
262- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .STRING );
263- person .addMeta (new Enum (Arrays .asList (new String [] { "a" , "b" })));
264- final Status validateDirect = person .validateDirect ("a" );
265- Assert .assertTrue (validateDirect .isOk ());
266- }
267-
268- public void test4 () {
269- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
270- person .declareProperty ("name" , BuiltIns .STRING , false );
271- person .declareMapProperty (".*" , BuiltIns .NUMBER );
272- final ObjectImpl obj = new ObjectImpl ();
273- obj .putProperty ("name" , "Pavel" );
274- obj .putProperty ("d" , "Pavel" );
275- final Status validateDirect = person .validateDirect (obj );
276- Assert .assertTrue (!validateDirect .isOk ());
277- }
278-
279- public void test5 () {
280- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
281- person .declareProperty ("name" , BuiltIns .STRING , false );
282- person .declareMapProperty (".*" , BuiltIns .NUMBER );
283- final ObjectImpl obj = new ObjectImpl ();
284- obj .putProperty ("name" , "Pavel" );
285- obj .putProperty ("d" , 5 );
286- final Status validateDirect = person .validateDirect (obj );
287- Assert .assertTrue (validateDirect .isOk ());
288- }
289-
290- public void test6 () {
291- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
292- person .declareProperty ("name" , BuiltIns .STRING , false );
293- person .declareAdditionalProperty (BuiltIns .NUMBER );
294- final ObjectImpl obj = new ObjectImpl ();
295- obj .putProperty ("name" , "Pavel" );
296- obj .putProperty ("d" , 5 );
297- final Status validateDirect = person .validateDirect (obj );
298- Assert .assertTrue (validateDirect .isOk ());
299- }
300-
301- public void test7 () {
302- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
303- person .declareProperty ("name" , BuiltIns .STRING , false );
304- person .declareAdditionalProperty (BuiltIns .NUMBER );
305- final ObjectImpl obj = new ObjectImpl ();
306- obj .putProperty ("name" , "Pavel" );
307- obj .putProperty ("d" , false );
308- final Status validateDirect = person .validateDirect (obj );
309- Assert .assertTrue (!validateDirect .isOk ());
310- }
311-
312- public void test8 () {
313- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
314- person .declareProperty ("name" , BuiltIns .STRING , false );
315- person .declareMapProperty ("." , BuiltIns .BOOLEAN );
316- person .declareAdditionalProperty (BuiltIns .NUMBER );
317- final ObjectImpl obj = new ObjectImpl ();
318- obj .putProperty ("name" , "Pavel" );
319- obj .putProperty ("d" , false );
320- obj .putProperty ("dd" , 5 );
321- final Status validateDirect = person .validateDirect (obj );
322- Assert .assertTrue (validateDirect .isOk ());
323- }
324-
325- public void test9 () {
326- final AbstractType person = TypeOps .derive ("Person" , BuiltIns .OBJECT );
327- person .declareProperty ("name" , BuiltIns .STRING , false );
328- person .declareMapProperty ("." , BuiltIns .BOOLEAN );
329- person .declareAdditionalProperty (BuiltIns .NUMBER );
330- final ObjectImpl obj = new ObjectImpl ();
331- obj .putProperty ("name" , "Pavel" );
332- obj .putProperty ("d" , false );
333- obj .putProperty ("dd" , false );
334- final Status validateDirect = person .validateDirect (obj );
335- Assert .assertTrue (!validateDirect .isOk ());
336- }
337- }
0 commit comments