Re: Semantics of <link rel=match> together with <link rel=mismatch>

On Jun 19, 2012, at 7:58 AM, Aryeh Gregor wrote:

> On Tue, Jun 19, 2012 at 5:44 PM, Aryeh Gregor <ayg@aryeh.name> wrote:
>> Suppose you have a test that contains:
>> 
>>  <link rel="match" href="test-ref.html">
>>  <link rel="mismatch" href="test-notref.html">
>> 
>> Does the test pass if it matches test-ref.html *or* doesn't match
>> test-notref.html?  Or does it only pass if it matches test-ref.html
>> *and* doesn't match test-notref.html?  The wiki page doesn't seem
>> clear:
>> 
>>  http://wiki.csswg.org/test/format#reference-links
> 
> Also, what about:
> 
>  <link rel="mismatch" href="test-notref-1.html">
>  <link rel="mismatch" href="test-notref-2.html">
> 
> Or:
> 
>  <link rel="match" href="test-ref.html">
>  <link rel="mismatch" href="test-notref-1.html">
>   <link rel="mismatch" href="test-notref-2.html">
> 


A test may not match any of its 'mismatch' references. It's not really an 'and' relationship it's:

pass == (test == test-ref.html) and not ((test == test-notref-1.html) or (test == test-notref-2.html))

if that helps…

If you had a more complex situation like:

test:
<link rel="match" href="test-ref-1.html">
<link rel="match" href="test-ref-2.html">
<link rel="mismatch" href="test-notref-1.html">
<link rel="mismatch" href="test-notref-2.html">

then it's:
pass == ((test == test-ref-1.html) or (test == test-ref-2.html)) and not ((test == test-notref-1.html) or (test == test-notref-2.html))

And to get even more complicated, the references can have both 'match' and 'mismatch' references themselves. Consider:

test:
<link rel="match" href="test-ref-1.html">
<link rel="match" href="test-ref-2.html">
<link rel="mismatch" href="test-notref-1.html">
<link rel="mismatch" href="test-notref-2.html">

test-ref-1.html:
<link rel="match" href="test-ref-3.html">
<link rel="match" href="test-ref-4.html">
<link rel="mismatch" href="test-notref-3.html">
<link rel="mismatch" href="test-notref-4.html">

test-ref-2.html:
<link rel="match" href="test-ref-5.html">
<link rel="match" href="test-ref-6.html">
<link rel="mismatch" href="test-notref-5.html">
<link rel="mismatch" href="test-notref-6.html">

then it's:
pass == (((test == test-ref-1.html) and ((test-ref-1.html == test-ref-3.html) or (test-ref-1.html == test-ref-4.html))) or 
         ((test == test-ref-2.html) and ((test-ref-2.html == test-ref-5.html) or (test-ref-2.html == test-ref-6.html)))) and 
        not ((test == test-notref-1.html) or (test == test-notref-2.html)) and 
        not ((test-ref-1.html == test-notref-3.html) or (test-ref-1.html == test-notref-4.html)) and
        not ((test-ref-2.html == test-notref-5.html) or (test-ref-2.html == test-notref-6.html))

...hopefully that clears it right up :-)

I updated the wiki text.

Peter

Received on Tuesday, 19 June 2012 17:16:36 UTC