# test_isjustname.py -- Portage Unit Testing Functionality
# Copyright 2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

from portage.tests import TestCase
from portage.dep import isjustname

class IsJustName(TestCase):

	def testIsJustName(self):

		cats = ( "", "sys-apps/", "foo/", "virtual/" )
		pkgs = ( "portage", "paludis", "pkgcore", "notARealPkg" )
		vers = ( "", "-2.0-r3", "-1.0_pre2", "-3.1b" )

		for pkg in pkgs:
			for cat in cats:
				for ver in vers:
					if len(ver):
						self.assertFalse( isjustname( cat + pkg + ver ),
						msg="isjustname(%s) is True!" % (cat + pkg + ver) )
					else:
						self.assertTrue( isjustname( cat + pkg + ver ),
						msg="isjustname(%s) is False!" % (cat + pkg + ver) )
