package jetbrains.buildServer.server.rest.data; import jetbrains.buildServer.server.rest.errors.LocatorProcessException; import junit.framework.TestCase; import org.junit.Test; /** * @author Yegor.Yarko * Date: 14.08.2010 */ public class LocatorTest extends TestCase { @Test public void testSingleValue() { final Locator locator = new Locator("abc"); assertEquals(true, locator.isSingleValue()); assertEquals(0, locator.getDimensionsCount()); assertEquals(null, locator.getSingleDimensionValue("")); assertEquals(null, locator.getSingleDimensionValue("name")); try { locator.getSingleValueAsLong(); fail(); } catch (LocatorProcessException ex) { } } @Test public void testSingleNumericValue() { final Locator locator = new Locator("123"); assertEquals(true, locator.isSingleValue()); assertEquals(new Long(123), locator.getSingleValueAsLong()); assertEquals(0, locator.getDimensionsCount()); } @Test public void testEmpty() { try { new Locator(""); fail(); } catch (LocatorProcessException ex) { } } @Test public void testSingleDimension() { final Locator locator = new Locator("name:1Vasiliy"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(null, locator.getSingleValueAsLong()); assertEquals(1, locator.getDimensionsCount()); assertEquals(null, locator.getSingleDimensionValue("")); assertEquals(null, locator.getSingleDimensionValue("missing")); assertEquals("1Vasiliy", locator.getSingleDimensionValue("name")); assertEquals(null, locator.getSingleDimensionValue("Name")); try { locator.getSingleDimensionValueAsLong("name"); fail(); } catch (LocatorProcessException ex) { } } @Test public void testSingleDimensionComplexValue() { final Locator locator = new Locator("a:!@#$%^&*()_+\"\'iqhjbw`0912"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(null, locator.getSingleValueAsLong()); assertEquals(1, locator.getDimensionsCount()); assertEquals("!@#$%^&*()_+\"\'iqhjbw`0912", locator.getSingleDimensionValue("a")); } @Test public void testSingleNumericDimension() { final Locator locator = new Locator("age:15"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(null, locator.getSingleValueAsLong()); assertEquals(1, locator.getDimensionsCount()); assertEquals(new Long(15), locator.getSingleDimensionValueAsLong("age")); assertEquals(null, locator.getSingleDimensionValueAsLong("name")); } @Test public void testMultiDimension1() { final Locator locator = new Locator("name:Bob:32,age:2,mood:permissive"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(3, locator.getDimensionsCount()); assertEquals(null, locator.getSingleDimensionValue("Bob")); assertEquals("Bob:32", locator.getSingleDimensionValue("name")); assertEquals("permissive", locator.getSingleDimensionValue("mood")); assertEquals(new Long(2), locator.getSingleDimensionValueAsLong("age")); } @Test public void testComplexValues1() { final Locator locator = new Locator("name:(Bob:32(,age:2),mood:permissive"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(2, locator.getDimensionsCount()); assertEquals(null, locator.getSingleDimensionValue("age")); assertEquals("Bob:32(,age:2", locator.getSingleDimensionValue("name")); assertEquals("permissive", locator.getSingleDimensionValue("mood")); } @Test public void testComplexValues2() { final Locator locator = new Locator("a:smth,name:(Bob:32(,age:2),mood:permissive"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(3, locator.getDimensionsCount()); assertEquals("smth", locator.getSingleDimensionValue("a")); assertEquals("Bob:32(,age:2", locator.getSingleDimensionValue("name")); assertEquals("permissive", locator.getSingleDimensionValue("mood")); } @Test public void testComplexValues3() { final Locator locator = new Locator("name:(Bob:32(,age:2),mood:(permissive)"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(2, locator.getDimensionsCount()); assertEquals("Bob:32(,age:2", locator.getSingleDimensionValue("name")); assertEquals("permissive", locator.getSingleDimensionValue("mood")); } @Test public void testComplexValues4() { final Locator locator = new Locator("name:17,mood:(permiss:ive)"); assertEquals(false, locator.isSingleValue()); assertEquals(null, locator.getSingleValue()); assertEquals(2, locator.getDimensionsCount()); assertEquals("17", locator.getSingleDimensionValue("name")); assertEquals("permiss:ive", locator.getSingleDimensionValue("mood")); } @Test public void testEmptyValues() { final Locator locator = new Locator("name:,y:aaa,x:"); assertEquals(3, locator.getDimensionsCount()); assertEquals("", locator.getSingleDimensionValue("name")); assertEquals("aaa", locator.getSingleDimensionValue("y")); assertEquals("", locator.getSingleDimensionValue("x")); } @Test public void testComplexValuesParsingErrors() { try { new Locator("name:("); fail(); } catch (LocatorProcessException ex) { } try { new Locator("name:(value"); fail(); } catch (LocatorProcessException ex) { } try { new Locator("name:,a"); fail(); } catch (LocatorProcessException ex) { } try { new Locator(":value"); fail(); } catch (LocatorProcessException ex) { } try { new Locator("name:value,:value2"); fail(); } catch (LocatorProcessException ex) { } try { new Locator("name:value,(a:b)"); fail(); } catch (LocatorProcessException ex) { } try { new Locator("name:(val)a"); fail(); } catch (LocatorProcessException ex) { } } }