Package org.ocpsoft.rewrite.util

Source Code of org.ocpsoft.rewrite.util.ParseToolsTest

/*
* Copyright 2011 <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
* 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 org.ocpsoft.rewrite.util;

import org.junit.Assert;
import org.junit.Test;
import org.ocpsoft.rewrite.util.ParseTools.CaptureType;
import org.ocpsoft.rewrite.util.ParseTools.CapturingGroup;

/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
*/
public class ParseToolsTest
{
   @Test
   public void testBalancedCapture()
   {
      CapturingGroup group = ParseTools.balancedCapture("/foo/{bar}/cab".toCharArray(), 5, 12, CaptureType.BRACE);
      Assert.assertEquals(9, group.getEnd());
      Assert.assertArrayEquals("bar".toCharArray(), group.getCaptured());

      group = ParseTools.balancedCapture("/foo/{{a}}/cab".toCharArray(), 5, 12, CaptureType.BRACE);
      Assert.assertEquals(9, group.getEnd());
      Assert.assertArrayEquals("{a}".toCharArray(), group.getCaptured());

      group = ParseTools.balancedCapture("/foo/{{a}}/cab".toCharArray(), 0, 12, CaptureType.REGEX);
      Assert.assertEquals(4, group.getEnd());
      Assert.assertArrayEquals("foo".toCharArray(), group.getCaptured());
   }

   @Test(expected = IllegalArgumentException.class)
   public void testBalancedThrowsExceptionIfBeginCharIsEscaped()
   {
      ParseTools.balancedCapture("/foo/\\{{a}}/cab".toCharArray(), 6, 12, CaptureType.BRACE);
   }

   @Test
   public void testBalancedCaptureIgnoresEscapedTerminations()
   {
      CapturingGroup group = ParseTools.balancedCapture("/foo/{bar\\}}/cab".toCharArray(), 5, 12, CaptureType.BRACE);
      Assert.assertEquals(11, group.getEnd());
      Assert.assertArrayEquals("bar\\}".toCharArray(), group.getCaptured());
   }

   @Test
   public void testBalancedCaptureIgnoresEscapedNestedBeginChars()
   {
      CapturingGroup group = ParseTools.balancedCapture("/foo/{\\{a}}/cab".toCharArray(), 5, 12, CaptureType.BRACE);
      Assert.assertEquals(9, group.getEnd());
      Assert.assertArrayEquals("\\{a".toCharArray(), group.getCaptured());
   }

   @Test
   public void testBalancedCaptureReturnsEmptyForEmptyCapture() throws Exception
   {
      CapturingGroup group = ParseTools.balancedCapture("/foo/{}/cab".toCharArray(), 5, 8, CaptureType.BRACE);
      Assert.assertEquals(6, group.getEnd());
      Assert.assertArrayEquals("".toCharArray(), group.getCaptured());
   }

   @Test
   public void testIsEscapedReturnsTrueWhenCharacterIsEscaped() throws Exception
   {
      Assert.assertTrue(ParseTools.isEscaped("/foo{bar\\}}".toCharArray(), 9));
   }

   @Test
   public void testIsEscapedReturnsTrueWhenSecondCharacterIsEscaped() throws Exception
   {
      Assert.assertTrue(ParseTools.isEscaped("\\{".toCharArray(), 1));
   }

   @Test
   public void testIsEscapedReturnsFalseWhenCharacterIsDoubleEscaped() throws Exception
   {
      Assert.assertFalse(ParseTools.isEscaped("/foo{bar\\\\}}".toCharArray(), 10));
   }


   @Test
   public void testBalancedCaptureNested1()
   {
      CapturingGroup group = ParseTools.balancedCapture("(one(two)(three(four(five))))".toCharArray(), 0, 28,
               CaptureType.PAREN);
      Assert.assertEquals(28, group.getEnd());
      Assert.assertArrayEquals("one(two)(three(four(five)))".toCharArray(), group.getCaptured());
   }

   @Test
   public void testBalancedCaptureNested2()
   {
      CapturingGroup group = ParseTools.balancedCapture("(one(two)(three(four(five))))".toCharArray(), 4, 28,
               CaptureType.PAREN);
      Assert.assertEquals(8, group.getEnd());
      Assert.assertArrayEquals("two".toCharArray(), group.getCaptured());
   }

   @Test
   public void testBalancedCaptureNested3()
   {
      CapturingGroup group = ParseTools.balancedCapture("(one(two)(three(four(five))))".toCharArray(), 9, 28,
               CaptureType.PAREN);
      Assert.assertEquals(27, group.getEnd());
      Assert.assertArrayEquals("three(four(five))".toCharArray(), group.getCaptured());
   }

   @Test
   public void testBalancedCaptureNested4()
   {
      CapturingGroup group = ParseTools.balancedCapture("(one(two)(three(four(five))))".toCharArray(), 15, 28,
               CaptureType.PAREN);
      Assert.assertEquals(26, group.getEnd());
      Assert.assertArrayEquals("four(five)".toCharArray(), group.getCaptured());
   }

   @Test
   public void testBalancedCaptureNested5()
   {
      CapturingGroup group = ParseTools.balancedCapture("(one(two)(three(four(five))))".toCharArray(), 20, 28,
               CaptureType.PAREN);
      Assert.assertEquals(25, group.getEnd());
      Assert.assertArrayEquals("five".toCharArray(), group.getCaptured());
   }

}
TOP

Related Classes of org.ocpsoft.rewrite.util.ParseToolsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.