# test_stackDicts.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.util import stack_dicts


class StackDictsTestCase(TestCase):
	
	def testStackDictsPass(self):
		
		tests = [ ( [ { "a":"b" }, { "b":"c" } ], { "a":"b", "b":"c" },
			  False, [], False ),
			  ( [ { "a":"b" }, { "a":"c" } ], { "a":"b c" },
			  True, [], False ),
			  ( [ { "a":"b" }, { "a":"c" } ], { "a":"b c" },
			  False, ["a"], False ),
			  ( [ { "a":"b" }, None ], { "a":"b" },
			  False, [], True ),
			  ( [ None ], None, False, [], False ),
			  ( [ None, {}], {}, False, [], True ) ]


		for test in tests:
			result = stack_dicts( test[0], test[2], test[3], test[4] )
			self.assertEqual( result, test[1] )
	
	def testStackDictsFail(self):
		
		tests = [ ( [ None, {} ], None, False, [], True ),
			  ( [ { "a":"b"}, {"a":"c" } ], { "a":"b c" },
				False, [], False ) ]
		for test in tests:
			result = stack_dicts( test[0], test[2], test[3], test[4] )
			self.assertNotEqual( result , test[1] )
