package cgeo.geocaching.test;
import cgeo.geocaching.test.mock.GC1ZXX2;
import cgeo.geocaching.test.mock.GC2CJPF;
import cgeo.geocaching.test.mock.MockedCache;
import cgeo.geocaching.utils.BaseUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import junit.framework.TestCase;
/**
* Test class to compare the performance of two regular expressions on given data.
* Can be used to improve the time needed to parse the cache data
* Run As "JUnit Test"
*
* @author blafoo
*/
public class RegExPerformanceTest extends TestCase {
// Regular expression: ""
// Input string 2: "
" will handle a large, non-matching string almost a hundred times faster then the previous one!
/** Search until the start of the next tag. The tag can follow immediately */
public static final String NEXT_START_TAG = "[^<]*";
/** Search until the end of the actual tag. The closing tag can follow immediately */
public static final String NEXT_END_TAG = "[^>]*";
/** Search until the start of the next tag. The tag must not follow immediately */
public static final String NEXT_START_TAG2 = "[^<]+";
/** Search until the end of the actual tag. The closing tag must not follow immediately */
public static final String NEXT_END_TAG2 = "[^>]+";
/** P tag */
public static final String TAG_P_START = "
"; /** Closing P tag **/ public static final String TAG_P_END = "
"; /** Search until the next <p> */ public static final String TAG_P_START_NEXT = NEXT_START_TAG + TAG_P_START; /** Search until the next </p> */ public static final String TAG_P_END_NEXT = NEXT_START_TAG + TAG_P_END; /** strong tag */ public static final String TAG_STRONG_START = ""; /** Closing strong tag */ public static final String TAG_STRONG_END = ""; /** Search until the next <strong> */ public static final String TAG_STRONG_START_NEXT = NEXT_START_TAG + TAG_STRONG_START; /** Search until the next </strong> */ public static final String TAG_STRONG_END_NEXT = NEXT_START_TAG + TAG_STRONG_END; /** div tag */ public static final String TAG_DIV_START = "[^<]*
[^<]*[^<]*\\W*Additional Hints", Pattern.CASE_INSENSITIVE); public final static Pattern PATTERN_DESCRIPTION = Pattern.compile("(.*?)[^<]*[^<]*
[^<]*
[^<]*[^<]*\\W*Additional Hints"); public final static Pattern PATTERN_HINT_OLD = Pattern.compile("
]*>[^S]*Size[^:]*:[^<]*]*>[^<]*]*>[^<]*[^<]*[^<]*[^<]*
]*>[^S]*Size[^:]*:[^<]*]*>[^<]*]*>[^<]*[^<]*[^<]*[^<]*
]*>([^<]*)
", Pattern.CASE_INSENSITIVE); private final static Pattern PATTERN_PERSONALNOTE = Pattern.compile("]*>(.*?)
"); private final static Pattern PATTERN_NAME_OLD = Pattern.compile("