sebb        2004/12/04 16:34:14

  Modified:    src/components/org/apache/jmeter/extractor Tag: rel-2_0
                        RegexExtractor.java
  Log:
  Bug 32395 - nested constant ($1$CONST$2$) not handled correctly - fixed and 
added test cases
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.15.2.2  +59 -4     
jakarta-jmeter/src/components/org/apache/jmeter/extractor/RegexExtractor.java
  
  Index: RegexExtractor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/extractor/RegexExtractor.java,v
  retrieving revision 1.15.2.1
  retrieving revision 1.15.2.2
  diff -u -r1.15.2.1 -r1.15.2.2
  --- RegexExtractor.java       19 May 2004 23:17:01 -0000      1.15.2.1
  +++ RegexExtractor.java       5 Dec 2004 00:34:14 -0000       1.15.2.2
  @@ -137,7 +137,7 @@
                                else // < 0 means we save all the matches
                                {
                                        int prevCount = 0;
  -                                     String 
prevString=(String)vars.get(refName+"_matchNr");
  +                                     String 
prevString=vars.get(refName+"_matchNr");
                                        if (prevString != null)
                       {
                       try
  @@ -238,13 +238,16 @@
           log.debug("template = " + rawTemplate);
           Util.split(pieces, matcher, templatePattern, rawTemplate);
           PatternMatcherInput input = new PatternMatcherInput(rawTemplate);
  -        Iterator iter = pieces.iterator();
           boolean startsWith = isFirstElementGroup(rawTemplate);
           log.debug(
               "template split into "
                   + pieces.size()
                   + " pieces, starts with = "
                   + startsWith);
  +        if (startsWith){
  +            pieces.remove(0);// Remove initial empty entry
  +        }
  +        Iterator iter = pieces.iterator();
           while (iter.hasNext())
           {
               boolean matchExists = matcher.contains(input, templatePattern);
  @@ -414,6 +417,58 @@
                        assertEquals("pinposition2", vars.get("regVal_g1"));
                        assertEquals("5", vars.get("regVal_g2"));
                        assertEquals("<value field=\"pinposition2\">5</value>", 
vars.get("regVal_g0"));
  +        }
  +
  +        static void templateSetup(RegexExtractor rex,String tmp){
  +            rex.setRegex("<company-(\\w+?)-(\\w+?)-(\\w+?)>");
  +            rex.setMatchNumber(1);
  +            rex.setTemplate(tmp);
  +            rex.process();           
  +        }
  +        public void testTemplate1() throws Exception
  +        {
  +             templateSetup(extractor,"");
  +                     assertEquals("<company-xmlext-query-ret>", 
vars.get("regVal_g0"));
  +                     assertEquals("xmlext", vars.get("regVal_g1"));
  +                     assertEquals("query", vars.get("regVal_g2"));
  +                     assertEquals("ret", vars.get("regVal_g3"));
  +            assertEquals("", vars.get("regVal"));
  +        }
  +
  +        public void testTemplate2() throws Exception
  +        {
  +             templateSetup(extractor,"ABC");
  +            assertEquals("ABC", vars.get("regVal"));
  +        }
  +
  +        public void testTemplate3() throws Exception
  +        {
  +             templateSetup(extractor,"$2$");
  +            assertEquals("query", vars.get("regVal"));
  +        }
  +
  +        public void testTemplate4() throws Exception
  +        {
  +             templateSetup(extractor,"PRE$2$");
  +            assertEquals("PREquery", vars.get("regVal"));
  +        }
  +
  +        public void testTemplate5() throws Exception
  +        {
  +             templateSetup(extractor,"$2$POST");
  +            assertEquals("queryPOST", vars.get("regVal"));
  +        }
  +
  +        public void testTemplate6() throws Exception
  +        {
  +             templateSetup(extractor,"$2$$1$");
  +            assertEquals("queryxmlext", vars.get("regVal"));
  +        }
  +
  +        public void testTemplate7() throws Exception
  +        {
  +             templateSetup(extractor,"$2$MID$1$");
  +            assertEquals("queryMIDxmlext", vars.get("regVal"));
           }
   
           public void testVariableExtraction2() throws Exception
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to