blob: 768f9eda3d4c6924ebb6f87ad9dc279a503d7018 [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2019 Stephan Wahlbrink <sw@wahlbrink.eu> and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.docmlet.base.core;
import static org.eclipse.statet.docmlet.base.core.DocmlSearchPattern.LABEL_SUBSTRING_MATCH;
import static org.eclipse.statet.jcommons.text.core.SearchPattern.PREFIX_MATCH;
import static org.eclipse.statet.jcommons.text.core.SearchPattern.SUBSTRING_MATCH;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.text.core.SearchPattern;
@NonNullByDefault
public class DocmlSearchPatternLabelTest extends DocmlSearchPatternTest {
public DocmlSearchPatternLabelTest() {
}
@Override
protected DocmlSearchPattern createPattern(int rules) {
if ((rules & SUBSTRING_MATCH) != 0) {
rules|= LABEL_SUBSTRING_MATCH;
}
return super.createPattern(rules);
}
@Test
public void matches_Substring_Prefix_0() {
final SearchPattern pattern= createPattern(SUBSTRING_MATCH);
pattern.setPattern("");
assertEquals(PREFIX_MATCH, pattern.matches("sec:a"));
assertEquals(PREFIX_MATCH, pattern.matches("sec:abc"));
pattern.setPattern("a");
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:a"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:abc"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:xabcxabc"));
assertEquals(0, pattern.matches("sec:xbc"));
pattern.setPattern("ab");
assertEquals(0, pattern.matches("sec:a"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:abc"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:xabcxabc"));
assertEquals(0, pattern.matches("sec:xbc"));
pattern.setPattern("bc");
assertEquals(0, pattern.matches("sec:a"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:abc"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:xabcxabc"));
assertEquals(SUBSTRING_MATCH, pattern.matches("sec:xbc"));
assertEquals(0, pattern.matches("sec:xbxc"));
}
@Test
public void matches_Substring_Prefix_PatternWithPrefix() {
final SearchPattern pattern= createPattern(SUBSTRING_MATCH);
pattern.setPattern("sec:");
assertEquals(PREFIX_MATCH, pattern.matches("sec:a"));
assertEquals(PREFIX_MATCH, pattern.matches("sec:abc"));
assertEquals(0, pattern.matches("secx:abc"));
pattern.setPattern("sec:a");
assertEquals(PREFIX_MATCH, pattern.matches("sec:a"));
assertEquals(PREFIX_MATCH, pattern.matches("sec:abc"));
assertEquals(LABEL_SUBSTRING_MATCH, pattern.matches("sec:xabcxabc"));
assertEquals(0, pattern.matches("sec:xbc"));
assertEquals(0, pattern.matches("secx:xabc"));
pattern.setPattern("sec:ab");
assertEquals(0, pattern.matches("sec:a"));
assertEquals(PREFIX_MATCH, pattern.matches("sec:abc"));
assertEquals(LABEL_SUBSTRING_MATCH, pattern.matches("sec:xabcxabc"));
assertEquals(0, pattern.matches("sec:xbc"));
assertEquals(0, pattern.matches("secx:xabc"));
pattern.setPattern("sec:bc");
assertEquals(0, pattern.matches("sec:a"));
assertEquals(LABEL_SUBSTRING_MATCH, pattern.matches("sec:abc"));
assertEquals(LABEL_SUBSTRING_MATCH, pattern.matches("sec:xabcxabc"));
assertEquals(0, pattern.matches("sec:xbxc"));
assertEquals(0, pattern.matches("secx:xabc"));
}
@Test
public void getMatchingRegions_Substring_PatternWithPrefix() {
final SearchPattern pattern= createPattern(SUBSTRING_MATCH);
pattern.setPattern("sec:a");
assertArrayEquals(new int[] { 0, 4, 5, 6, 9, 10 },
pattern.getMatchingRegions("sec:xabcxabc", LABEL_SUBSTRING_MATCH) );
pattern.setPattern("sec:ab");
assertArrayEquals(new int[] { 0, 4, 5, 7, 9, 11 },
pattern.getMatchingRegions("sec:xabcxabc", LABEL_SUBSTRING_MATCH) );
pattern.setPattern("sec:bc");
assertArrayEquals(new int[] { 0, 4, 5, 7 },
pattern.getMatchingRegions("sec:abc", LABEL_SUBSTRING_MATCH) );
assertArrayEquals(new int[] { 0, 4, 6, 8, 10, 12 },
pattern.getMatchingRegions("sec:xabcxabc", LABEL_SUBSTRING_MATCH) );
}
}