@@ -897,9 +897,9 @@ public boolean isPrimaryAttribute()
897897 public void setFrozen (boolean fr )
898898 { frozen = fr ;
899899 if (fr )
900- { addStereotype ("readOnly" ); }
901- else
902- { removeStereotype ("readOnly" ); }
900+ { addStereotype ("readOnly" ); }
901+ else
902+ { removeStereotype ("readOnly" ); }
903903 }
904904
905905 public boolean isInteger ()
@@ -938,6 +938,9 @@ public void setStatic(boolean stat)
938938 public boolean isStatic ()
939939 { return instanceScope == false ; }
940940
941+ public boolean isDerived ()
942+ { return kind == ModelElement .DERIVED ; }
943+
941944 public void setVisibility (int visib )
942945 { visibility = visib ; }
943946
@@ -4497,7 +4500,8 @@ else if (Type.isSubType(typetatt,type,mm,entities))
44974500 return Type .typeSimilarity (type ,typetatt ,mm ,entities );
44984501 } // int does not match to enum, but boolean can match to an enum of size 2
44994502
4500- public Vector testCases (String x )
4503+
4504+ public Vector testCases (String x , java .util .Map lowerBnds , java .util .Map upperBnds )
45014505 { Vector res = new Vector ();
45024506 if (type == null )
45034507 { return res ; }
@@ -4506,26 +4510,106 @@ public Vector testCases(String x)
45064510 String t = type .getName ();
45074511 Vector vs = type .getValues ();
45084512
4513+ String nmx = getName ();
4514+ Expression lbnd = (Expression ) lowerBnds .get (nmx );
4515+ Expression ubnd = (Expression ) upperBnds .get (nmx );
4516+
45094517 if ("int" .equals (t ))
45104518 { res .add (nme + " = 0" );
45114519 res .add (nme + " = -1" );
45124520 res .add (nme + " = 1" );
4513- res .add (nme + " = 2147483647" ); // Integer.MAX_VALUE);
4514- res .add (nme + " = -2147483648" ); // Integer.MIN_VALUE);
4521+
4522+ if (ubnd != null && lbnd != null )
4523+ { try
4524+ { double ud = Double .parseDouble (ubnd + "" );
4525+ double ld = Double .parseDouble (lbnd + "" );
4526+ int midd = (int ) Math .floor ((ud + ld )/2 );
4527+ res .add (nme + " = " + midd );
4528+ } catch (Exception _e ) { }
4529+ }
4530+
4531+ if (ubnd != null )
4532+ { String upperval = ubnd + "" ;
4533+ if ("0" .equals (upperval ) || "1" .equals (upperval ) || "-1" .equals (upperval )) { }
4534+ else
4535+ { res .add (nme + " = " + upperval ); }
4536+ }
4537+ else
4538+ { res .add (nme + " = 2147483647" ); } // Integer.MAX_VALUE);
4539+
4540+ if (lbnd != null )
4541+ { String lowerval = lbnd + "" ;
4542+ if ("0" .equals (lowerval ) || "1" .equals (lowerval ) || "-1" .equals (lowerval )) { }
4543+ else
4544+ { res .add (nme + " = " + lowerval ); }
4545+ }
4546+ else
4547+ { res .add (nme + " = -2147483648" ); } // Integer.MIN_VALUE);
45154548 }
45164549 else if ("long" .equals (t ))
45174550 { res .add (nme + " = 0" );
45184551 res .add (nme + " = -1" );
45194552 res .add (nme + " = 1" );
4520- res .add (nme + " = " + Long .MAX_VALUE );
4521- res .add (nme + " = " + Long .MIN_VALUE );
4553+
4554+ if (ubnd != null && lbnd != null )
4555+ { try
4556+ { double ud = Double .parseDouble (ubnd + "" );
4557+ double ld = Double .parseDouble (lbnd + "" );
4558+ long midd = (long ) Math .floor ((ud + ld )/2 );
4559+ res .add (nme + " = " + midd );
4560+ } catch (Exception _e ) { }
4561+ }
4562+
4563+ if (ubnd != null )
4564+ { String upperval = ubnd + "" ;
4565+ if ("0" .equals (upperval ) || "1" .equals (upperval ) || "-1" .equals (upperval )) { }
4566+ else
4567+ { res .add (nme + " = " + upperval ); }
4568+ }
4569+ else
4570+ { res .add (nme + " = " + Long .MAX_VALUE ); }
4571+
4572+ if (lbnd != null )
4573+ { String lowerval = lbnd + "" ;
4574+ if ("0" .equals (lowerval ) || "1" .equals (lowerval ) || "-1" .equals (lowerval )) { }
4575+ else
4576+ { res .add (nme + " = " + lowerval ); }
4577+ }
4578+ else
4579+ { res .add (nme + " = " + Long .MIN_VALUE ); }
45224580 }
45234581 else if ("double" .equals (t ))
45244582 { res .add (nme + " = 0" );
45254583 res .add (nme + " = -1" );
45264584 res .add (nme + " = 1" );
4527- res .add (nme + " = " + Double .MAX_VALUE );
4528- res .add (nme + " = " + Double .MIN_VALUE );
4585+
4586+ if (ubnd != null && lbnd != null )
4587+ { try
4588+ { double ud = Double .parseDouble (ubnd + "" );
4589+ double ld = Double .parseDouble (lbnd + "" );
4590+ double midd = (ud + ld )/2 ;
4591+ res .add (nme + " = " + midd );
4592+ } catch (Exception _e ) { }
4593+ }
4594+
4595+ if (ubnd != null )
4596+ { String upperval = ubnd + "" ;
4597+ if ("0" .equals (upperval ) || "1" .equals (upperval ) || "-1" .equals (upperval )) { }
4598+ else
4599+ { res .add (nme + " = " + upperval ); }
4600+ }
4601+ else
4602+ { res .add (nme + " = " + Double .MAX_VALUE ); }
4603+
4604+ if (lbnd != null )
4605+ { String lowerval = lbnd + "" ;
4606+ if ("0" .equals (lowerval ) || "1" .equals (lowerval ) || "-1" .equals (lowerval )) { }
4607+ else
4608+ { res .add (nme + " = " + lowerval ); }
4609+ }
4610+ else
4611+ { res .add (nme + " = " + Double .MIN_VALUE ); }
4612+
45294613 }
45304614 else if ("boolean" .equals (t ))
45314615 { res .add (nme + " = true" );
@@ -4561,6 +4645,150 @@ else if (type.isCollection() && elementType != null)
45614645 return res ;
45624646 }
45634647
4648+ public Vector testValues (String x , java .util .Map lowerBnds , java .util .Map upperBnds )
4649+ { Vector res = new Vector ();
4650+ if (type == null )
4651+ { return res ; }
4652+
4653+ String nme = x + "." + getName ();
4654+ String t = type .getName ();
4655+ Vector vs = type .getValues ();
4656+
4657+ String nmx = getName ();
4658+ Expression lbnd = (Expression ) lowerBnds .get (nmx );
4659+ Expression ubnd = (Expression ) upperBnds .get (nmx );
4660+
4661+ if ("int" .equals (t ))
4662+ { res .add ("0" );
4663+ res .add ("-1" );
4664+ res .add ("1" );
4665+
4666+ if (ubnd != null && lbnd != null )
4667+ { try
4668+ { double ud = Double .parseDouble (ubnd + "" );
4669+ double ld = Double .parseDouble (lbnd + "" );
4670+ int midd = (int ) Math .floor ((ud + ld )/2 );
4671+ res .add ("" + midd );
4672+ } catch (Exception _e ) { }
4673+ }
4674+
4675+ if (ubnd != null )
4676+ { String upperval = ubnd + "" ;
4677+ if ("0" .equals (upperval ) || "1" .equals (upperval ) || "-1" .equals (upperval )) { }
4678+ else
4679+ { res .add (upperval ); }
4680+ }
4681+ else
4682+ { res .add ("2147483647" ); } // Integer.MAX_VALUE);
4683+
4684+ if (lbnd != null )
4685+ { String lowerval = lbnd + "" ;
4686+ if ("0" .equals (lowerval ) || "1" .equals (lowerval ) || "-1" .equals (lowerval )) { }
4687+ else
4688+ { res .add (lowerval ); }
4689+ }
4690+ else
4691+ { res .add ("-2147483648" ); } // Integer.MIN_VALUE);
4692+ }
4693+ else if ("long" .equals (t ))
4694+ { res .add ("0" );
4695+ res .add ("-1" );
4696+ res .add ("1" );
4697+
4698+ if (ubnd != null && lbnd != null )
4699+ { try
4700+ { double ud = Double .parseDouble (ubnd + "" );
4701+ double ld = Double .parseDouble (lbnd + "" );
4702+ long midd = (long ) Math .floor ((ud + ld )/2 );
4703+ res .add ("" + midd );
4704+ } catch (Exception _e ) { }
4705+ }
4706+
4707+ if (ubnd != null )
4708+ { String upperval = ubnd + "" ;
4709+ if ("0" .equals (upperval ) || "1" .equals (upperval ) || "-1" .equals (upperval )) { }
4710+ else
4711+ { res .add (upperval ); }
4712+ }
4713+ else
4714+ { res .add (Long .MAX_VALUE + "L" ); }
4715+
4716+ if (lbnd != null )
4717+ { String lowerval = lbnd + "" ;
4718+ if ("0" .equals (lowerval ) || "1" .equals (lowerval ) || "-1" .equals (lowerval )) { }
4719+ else
4720+ { res .add (lowerval ); }
4721+ }
4722+ else
4723+ { res .add (Long .MIN_VALUE + "L" ); }
4724+ }
4725+ else if ("double" .equals (t ))
4726+ { res .add ("0" );
4727+ res .add ("-1" );
4728+ res .add ("1" );
4729+
4730+ if (ubnd != null && lbnd != null )
4731+ { try
4732+ { double ud = Double .parseDouble (ubnd + "" );
4733+ double ld = Double .parseDouble (lbnd + "" );
4734+ double midd = (ud + ld )/2 ;
4735+ res .add ("" + midd );
4736+ } catch (Exception _e ) { }
4737+ }
4738+
4739+ if (ubnd != null )
4740+ { String upperval = ubnd + "" ;
4741+ if ("0" .equals (upperval ) || "1" .equals (upperval ) || "-1" .equals (upperval )) { }
4742+ else
4743+ { res .add (upperval ); }
4744+ }
4745+ else
4746+ { res .add ("" + Double .MAX_VALUE ); }
4747+
4748+ if (lbnd != null )
4749+ { String lowerval = lbnd + "" ;
4750+ if ("0" .equals (lowerval ) || "1" .equals (lowerval ) || "-1" .equals (lowerval )) { }
4751+ else
4752+ { res .add (lowerval ); }
4753+ }
4754+ else
4755+ { res .add ("" + Double .MIN_VALUE ); }
4756+
4757+ }
4758+ else if ("boolean" .equals (t ))
4759+ { res .add ("true" );
4760+ res .add ("false" );
4761+ }
4762+ else if ("String" .equals (t ))
4763+ { res .add ("\" \" " );
4764+ res .add ("\" abc_XZ \" " );
4765+ res .add ("\" #�$* &~@':\" " );
4766+ }
4767+ else if (vs != null && vs .size () > 0 )
4768+ { for (int j = 0 ; j < vs .size (); j ++)
4769+ { String v0 = (String ) vs .get (j );
4770+ res .add (v0 );
4771+ }
4772+ }
4773+ else if (type .isEntity ())
4774+ { String obj = t .toLowerCase () + "x_0" ;
4775+ // Identifier.nextIdentifier(t.toLowerCase());
4776+ String decl = obj ;
4777+ res .add (decl );
4778+ }
4779+ /* else if (type.isCollection() && elementType != null)
4780+ { Type elemT = getElementType();
4781+ Vector testVals = elemT.testValues();
4782+ res.add("");
4783+ for (int p = 0; p < testVals.size(); p++)
4784+ { String tv = (String) testVals.get(p);
4785+ res.add(tv + " : " + nme);
4786+ }
4787+ } */
4788+
4789+ return res ;
4790+ }
4791+
45644792public String androidEntryField (String op , String previous , String ent )
45654793{ String nme = getName ();
45664794 String label = Named .capitalise (nme );
0 commit comments