Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui_test/src/com/google/dart/tools/ui/internal/text/functions/FastDartPartitionScannerTest.java

Issue 8905009: Add syntax coloring support for raw strings and string interpolation (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.ui_test/src/com/google/dart/tools/ui/internal/text/functions/FastDartPartitionScannerTest.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.ui_test/src/com/google/dart/tools/ui/internal/text/functions/FastDartPartitionScannerTest.java (revision 0)
+++ editor/tools/plugins/com.google.dart.tools.ui_test/src/com/google/dart/tools/ui/internal/text/functions/FastDartPartitionScannerTest.java (revision 0)
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2011, the Dart project authors.
+ *
+ * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.dart.tools.ui.internal.text.functions;
+
+import com.google.dart.tools.ui.DartToolsPlugin;
+import com.google.dart.tools.ui.text.DartPartitions;
+import com.google.dart.tools.ui.text.DartTextTools;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocumentPartitioner;
+import org.eclipse.jface.text.ITypedRegion;
+
+public class FastDartPartitionScannerTest extends TestCase implements DartPartitions {
+ public void test_FastDartPartitionScanner_blockComment() {
+ ITypedRegion[] regions = partition("class X {\n/* comment */\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_MULTI_LINE_COMMENT, 10, 13);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_docComment() {
+ ITypedRegion[] regions = partition("class X {\n/** comment */\nvar s = null;}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_DOC, 10, 14);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_endOfLineComment() {
+ ITypedRegion[] regions = partition("class X {\n// comment\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_SINGLE_LINE_COMMENT, 10, 10);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_multilineString_double() {
+ ITypedRegion[] regions = partition("class X {\nvar s=\"\"\"test\"\"\";\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_MULTI_LINE_STRING, 16, 10);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_multilineString_single() {
+ ITypedRegion[] regions = partition("class X {\nvar s='''test''';\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_MULTI_LINE_STRING, 16, 10);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_nestedBraces() {
+ ITypedRegion[] regions = partition("class X {\nvar s=\"xxx ${f((v) {return v;})} xxx\";\n}\n");
+ assertCount(5, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 5);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[3], DART_STRING, 42, 5);
+ assertRegion(regions[4], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_nestedStrings() {
+ ITypedRegion[] regions = partition("class X {\nvar s=\"xxx ${yyy 'zzz' \"\"\"aaa ${bbb '''ccc''' bbb} aaa\"\"\" yyy} xxx\";\n}\n");
+ assertCount(13, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 5);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[3], DART_STRING, 27, 5);
+ assertRegion(regions[4], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[5], DART_MULTI_LINE_STRING, 33, 7);
+ assertRegion(regions[6], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[7], DART_MULTI_LINE_STRING, 46, 9);
+ assertRegion(regions[8], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[9], DART_MULTI_LINE_STRING, 60, 7);
+ assertRegion(regions[10], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[11], DART_STRING, 72, 5);
+ assertRegion(regions[12], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_normalString_double() {
+ ITypedRegion[] regions = partition("class X {\nvar s=\"test\";\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 6);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_normalString_single() {
+ ITypedRegion[] regions = partition("class X {\nvar s='test';\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 6);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_normalString_unclosed() {
+ ITypedRegion[] regions = partition("class X {\nvar s='xxxyyy;\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 8);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_rawString_double() {
+ ITypedRegion[] regions = partition("class X {\nvar s=@\"test\";\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 7);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ public void test_FastDartPartitionScanner_rawString_single() {
+ ITypedRegion[] regions = partition("class X {\nvar s=@'test';\n}\n");
+ assertCount(3, regions);
+ assertRegion(regions[0], "__dftl_partition_content_type", -1, -1);
+ assertRegion(regions[1], DART_STRING, 16, 7);
+ assertRegion(regions[2], "__dftl_partition_content_type", -1, -1);
+ }
+
+ /**
+ * Assert that the given array of regions contains the expected number of elements.
+ *
+ * @param expectedCount the expected number of elements
+ * @param regions the array being tested
+ */
+ private void assertCount(int expectedCount, ITypedRegion[] regions) {
+ assertEquals("wrong number of partitions:", expectedCount, regions.length);
+ }
+
+ /**
+ * Assert that the given region has the given type. If the offset and/or length is positive,
+ * additionally assert that it has the given offset and length.
+ *
+ * @param region the region being tested
+ * @param type the expected type of the region
+ * @param offset the expected offset of the region, or -1 if the offset is to be ignored
+ * @param length the expected length of the region, or -1 if the length is to be ignored
+ */
+ private void assertRegion(ITypedRegion region, String type, int offset, int length) {
+ assertEquals("wrong type:", type, region.getType());
+ if (offset >= 0) {
+ assertEquals("wrong offset:", offset, region.getOffset());
+ }
+ if (length >= 0) {
+ assertEquals("wrong length:", length, region.getLength());
+ }
+ }
+
+ private ITypedRegion[] partition(String source) {
+ Document doc = new Document(source);
+ DartTextTools tools = DartToolsPlugin.getDefault().getJavaTextTools();
+ IDocumentPartitioner part = tools.createDocumentPartitioner();
+ doc.setDocumentPartitioner(DartPartitions.DART_PARTITIONING, part);
+ part.connect(doc);
+ return part.computePartitioning(0, source.length());
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698