| OLD | NEW |
| 1 library tokenizer_test; | 1 library tokenizer_test; |
| 2 | 2 |
| 3 // Note: mirrors used to match the getattr usage in the original test | 3 // Note: mirrors used to match the getattr usage in the original test |
| 4 import 'dart:async'; | 4 import 'dart:async'; |
| 5 import 'dart:convert'; |
| 5 import 'dart:io'; | 6 import 'dart:io'; |
| 6 import 'dart:json' as json; | |
| 7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
| 8 import 'dart:utf'; | 8 import 'dart:utf'; |
| 9 import 'package:path/path.dart' as pathos; | 9 import 'package:path/path.dart' as pathos; |
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| 11 import 'package:html5lib/src/char_encodings.dart'; | 11 import 'package:html5lib/src/char_encodings.dart'; |
| 12 import 'package:html5lib/src/constants.dart' as constants; | 12 import 'package:html5lib/src/constants.dart' as constants; |
| 13 import 'package:html5lib/src/token.dart'; | 13 import 'package:html5lib/src/token.dart'; |
| 14 import 'package:html5lib/src/tokenizer.dart'; | 14 import 'package:html5lib/src/tokenizer.dart'; |
| 15 import 'package:html5lib/src/utils.dart'; | 15 import 'package:html5lib/src/utils.dart'; |
| 16 import 'support.dart'; | 16 import 'support.dart'; |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 "\nInput:", testInfo['input'], | 200 "\nInput:", testInfo['input'], |
| 201 "\nExpected:", expected, | 201 "\nExpected:", expected, |
| 202 "\nreceived:", tokens].map((s) => '$s').join('\n'); | 202 "\nreceived:", tokens].map((s) => '$s').join('\n'); |
| 203 var ignoreErrorOrder = testInfo['ignoreErrorOrder']; | 203 var ignoreErrorOrder = testInfo['ignoreErrorOrder']; |
| 204 if (ignoreErrorOrder == null) ignoreErrorOrder = false; | 204 if (ignoreErrorOrder == null) ignoreErrorOrder = false; |
| 205 | 205 |
| 206 expectTokensMatch(expected, received, ignoreErrorOrder, true, errorMsg); | 206 expectTokensMatch(expected, received, ignoreErrorOrder, true, errorMsg); |
| 207 } | 207 } |
| 208 | 208 |
| 209 Map unescape(Map testInfo) { | 209 Map unescape(Map testInfo) { |
| 210 // TODO(sigmundch,jmesserly): we currently use json.parse to unescape the | 210 // TODO(sigmundch,jmesserly): we currently use JSON.decode to unescape the |
| 211 // unicode characters in the string, we should use a decoding that works with | 211 // unicode characters in the string, we should use a decoding that works with |
| 212 // any control characters. | 212 // any control characters. |
| 213 decode(inp) => inp == '\u0000' ? inp : json.parse('"$inp"'); | 213 decode(inp) => inp == '\u0000' ? inp : JSON.decode('"$inp"'); |
| 214 | 214 |
| 215 testInfo["input"] = decode(testInfo["input"]); | 215 testInfo["input"] = decode(testInfo["input"]); |
| 216 for (var token in testInfo["output"]) { | 216 for (var token in testInfo["output"]) { |
| 217 if (token == "ParseError") { | 217 if (token == "ParseError") { |
| 218 continue; | 218 continue; |
| 219 } else { | 219 } else { |
| 220 token[1] = decode(token[1]); | 220 token[1] = decode(token[1]); |
| 221 if (token.length > 2) { | 221 if (token.length > 2) { |
| 222 for (var pair in token[2]) { | 222 for (var pair in token[2]) { |
| 223 var key = pair[0]; | 223 var key = pair[0]; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 241 result.write(match.group(2)); | 241 result.write(match.group(2)); |
| 242 } | 242 } |
| 243 return result.toString(); | 243 return result.toString(); |
| 244 } | 244 } |
| 245 | 245 |
| 246 void main() { | 246 void main() { |
| 247 for (var path in getDataFiles('tokenizer')) { | 247 for (var path in getDataFiles('tokenizer')) { |
| 248 if (!path.endsWith('.test')) continue; | 248 if (!path.endsWith('.test')) continue; |
| 249 | 249 |
| 250 var text = new File(path).readAsStringSync(); | 250 var text = new File(path).readAsStringSync(); |
| 251 var tests = json.parse(text); | 251 var tests = JSON.decode(text); |
| 252 var testName = pathos.basenameWithoutExtension(path); | 252 var testName = pathos.basenameWithoutExtension(path); |
| 253 var testList = tests['tests']; | 253 var testList = tests['tests']; |
| 254 if (testList == null) continue; | 254 if (testList == null) continue; |
| 255 | 255 |
| 256 group(testName, () { | 256 group(testName, () { |
| 257 for (int index = 0; index < testList.length; index++) { | 257 for (int index = 0; index < testList.length; index++) { |
| 258 final testInfo = testList[index]; | 258 final testInfo = testList[index]; |
| 259 | 259 |
| 260 testInfo.putIfAbsent("initialStates", () => ["Data state"]); | 260 testInfo.putIfAbsent("initialStates", () => ["Data state"]); |
| 261 for (var initialState in testInfo["initialStates"]) { | 261 for (var initialState in testInfo["initialStates"]) { |
| 262 test(testInfo["description"], () { | 262 test(testInfo["description"], () { |
| 263 testInfo["initialState"] = camelCase(initialState); | 263 testInfo["initialState"] = camelCase(initialState); |
| 264 runTokenizerTest(testInfo); | 264 runTokenizerTest(testInfo); |
| 265 }); | 265 }); |
| 266 } | 266 } |
| 267 } | 267 } |
| 268 }); | 268 }); |
| 269 } | 269 } |
| 270 } | 270 } |
| OLD | NEW |