/******************************************************************************* * Copyright (c) 2009 Cloudsmith Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cloudsmith Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.equinox.p2.tests.omniVersion; import junit.framework.TestCase; import org.eclipse.equinox.p2.metadata.Version; /** * Tests format(n) and format(N) * */ public class FormatNTest extends TestCase { public void testNonNegative() { Version v = Version.parseVersion("format(n):1"); assertNotNull(v); assertEquals(Version.parseVersion("raw:1"), v); assertNotNull(v = Version.parseVersion("format(n):0")); assertEquals(Version.parseVersion("raw:0"), v); try { Version.parseVersion("format(n):-1"); fail("Uncaught exception: negative number in 'n' format"); } catch (IllegalArgumentException e) { assertTrue(true); } } public void testNegativeValues() { Version v = Version.parseVersion("format(N):-1"); assertNotNull(v); assertEquals(Version.parseVersion("raw:-1"), v); assertNotNull(v = Version.parseVersion("format(N):1")); assertEquals(Version.parseVersion("raw:1"), v); assertNotNull(v = Version.parseVersion("format(N):0")); assertEquals(Version.parseVersion("raw:0"), v); } public void testLeadingZeros() { Version v = Version.parseVersion("format(n):000001"); assertNotNull(v); assertEquals(Version.parseVersion("raw:1"), v); assertNotNull(v = Version.parseVersion("format(N):-000001")); assertEquals(Version.parseVersion("raw:-1"), v); } public void testExact() { Version v = Version.parseVersion("format(n={2};n={2};):1122"); assertNotNull(v); assertEquals(Version.parseVersion("raw:11.22"), v); assertNotNull(v = Version.parseVersion("format(N={4};N={1};):-1234")); assertEquals(Version.parseVersion("raw:-123.4"), v); assertNotNull(v = Version.parseVersion("format(N={4};N={3};):-001234")); assertEquals(Version.parseVersion("raw:-1.234"), v); try { v = Version.parseVersion("format(n={2};.;n={2};):1.2"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { v = Version.parseVersion("format(n={2};.;n={2};):111.2222"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } public void testAtLeast() { Version v = Version.parseVersion("format(n={2,};.n={2,};):111.22222"); assertNotNull(v); assertEquals(Version.parseVersion("raw:111.22222"), v); try { v = Version.parseVersion("format(n={2,};.;n={2};):111.2"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } public void testAtMost() { Version v = Version.parseVersion("format(n={2,3};.n={2,3};):111.22"); assertNotNull(v); assertEquals(Version.parseVersion("raw:111.22"), v); try { v = Version.parseVersion("format(n={2,3};.n={2,3};):111.2222"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } try { v = Version.parseVersion("format(n={2,3};.n={2,3};):1.222"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } public void testNIsGreedy() { try { Version.parseVersion("format(nn):1010"); fail(); } catch (IllegalArgumentException e) { assertTrue(true); } } }