/[ascend]/trunk/models/test/defaultmethods.a4c
ViewVC logotype

Diff of /trunk/models/test/defaultmethods.a4c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1291 by johnpye, Mon Feb 26 06:20:43 2007 UTC revision 1292 by johnpye, Mon Feb 26 06:47:08 2007 UTC
# Line 182  METHODS Line 182  METHODS
182          ASSERT B[2].w == 4.0;          ASSERT B[2].w == 4.0;
183      END self_test;      END self_test;
184  END testdefault11;  END testdefault11;
185    
186    (* test what happens when two variables are ARE_THE_SAMEd *)
187    MODEL testdefault12;
188        x IS_A var_default_one;
189        y IS_A var_default_one;
190        x,y ARE_THE_SAME;
191    METHODS
192        METHOD default;
193            x := 2.0;
194        END default;
195        METHOD self_test;
196            ASSERT x == 2.0;
197            ASSERT y == 2.0;
198        END self_test;
199    END testdefault12;
200    
201    (* when two models are ARE_THE_SAMEd, the default_all is kept *)
202    MODEL testdefault13;
203        A IS_A ModelA;
204        C IS_A ModelC;
205        A,C ARE_THE_SAME;
206    METHODS
207        METHOD self_test;
208            ASSERT A.x == 5.0;
209            ASSERT A.y == 6.0;
210            ASSERT C.x == 5.0;
211            ASSERT C.y == 6.0;
212        END self_test;
213    END testdefault13;
214    
215    (* override default value for one var inside one of two are-the-same submodels *)
216    MODEL ModelD;
217        A IS_A ModelA;
218    END ModelD;
219    
220    MODEL testdefault14;
221        A IS_A ModelA;
222        D IS_A ModelD;
223        A,D.A ARE_THE_SAME;
224    METHODS
225        METHOD default;
226            A.x := 7.0;
227        END default;
228        METHOD self_test;
229            ASSERT A.x == 7.0;
230            ASSERT A.y == 2.0;
231            ASSERT D.A.x == 7.0;
232            ASSERT D.A.y == 2.0;
233        END self_test;
234    END testdefault14;
235    
236    (* override 'default' method inside one of two are-the-same submodels *)
237    MODEL ModelD1;
238        A IS_A ModelA;
239    METHODS
240        METHOD default;
241            A.y := 8.0;
242        END default;
243    END ModelD1;
244    
245    MODEL testdefault15;
246        A IS_A ModelA;
247        D IS_A ModelD1;
248        A,D.A ARE_THE_SAME;
249    METHODS
250        METHOD default;
251            A.x := 7.0;
252        END default;
253        METHOD self_test;
254            ASSERT A.x == 7.0;
255            ASSERT A.y == 8.0;
256        END self_test;
257    END testdefault15;
258    
259    (* behaviour in this case is undefined, @TODO warn user about use of ARE_THE_SAME *)
260    MODEL ModelE REFINES ModelA;
261    METHODS
262        METHOD default;
263            y := 9.0;
264        END default;
265    END ModelE;
266    
267    MODEL ModelF;
268        E IS_A ModelE;
269    METHODS
270        METHOD default;
271            E.y := 8.0;
272        END default;
273    END ModelF;
274    
275    MODEL testdefault16;
276        E IS_A ModelE;
277        F IS_A ModelF;
278        F.E, E ARE_THE_SAME;
279    METHODS
280        METHOD default;
281            E.x := 7.0;
282        END default;
283        METHOD self_test;
284            ASSERT E.x == 7.0;
285            ASSERT E.y == 8.0;
286        END self_test;
287    END testdefault16;

Legend:
Removed from v.1291  
changed lines
  Added in v.1292

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22