Testcases for HTTP location grammar [CR130]

Phillipe,
Today's working group call concluded that a grammar should define how the
http location is parsed and you have the action, so as discussed I'm sending
you some of my testcases. My post [1] is now captured as CR130.

In deciding on the grammatical rules, things to consider include the
precedence of double curly braces versus single braces and how to match
pairs of single braces - e.g. by scanning from left to right, by 'inner most
pair' (or whatever the terminology is), etc.

When trying several approaches in Woden I found it's not as simple as 'find
a left curly brace, check for a double brace, then scan for a right curly
brace'. Also, it appeared from my initial interpretation of the spec that
double curly braces should take precedence over single braces, but this
produced some unexpected results. A better approach seems to be 'inner most
pair' takes precedence, then double curly braces, then other single braces.

Below are some test cases using different approaches. "Valid/invalid" simply
indicates whether non-paired single braces end up in the parsed string
(literal single braces are okay).

Inner-most pair, then doubles, then unpaired singles. town=Paris:

"{town}"       > {town}           > "Paris"     > valid
"{{town}}"     > {,{town},}       > "{Paris}"   > invalid
"{{{town}}}"   > {{,{town},}}     > "{Paris}"   > valid
"{{{{town}}}}" > {{,{,{town},}},} > "{{Paris}}" > invalid
"{{town}"      > {,{town}         > "{Paris"    > invalid
"{{{town}"     > {{,{town}        > "{Paris"    > valid
"{town}}"      > {town},}         > "Paris}"    > invalid
"{town}}}"     > {town},}}        > "Paris}"    > valid

Double braces first, then pairs of singles left-to-right. town=Paris:

"{town}"       > {town}           > "Paris"     > valid
"{{town}}"     > {{,town,}}       > "{town}"    > valid
"{{{town}}}"   > {{,{,town,}},}   > "{{town}}"  > invalid
"{{{{town}}}}" > {{,{{,town,}},}} > "{{Paris}}" > invalid
"{{town}"      > {{,town,}        > "{town}"    > invalid
"{{{town}"     > {{,{town}        > "{Paris"    > valid
"{town}}"      > {,town,}}        > "{town}"    > invalid
"{town}}}"     > {,town,}},}      > "{town}}"   > invalid

Other test cases:

""                      (is an   empty string location valid?)
"/temperature/"
"/temperature/{town}/"
"/temperature/{town}/{state}/{country}"
"/temperature/{town}/{{{state}}}/{country}"

It would be good if the spec could include similar examples and/or if the
test suite covered the grammar.

regards,
John Kaputin

[1] http://lists.w3.org/Archives/Public/www-ws-desc/2007Jan/0045.html

Received on Thursday, 11 January 2007 21:50:16 UTC