Tests that proper data and start/end offset positions are reported for CSS style declarations and properties.

body: [0:0-0:4] [0:6-9:0]
['font-size':'12px'] @[1:4-1:20]
['foo':'bar !

    important /* !important property not recognized by WebCore */' !important non-parsed] @[2:4-4:66]
['height':'100% !important' !important] @[5:4-5:28]
['colorz':'"!important"' non-parsed] @[6:4-6:25]
['important':'!important' non-parsed] @[7:4-7:25]
['color':'"badcolor" ! important /* good property with strange value */' !important non-parsed] @[8:4-8:73]
body.main1: [11:29-11:67] [11:68-11:149]
['color':'#F00BAA'] @[11:81-11:96]
['zoo':'moo /* not an !important unrecognized property */' non-parsed] @[11:96-11:149]
body.main2: [13:0-13:10] [13:11-13:106]
['background':'green /* value !important comment */ !important /* no semicolon, very !important */' !important] @[13:11-13:106]
body.mainpage: [2:0-2:13] [2:15-5:0]
['text-decoration':'none'] @[3:4-3:26]
['badproperty':'1badvalue1' non-parsed] @[4:4-4:28]
element.style: [0:0-0:31]
['font-weight':'normal'] @[0:0-0:20]
['width':'80%'] @[0:21-0:31]

