// Copyright 2012 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
//
// 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.collide.client.code.gotodefinition;
import com.google.collide.client.documentparser.DocumentParser;
import com.google.collide.client.testing.StubIncrementalScheduler;
import com.google.collide.client.testutil.CodeMirrorTestCase;
import com.google.collide.client.util.PathUtil;
import com.google.collide.codemirror2.CodeMirror2;
import com.google.collide.json.shared.JsonArray;
import com.google.collide.shared.document.Document;
public class AnchorTagParserTests extends CodeMirrorTestCase {
private static final String SOURCE = ""
+ "<html>\n"
+ " <body>\n"
+ " <a></a>\n"
+ " <a \n"
+ " name=\"aName1\"/>\n" // name attribute with quotes
+ " <a name=aName2/>\n" // name attribute without quotes
+ " <a id=\"aId1\"/>\n" // id attribute
+ " <a id=\"\"/>\n" // empty id
+ " <div id=\"aId1\"/>\n" // not A tag
+ " </body>\n"
+ "</html>\n";
@Override
public String getModuleName() {
return "com.google.collide.client.code.gotodefinition.GoToDefinitionTestModule";
}
public void testCollectedAnchors() {
PathUtil filePath = new PathUtil("index.html");
Document document = Document.createFromString(SOURCE);
DocumentParser parser = DocumentParser.create(
document, CodeMirror2.getParser(filePath), new StubIncrementalScheduler(50, 50));
AnchorTagParser anchorParser = new AnchorTagParser(parser);
parser.begin();
JsonArray<AnchorTagParser.AnchorTag> anchorTags = anchorParser.getAnchorTags();
assertEquals(3, anchorTags.size());
assertAnchorTag(anchorTags.get(0), "aName1", 4, 13);
assertAnchorTag(anchorTags.get(1), "aName2", 5, 12);
assertAnchorTag(anchorTags.get(2), "aId1", 6, 11);
}
private void assertAnchorTag(AnchorTagParser.AnchorTag a, String name, int lineNumber,
int column) {
assertEquals(name, a.getName());
assertEquals(lineNumber, a.getLineNumber());
assertEquals(column, a.getColumn());
}
}