and here's the new testcase.
A
On Sep 13, Adam Wolff wrote:
> Change change.XXXXXXXXX.4kLDyQqX.txt by [EMAIL PROTECTED]
> /Users/adam/laszlo/src/svn/openlaszlo/trunk/ on 2006-09-13 16:30:54 PDT
>
> Summary: Fix specificity implementation for CSS rules. Implement new
> "applicability" logic without resorting to poking at private aspects of the
> class implementation.
>
> New Features:
>
> Bugs Fixed:
>
> Technical Reviewer: ptw
> QA Reviewer: (pending)
> Doc Reviewer: (pending)
>
> Documentation:
>
> Release Notes:
> In cases where two rules have the same specificity, Laszlo defines an
> additional "applicability" rule, which attempts to prefer rules which select
> subclasses over rules which select superclasses.
>
> In the case of descendant selectors, descendants are compared in lock-step.
> If two steps in the descendant selector select for non-equivalent classes,
> the subclass will be considered higher specificity than the superclass.
>
> In cases where one of the two descendants being compared is not a class
> selector, the selector is skipped for the purposes of this comparison. If the
> comparison process walks off the end of either selector chain, last-one-wins
> lexical order applies.
>
> Details:
> This is a refactor of the specificity rule calculation in addition to a
> removal of the skanky classhops count.
>
> Tests:
> New test:
> http://localhost:8080/trunk/test/style/specificity/newspecificity.lzx
>
> Updated (to show how redefined applicability works) :
> http://localhost:8080/trunk/test/style/specificity/applicability.lzx
>
> Ran:
> http://localhost:8080/trunk/diamond/client/test/speedtest.lzx
>
> http://localhost:8080/trunk/test/style/descendantselector/complex-descendant-selector-test.lzx
> http://localhost:8080/trunk/test/style/constraints/constraint-test.lzx
> http://localhost:8080/trunk/test/style/specificity/specificity-tests.lzx
>
>
> Files:
> M test/style/specificity/applicability.lzx
> A test/style/specificity/newspecificity.lzx
> M WEB-INF/lps/lfc/services/LzCSSStyle.js
<!-- Copyright 2006 Laszlo Systems -->
<canvas debug="true">
<include href="../test"/>
<stylesheet>
/* 1 */
view{
value1 : '1';
value2 : '1';
value3 : '1';
value4 : '1';
value5 : '1';
value6 : '1';
value7 : '1';
value8 : '1';
value9 : '1';
value10 : '1';
value11 : '1';
}
/* 2 */
view view{
value2 : '2';
value3 : '2';
value4 : '2';
value5 : '2';
value6 : '2';
value7 : '2';
value8 : '2';
value9 : '2';
value10 : '2';
value11 : '2';
}
/* 10 */
[ name="aname" ]{
value3 : '3';
value4 : '3';
value5 : '3';
value6 : '3';
value7 : '3';
value8 : '3';
value9 : '3';
value10 : '3';
value11 : '3';
}
/* 11 */
[name="aname"] view{
value4 : '4';
value5 : '4';
value6 : '4';
value7 : '4';
value8 : '4';
value9 : '4';
value10 : '4';
value11 : '4';
}
/* 11 */
view [name="aname"] {
value5 : '5';
value6 : '5';
value7 : '5';
value8 : '5';
value9 : '5';
value10 : '5';
value11 : '5';
}
/* 11 */
view[ name="aname" ]{
value6 : '6';
value7 : '6';
value8 : '6';
value9 : '6';
value10 : '6';
value11 : '6';
}
/* 12 */
view[name="aname"] view{
value7 : '7';
value8 : '7';
value9 : '7';
value10 : '7';
value11 : '7';
}
/* 22 */
view[name="aname"] view[name="aname"]{
value8 : '8';
value9 : '8';
value10 : '8';
value11 : '8';
}
/* 100 */
#childID{
value9 : '9';
value10 : '9';
value11 : '9';
}
/* 101 */
view #childID{
value10 : '10';
value11 : '10';
}
/* 101 */
#parentID view{
value11 : '11';
}
</stylesheet>
<view name="aname" id="parentID">
<view name="aname" id="childID">
<attribute name="value1" value="$style{ 'value1'}"/>
<attribute name="value2" value="$style{ 'value2'}"/>
<attribute name="value3" value="$style{ 'value3'}"/>
<attribute name="value4" value="$style{ 'value4'}"/>
<attribute name="value5" value="$style{ 'value5'}"/>
<attribute name="value6" value="$style{ 'value6'}"/>
<attribute name="value7" value="$style{ 'value7'}"/>
<attribute name="value8" value="$style{ 'value8'}"/>
<attribute name="value9" value="$style{ 'value9'}"/>
<attribute name="value10" value="$style{ 'value10'}"/>
<attribute name="value11" value="$style{ 'value11'}"/>
</view>
</view>
<testsuite name="applicability" loglevel="log">
<handler name="oninit">
this.addTest( "testRuleOrder");
this.run();
</handler>
<method name="testRuleOrder">
var n = childID;
this.assertEquals( 1 , n.value1 );
this.assertEquals( 2 , n.value2 );
this.assertEquals( 3 , n.value3 );
this.assertEquals( 4 , n.value4 );
this.assertEquals( 5 , n.value5 );
this.assertEquals( 6 , n.value6 );
this.assertEquals( 7 , n.value7 );
this.assertEquals( 8 , n.value8 );
this.assertEquals( 9 , n.value9 );
this.assertEquals( 10, n.value10 );
this.assertEquals( 11, n.value11 );
this.finishedTest( 'testRuleOrder' );
</method>
</testsuite>
</canvas>
_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev