*/
CompositeType appliSetAttr = apam.createCompositeType(null, "TestSetAttr", null, "TestAttr", null,null);
assertTrue(appliSetAttr != null);
Instance appliSetAttr_0 = appliSetAttr.createInstance(null /* composite */, null/* properties */);
assertTrue (appliSetAttr_0 != null);
//assertEquals ((CompositeImpl)appliSetAttr_0.getMainInst () != null);
System.out.println(" Testing attributes on main implem declared: location = {living, kitchen, bedroom}");
Implementation impl = appliSetAttr.getMainImpl(); //S1toS2Final
Specification spec = impl.getSpec() ;
Instance inst = null ;
inst = impl.getInst() ; // any instance
System.out.println("Tested instance : " + inst + ". TestedImpl : " + impl + " Tested spec : " + spec);
//check attributes defined in the xml
System.out.println("=========== start testing xml attributes");
assertEquals (spec.getProperty("S1-Attr"), "coucou") ;
assertNotEquals (spec.getProperty("s1-attr"), "coucou") ; //case sensitive for attr
assertNotEquals (spec.getProperty("S1-Attr"), "Coucou") ; // case sensitive for value
assertEquals (impl.getProperty("S1-Attr"), "coucou") ;
assertEquals (inst.getProperty("S1-Attr"), "coucou") ;
assertEquals (spec.getProperty("S1-Enum"), "s1-2") ;
assertEquals (impl.getProperty("S1-Enum"), "s1-2") ;
assertEquals (inst.getProperty("S1-Enum"), "s1-2") ;
//default values S1toS2Final-Attr
assertNotEquals (spec.getProperty("s1b"), "true") ;
assertEquals (impl.getProperty("s1b"), "true") ;
assertEquals (inst.getProperty("s1b"), "true") ;
assertEquals (impl.getProperty("location"), "bedroom") ;
assertEquals (inst.getProperty("S1toS2Final-Bool"), "true") ;
assertNotEquals (impl.getProperty("S1toS2Final-Bool"), "true") ;
assertTrue (impl.getProperty("S1toS2Final-Attr") == null) ;
assertTrue (inst.getProperty("S1toS2Final-Attr") == null) ;
assertEquals (impl.getProperty("testEnumere"), "v2") ;
assertEquals (inst.getProperty("testEnumere"), "v2") ;
// assertTrue (inst.getProperty("S1toS2Final-Bool") == null) ;
// assertEquals (inst.getProperty("S1toS2Final-String"), "a String Value") ;
// assertTrue (inst.getProperty("badAttr") == null) ;
System.out.println("=========== passed testing xml attributes");
System.out.println("=========== start testing setting attributes");
// <property name="autoString" value="aValue" type="string"/>
// <property name="autoSet" value="Z-1, Z-2" type="{Z-0, Z-1, Z-2, Z-3}"/>
//setting auto defined attributes
assertEquals (impl.getProperty("autoString"), "aValue") ;
assertEquals (inst.getProperty("autoString"), "aValue") ;
assertEquals (impl.getProperty("autoSet"), "Z-1, Z-2") ;
assertEquals (inst.getProperty("autoSet"), "Z-1, Z-2") ;
impl.setProperty("autoString", "New-value") ;
assertEquals (impl.getProperty("autoString"), "New-value") ;
assertEquals (inst.getProperty("autoString"), "New-value") ;
impl.setProperty("autoSet", "Z-3, Z-2") ;
assertEquals (impl.getProperty("autoSet"), "Z-3, Z-2") ;
assertEquals (inst.getProperty("autoSet"), "Z-3, Z-2") ;
//is it allowed to set an attribute at the level of its definition ? If YES, it should be equal.
impl.setProperty("S1toS2Final-String1", "falseVal") ;
assertEquals(impl.getProperty("S1toS2Final-String1"), "falseVal");
//Setting spec attributes.
spec.setProperty("xxx", "value") ;
assertTrue (spec.getProperty("xxx") == null) ;
spec.setProperty("S1-Attr", "New-value") ;
assertEquals (spec.getProperty("S1-Attr"), "New-value") ;
assertEquals (impl.getProperty("S1-Attr"), "New-value") ;
assertEquals (inst.getProperty("S1-Attr"), "New-value") ;
spec.setProperty("S1-Enum", "New-value") ;
assertEquals (spec.getProperty("S1-Enum"), "s1-2") ;
spec.setProperty("S1-Enum", "s1-3") ;
assertEquals (spec.getProperty("S1-Enum"), "s1-3") ;
assertEquals (impl.getProperty("S1-Enum"), "s1-3") ;
assertEquals (inst.getProperty("S1-Enum"), "s1-3") ;
impl.setProperty("S1-Enum", "s1-1") ;
assertEquals (spec.getProperty("S1-Enum"), "s1-3") ;
assertEquals (impl.getProperty("S1-Enum"), "s1-3") ;
assertEquals (inst.getProperty("S1-Enum"), "s1-3") ;
impl.setProperty("location", "living"); // good
assertEquals(impl.getProperty("location"), "living");
assertEquals(inst.getProperty("location"), "living");
impl.setProperty("location", "Living"); // error: Value is case sensitive
assertEquals(impl.getProperty("location"), "living");
impl.setProperty("location", "anywhere"); // error: false value
assertEquals(impl.getProperty("location"), "living");
impl.setProperty("testMain", "valeurTestMain"); // error: not defined
assertTrue(impl.getProperty("testMain") == null);
impl.setProperty("impl-name", "5"); // error: final attribute
assertEquals(impl.getProperty("impl-name"), impl.getName());
//boolean
impl.setProperty("s1b", "5"); // error: bool attribute
assertNotEquals(impl.getProperty("s1b"), "5");
impl.setProperty("s1b", "true"); // Ok
assertEquals(impl.getProperty("s1b"), "true");
assertEquals(inst.getProperty("s1b"), "true");
//integer
impl.setProperty("s1i", "entier"); // error: int attribute
assertTrue(impl.getProperty("s1i") == null);
impl.setProperty("s1i", "5"); // Ok
assertEquals(impl.getProperty("s1i"), "5");
assertEquals(inst.getProperty("s1i"), "5");
impl.setProperty("s1i", "5, 7, 55,985"); // Ok
assertNotEquals(impl.getProperty("s1i"), "5, 7, 55,985");
// assertEquals(inst.getProperty("s1i"), "5, 7, 55,985");
// impl.setProperty("s1i", "5, zz, 55,985"); // wrong
// assertNotEquals(impl.getProperty("s1i"), "5, zz, 55,985");
boolean ok ;
assertTrue ( inst.match("(s1i>=4)")) ;
assertTrue (!inst.match("(s1i<=4)")) ;
assertTrue (!inst.match("(s1i>=6)")) ;
assertTrue ( inst.match("(s1i<=6)")) ;
assertTrue (!inst.match("(s1i>=10)")) ;
assertTrue ( inst.match("(s1i<=10)")) ;
assertTrue ( inst.match("(s1i>=01)")) ;
assertTrue (!inst.match("(s1i<=01)")) ;
assertTrue ( inst.match("(s1i>=-61)")) ;
assertTrue (!inst.match("(s1i<=-61)")) ;
impl.setProperty("S1-Attr", "5"); // error: cannot redefine
assertEquals(spec.getProperty("S1-Attr"), "New-value");
//field and internal. Set by program when starting
assertEquals(inst.getProperty("fieldAttr"), "initial set by program");
String s = "to set the field attribute" ;
((TestAttr)inst.getServiceObject()).callS1 (s) ; //callS1 sets the attribute to s
assertEquals(inst.getProperty("fieldAttr"), s);
s = "second value" ;
((TestAttr)inst.getServiceObject()).callS1 (s) ; //callS1 sets the attribute to s
assertEquals(inst.getProperty("fieldAttr"), s);
inst.setProperty("fieldAttr", "a Value") ;
assertEquals(inst.getProperty("fieldAttr"), s);
//Refining spec attribute with a field
inst.setProperty("fieldAttr", "test"); // error: cannot set
assertNotEquals(impl.getProperty("fieldAttr"), "test");
//Instances can set spec attributes, if not defined by the implem
inst.setProperty("OS", "Linux") ; // ok
assertEquals(inst.getProperty("OS"), "Linux");
impl.setProperty("setInt", "7, 055"); // for match tests
System.out.println("\n");
System.out.println("setInt value is : " + inst.getProperty("setInt"));
assertTrue ( inst.match("(setInt <* 5, 7, 55,985)")) ;
assertTrue (!inst.match("(setInt *> 5, 7, 55,985)")) ;
assertTrue ( inst.match("(setInt <* 05, 7, 55,985)")) ;
// assertTrue ( inst.match("(setInt <= 05, 7, 55,985)")) ;
Set<Integer> setInt = new HashSet<Integer> () ;
setInt.add(5) ;
setInt.add(985) ;
impl.setProperty("setInt", setInt); // for match tests
System.out.println("\n");
System.out.println("setInt value is : " + inst.getProperty("setInt"));
assertTrue ( inst.match("(setInt <* 5, 7, 55,985)")) ;
assertTrue (!inst.match("(setInt *> 5, 7, 55,985)")) ;
// assertTrue ( inst.match("(setInt <* 05, 7, 55,985)")) ;
// assertTrue ( inst.match("(setInt <= 05, 7, 55,985)")) ;
inst.setProperty("OS", "Android, Linux, IOS") ; // ok
System.out.println("OS=" + inst.getProperty("OS"));
assertEquals(inst.getProperty("OS"), "Android, Linux, IOS");
assertTrue(impl.getProperty("OS") == null);
Set<String> OS = new HashSet<String> () ;
OS.add("Android") ;
OS.add("Linux") ;
OS.add("IOS") ;
inst.setProperty("OS", OS) ; // ok
System.out.println("OS=" + inst.getProperty("OS"));
assertNotEquals(inst.getProperty("OS"), "Android, Linux, IOS");
assertTrue(impl.getProperty("OS") == null);
System.out.println("\n");
System.out.println("OS value is : " + inst.getProperty("OS"));
System.out.println("toto does not exist. Its value is null");
//non instantiated attributes
ok = inst.match("(toto= Android , Linux , IOS)") ;
System.out.println("Matching: (toto= Android , Linux , IOS): " + ok);
ok = inst.match("(toto<*Android , Linux , IOS)") ;
System.out.println("Matching: (toto<*Android , Linux , IOS): " + ok);
ok = inst.match("(toto=testnull)") ;
System.out.println("Matching: (toto=testnull): " + ok);
ok = inst.match("(toto<*testnull,)") ;
System.out.println("Matching: (toto<*testnull,): " + ok);
ok = inst.match("(toto=testnull)") ;
System.out.println("Matching: (toto<*testnull): " + ok);
ok = inst.match("(toto=*)") ;
System.out.println("Matching: (toto=*): " + ok);
ok = inst.match("(OS=*)") ;
System.out.println("Matching: (OS=*): " + ok);
ok = inst.match("(OS=And*)") ;
System.out.println("Matching: (OS=And*): " + ok);
ok = inst.match("(OS*>And*)") ;
System.out.println("Matching: (OS*>And*): " + ok);
ok = inst.match("(OS<*And*,)") ;
System.out.println("Matching: (OS<*And*,): " + ok);
ok = inst.match("(OS<*And*,L*)") ;
System.out.println("Matching: (OS<*And*,L*): " + ok);
ok = inst.match("(OS<*And*)") ;
System.out.println("Matching: (OS<*And*): " + ok);
ok = inst.match("(OS=zz*)") ;
System.out.println("Matching: (OS=zz*): " + ok);
ok = inst.match("(OS<*zz*)") ;
System.out.println("Matching: (O*>zz*): " + ok);
System.out.println("");
System.out.println("Matching: (OS *> Linux, Android, IOS, Windows): " + ok);
ok = inst.match("(OS <* Linux, Android, IOS, Windows)") ;
System.out.println("Matching: (OS <* Linux, Android, IOS, Windows): " + ok);
ok = inst.match("(OS *> Linux, Android)") ;
System.out.println("Matching: (OS *> Linux, Android): " + ok);
ok = inst.match("(OS *> Android)") ;
System.out.println("Matching: (OS *> Android): " + ok);
ok = inst.match("(OS *> Android,)") ;
System.out.println("Matching: (OS *> Android,): " + ok);
ok = inst.match("(OS=Android)") ;
System.out.println("Matching: (OS=Android): " + ok);
ok = inst.match("(OS >=Android)") ;
System.out.println("Matching: (OS>=Android): " + ok);
ok = inst.match("(OS >=Linux, Android, IOS)") ;
System.out.println("Matching: (OS>=Linux, Android, IOS): " + ok);
ok = inst.match("(OS >=Android, Linux, IOS)") ;
System.out.println("Matching: (OS>=Android, Linux, IOS): " + ok);
ok = inst.match("(OS >=Android, Linux , IOS)") ;
System.out.println("Matching: (OS>=Android, Linux , IOS): " + ok);
ok = inst.match("(OS *> Linux, Android, IOS)") ;
System.out.println("Matching: (OS *> Linux, Android, IOS): " + ok);
ok = inst.match("(OS <* Linux, Android, IOS)") ;
System.out.println("Matching: (OS <* Linux, Android, IOS): " + ok);
ok = inst.match("(OS = Linux, Android, IOS)") ;
System.out.println("Matching: (OS = Linux, Android, IOS): " + ok);
ok = inst.match("(OS = Android , Linux , IOS)") ;
System.out.println("Matching: (OS = Android , Linux , IOS): " + ok);
ok = inst.match("(OS *> Linux, Android, IOS,)") ;
System.out.println("Matching: (OS *> Linux, Android, IOS,): " + ok);
ok = inst.match("(OS <* Linux, Android, IOS,)") ;
System.out.println("Matching: (OS <* Linux, Android, IOS,): " + ok);
ok = inst.match("(OS *> {Linux, Android, IOS})") ;
System.out.println("Matching: (OS *> {Linux, Android, IOS}): " + ok);
ok = inst.match("(OS *> [Linux, Android, IOS])") ;
System.out.println("Matching: (OS *> [Linux, Android, IOS]): " + ok);
ok = inst.match("(OS *> Linux, Android, IOS)") ;
System.out.println("Matching: (OS *> Linux, Android, IOS): " + ok);
inst.setProperty("OS", "Linux, Android, IOS,") ; // ok
System.out.println("\nOS value is : " + inst.getProperty("OS"));
ok = inst.match("(OS = Android)") ;
System.out.println("Matching: (OS=Android): " + ok);
ok = inst.match("(OS >=Android)") ;
System.out.println("Matching: (OS >=Android): " + ok);
inst.setProperty("OS", "Android,") ; // ok
System.out.println("\nOS value is : " + inst.getProperty("OS"));
ok = inst.match("(OS=Android)") ;
System.out.println("Matching: (OS=Android): " + ok);
ok = inst.match("(OS >=Android)") ;
System.out.println("Matching: (OS >=Android): " + ok);
System.out.println("\n");
inst.setProperty("OS", "vxxx") ; //
assertNotEquals(inst.getProperty("OS"), "vxxx");
assertTrue(impl.getProperty("OS") == null);
inst.setProperty("s1c", "s1c-value") ; // ok
assertEquals(inst.getProperty("s1c"), "s1c-value");
inst.setProperty("location", "kitchen"); // redefine
assertEquals(impl.getProperty("location"), "living");
assertEquals(inst.getProperty("location"), "living");
//Instance has its own defs, and can define spec definiiton if not set in implem
inst.setProperty("S1toS2Final-Bool", "6") ;
assertNotEquals(inst.getProperty("S1toS2Final-Bool"), "6");
inst.setProperty("S1toS2Final-Bool", "false") ;
assertEquals(inst.getProperty("S1toS2Final-Bool"), "false");
inst.setProperty("S1toS2Final-location", "xxx") ;
assertTrue(inst.getProperty("S1toS2Final-location") == null);
inst.setProperty("S1toS2Final-location", "FinalLiving, FinalKitchen") ;
assertEquals(inst.getProperty("S1toS2Final-location"), "FinalLiving, FinalKitchen");
System.out.println("=========== start testing setting attributes");
/*
System.out.println("=========== start test Remove Attributes");
inst.removeProperty ("name") ;