| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // @dart = 2.9 |
| |
| import 'spell_checking_utils.dart'; |
| |
| void main() { |
| expectSplit("Hello world", false, ["Hello", "world"], [0, 6]); |
| expectSplit("Hello world", false, ["Hello", "world"], [0, 7]); |
| expectSplit("Hello\nworld", false, ["Hello", "world"], [0, 6]); |
| expectSplit("Hello 'world'", false, ["Hello", "world"], [0, 7]); |
| expectSplit("It's fun", false, ["It's", "fun"], [0, 5]); |
| expectSplit("It's 'fun'", false, ["It's", "fun"], [0, 6]); |
| expectSplit("exit-code", false, ["exit", "code"], [0, 5]); |
| expectSplit("fatal=warning", false, ["fatal", "warning"], [0, 6]); |
| expectSplit("vm|none", false, ["vm", "none"], [0, 3]); |
| expectSplit("vm/none", false, ["vm", "none"], [0, 3]); |
| expectSplit("vm,none", false, ["vm", "none"], [0, 3]); |
| expectSplit("One or more word(s)", false, ["One", "or", "more", "word(s)"], |
| [0, 4, 7, 12]); |
| expectSplit("One or more words)", false, ["One", "or", "more", "words"], |
| [0, 4, 7, 12]); |
| expectSplit( |
| "It's 'fun' times 100", false, ["It's", "fun", "times"], [0, 6, 11]); |
| |
| expectSplit("splitCamelCase", false, ["splitCamelCase"], [0]); |
| expectSplit("splitCamelCase", true, ["split", "Camel", "Case"], [0, 5, 10]); |
| expectSplit("logicalAnd_end", true, ["logical", "And", "end"], [0, 7, 11]); |
| expectSplit("TheCNNAlso", true, ["The", "CNN", "Also"], [0, 3, 6]); |
| expectSplit("LOGICAL_OR_PRECEDENCE", true, ["LOGICAL", "OR", "PRECEDENCE"], |
| [0, 8, 11]); |
| |
| expectSplit("ThisIsTheCNN", true, ["This", "Is", "The", "CNN"], [0, 4, 6, 9]); |
| |
| // Special-case "A". |
| expectSplit("notAConstant", true, ["not", "A", "Constant"], [0, 3, 4]); |
| expectSplit("notAC", true, ["not", "A", "C"], [0, 3, 4]); |
| expectSplit("split_etc", false, ["split_etc"], [0]); |
| expectSplit("split_etc", true, ["split", "etc"], [0, 6]); |
| expectSplit("split:etc", false, ["split:etc"], [0]); |
| expectSplit("split:etc", true, ["split", "etc"], [0, 6]); |
| |
| expectSplit("vm.none", false, ["vm.none"], [0]); |
| expectSplit("vm.none", true, ["vm", "none"], [0, 3]); |
| |
| expectSplit( |
| "ActualData(foo, bar)", false, ["ActualData(foo", "bar"], [0, 16]); |
| expectSplit("ActualData(foo, bar)", true, ["Actual", "Data", "foo", "bar"], |
| [0, 6, 11, 16]); |
| |
| expectSplit("List<int>", false, ["List<int"], [0]); |
| expectSplit("List<int>", true, ["List", "int"], [0, 5]); |
| |
| expectSplit("Platform.environment['TERM']", false, |
| ["Platform.environment['TERM"], [0]); |
| expectSplit("Platform.environment['TERM']", true, |
| ["Platform", "environment", "TERM"], [0, 9, 22]); |
| |
| expectSplit("DART2JS_PLATFORM", false, ["DART2JS_PLATFORM"], [0]); |
| expectSplit("DART2JS_PLATFORM", true, ["DART2JS", "PLATFORM"], [0, 8]); |
| |
| expectSplit("Foo\\n", false, ["Foo\\n"], [0]); |
| expectSplit("Foo\\n", true, ["Foo"], [0]); |
| |
| expectSplit("foo({bar})", false, ["foo({bar"], [0]); |
| expectSplit("foo({bar})", true, ["foo", "bar"], [0, 5]); |
| |
| expectSplit("foo@bar", false, ["foo@bar"], [0]); |
| expectSplit("foo@bar", true, ["foo", "bar"], [0, 4]); |
| |
| expectSplit("foo#bar", false, ["foo#bar"], [0]); |
| expectSplit("foo#bar", true, ["foo", "bar"], [0, 4]); |
| |
| expectSplit("foo&bar", false, ["foo&bar"], [0]); |
| expectSplit("foo&bar", true, ["foo", "bar"], [0, 4]); |
| |
| expectSplit("foo?bar", false, ["foo?bar"], [0]); |
| expectSplit("foo?bar", true, ["foo", "bar"], [0, 4]); |
| |
| expectSplit("foo%bar", false, ["foo%bar"], [0]); |
| expectSplit("foo%bar", true, ["foo", "bar"], [0, 4]); |
| |
| expectAlternative( |
| "explicitley", ["explicitly"], {"foo", "explicitly", "bar"}); |
| expectAlternative("explicitlqqqqy", null, {"foo", "explicitly", "bar"}); |
| |
| print("OK"); |
| } |
| |
| void expectSplit(String s, bool splitAsCode, List<String> expectedWords, |
| List<int> expectedOffsets) { |
| List<int> actualOffsets = <int>[]; |
| List<String> actualWords = |
| splitStringIntoWords(s, actualOffsets, splitAsCode: splitAsCode); |
| compareLists(actualWords, expectedWords); |
| compareLists(actualOffsets, expectedOffsets); |
| } |
| |
| void compareLists(List<dynamic> actual, List<dynamic> expected) { |
| if (actual == null && expected == null) return; |
| if (actual == null) throw "Got null, expected $expected"; |
| if (expected == null) throw "Expected null, got $actual"; |
| if (actual.length != expected.length) { |
| throw "Not the same ($actual vs $expected)"; |
| } |
| for (int i = 0; i < actual.length; i++) { |
| if (actual[i] != expected[i]) { |
| throw "Not the same ($actual vs $expected)"; |
| } |
| } |
| } |
| |
| void expectAlternative( |
| String word, List<String> expected, Set<String> dictionary) { |
| List<String> alternatives = findAlternatives(word, [dictionary]); |
| compareLists(alternatives, expected); |
| } |