# Copyright 2009-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

from portage.tests import TestCase
from portage.exception import InvalidDependString
from portage.dep import Atom, use_reduce

class UseReduceTestCase(object):
	def __init__(self, deparray, uselist=[], masklist=[],
	             matchall=0, excludeall=[], is_src_uri=False,
	             eapi='0', opconvert=False, flat=False, expected_result=None,
	             is_valid_flag=None, token_class=None):
		self.deparray = deparray
		self.uselist = uselist
		self.masklist = masklist
		self.matchall = matchall
		self.excludeall = excludeall
		self.is_src_uri = is_src_uri
		self.eapi = eapi
		self.opconvert = opconvert
		self.flat = flat
		self.is_valid_flag = is_valid_flag
		self.token_class = token_class
		self.expected_result = expected_result

	def run(self):
		try:
			return use_reduce(self.deparray, self.uselist, self.masklist,
				self.matchall, self.excludeall, self.is_src_uri, self.eapi,
				self.opconvert, self.flat, self.is_valid_flag, self.token_class)
		except InvalidDependString as e:
			raise InvalidDependString("%s: %s" % (e, self.deparray))

class UseReduce(TestCase):

	def always_true(self, ununsed_parameter):
		return True

	def always_false(self, ununsed_parameter):
		return False

	def testUseReduce(self):

		EAPI_WITH_SRC_URI_ARROWS = "2"
		EAPI_WITHOUT_SRC_URI_ARROWS = "0"

		test_cases = (
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				uselist=["a", "b", "c", "d"],
				expected_result=["A", "B"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				uselist=["a", "b", "c"],
				expected_result=["A", "B", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				uselist=["b", "c"],
				expected_result=["B", "D"]
				),

			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				matchall=True,
				expected_result=["A", "B", "C", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				masklist=["a", "c"],
				expected_result=["C", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				matchall=True,
				masklist=["a", "c"],
				expected_result=["B", "C", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				uselist=["a", "b"],
				masklist=["a", "c"],
				expected_result=["B", "C", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				excludeall=["a", "c"],
				expected_result=["D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				uselist=["b"],
				excludeall=["a", "c"],
				expected_result=["B", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				matchall=True,
				excludeall=["a", "c"],
				expected_result=["A", "B", "D"]
				),
			UseReduceTestCase(
				"a? ( A ) b? ( B ) !c? ( C ) !d? ( D )",
				matchall=True,
				excludeall=["a", "c"],
				masklist=["b"],
				expected_result=["A", "D"]
				),

			UseReduceTestCase(
				"a? ( b? ( AB ) )",
				uselist=["a", "b"],
				expected_result=["AB"]
				),
			UseReduceTestCase(
				"a? ( b? ( AB ) C )",
				uselist=["a"],
				expected_result=["C"]
				),
			UseReduceTestCase(
				"a? ( b? ( || ( AB CD ) ) )",
				uselist=["a", "b"],
				expected_result=["||", ["AB", "CD"]]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( A ) b? ( B ) ) )",
				uselist=["a", "b"],
				expected_result=["||", ["A", "B"]]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( A ) b? ( B ) ) )",
				uselist=["a"],
				expected_result=["A"]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( A ) b? ( B ) ) )",
				uselist=[],
				expected_result=[]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( || ( A c? ( C ) ) ) b? ( B ) ) )",
				uselist=[],
				expected_result=[]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( || ( A c? ( C ) ) ) b? ( B ) ) )",
				uselist=["a"],
				expected_result=["A"]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( || ( A c? ( C ) ) ) b? ( B ) ) )",
				uselist=["b"],
				expected_result=["B"]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( || ( A c? ( C ) ) ) b? ( B ) ) )",
				uselist=["c"],
				expected_result=[]
				),
			UseReduceTestCase(
				"|| ( || ( a? ( || ( A c? ( C ) ) ) b? ( B ) ) )",
				uselist=["a", "c"],
				expected_result=["||", ["A", "C"]]
				),

			# paren_reduce tests
			UseReduceTestCase(
				"A",
				expected_result=["A"]),
			UseReduceTestCase(
				"( A )",
				expected_result=["A"]),
			UseReduceTestCase(
				"|| ( A B )",
				expected_result=["||", ["A", "B"]]),
			UseReduceTestCase(
				"|| ( ( A B ) C )",
				expected_result=["||", [["A", "B"], "C"]]),
			UseReduceTestCase(
				"|| ( ( A B ) ( C ) )",
				expected_result=["||", [["A", "B"], "C"]]),
			UseReduceTestCase(
				"|| ( A || ( B C ) )",
				expected_result=["||", ["A", "B", "C"]]),
			UseReduceTestCase(
				"|| ( A || ( B C D ) )",
				expected_result=["||", ["A", "B", "C", "D"]]),
			UseReduceTestCase(
				"|| ( A || ( B || ( C D ) E ) )",
				expected_result=["||", ["A", "B", "C", "D", "E"]]),
			UseReduceTestCase(
				"( || ( ( ( A ) B ) ) )",
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"( || ( || ( ( A ) B ) ) )",
				expected_result=["||", ["A", "B"]]),
			UseReduceTestCase(
				"( || ( || ( ( A ) B ) ) )",
				expected_result=["||", ["A", "B"]]),
			UseReduceTestCase(
				"|| ( A )",
				expected_result=["A"]),
			UseReduceTestCase(
				"( || ( || ( || ( A ) foo? ( B ) ) ) )",
				expected_result=["A"]),
			UseReduceTestCase(
				"( || ( || ( || ( A ) foo? ( B ) ) ) )",
				uselist=["foo"],
				expected_result=["||", ["A", "B"]]),
			UseReduceTestCase(
				"( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )",
				expected_result=[]),
			UseReduceTestCase(
				"( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )",
				uselist=["foo", "bar"],
				expected_result=["||", ["A", "B"]]),
			UseReduceTestCase(
				"A || ( bar? ( C ) ) foo? ( bar? ( C ) ) B",
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"|| ( A ) || ( B )",
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"foo? ( A ) foo? ( B )",
				expected_result=[]),
			UseReduceTestCase(
				"foo? ( A ) foo? ( B )",
				uselist=["foo"],
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"|| ( A B ) C",
				expected_result=['||', ['A', 'B'], 'C']),
			UseReduceTestCase(
				"A || ( B C )",
				expected_result=['A', '||', ['B', 'C']]),

			# SRC_URI stuff
			UseReduceTestCase(
				"http://foo/bar -> blah.tbz2",
				is_src_uri=True,
				eapi=EAPI_WITH_SRC_URI_ARROWS,
				expected_result=["http://foo/bar", "->", "blah.tbz2"]),
			UseReduceTestCase(
				"foo? ( http://foo/bar -> blah.tbz2 )",
				uselist=[],
				is_src_uri=True,
				eapi=EAPI_WITH_SRC_URI_ARROWS,
				expected_result=[]),
			UseReduceTestCase(
				"foo? ( http://foo/bar -> blah.tbz2 )",
				uselist=["foo"],
				is_src_uri=True,
				eapi=EAPI_WITH_SRC_URI_ARROWS,
				expected_result=["http://foo/bar", "->", "blah.tbz2"]),
			UseReduceTestCase(
				"http://foo/bar -> bar.tbz2 foo? ( ftp://foo/a )",
				uselist=[],
				is_src_uri=True,
				eapi=EAPI_WITH_SRC_URI_ARROWS,
				expected_result=["http://foo/bar", "->", "bar.tbz2"]),
			UseReduceTestCase(
				"http://foo/bar -> bar.tbz2 foo? ( ftp://foo/a )",
				uselist=["foo"],
				is_src_uri=True,
				eapi=EAPI_WITH_SRC_URI_ARROWS,
				expected_result=["http://foo/bar", "->", "bar.tbz2", "ftp://foo/a"]),
			UseReduceTestCase(
				"http://foo.com/foo http://foo/bar -> blah.tbz2",
				uselist=["foo"],
				is_src_uri=True,
				eapi=EAPI_WITH_SRC_URI_ARROWS,
				expected_result=["http://foo.com/foo", "http://foo/bar", "->", "blah.tbz2"]),

			# opconvert tests
			UseReduceTestCase(
				"A",
				opconvert=True,
				expected_result=["A"]),
			UseReduceTestCase(
				"( A )",
				opconvert=True,
				expected_result=["A"]),
			UseReduceTestCase(
				"|| ( A B )",
				opconvert=True,
				expected_result=[['||', 'A', 'B']]),
			UseReduceTestCase(
				"|| ( ( A B ) C )",
				opconvert=True,
				expected_result=[['||', ['A', 'B'], 'C']]),
			UseReduceTestCase(
				"|| ( A || ( B C ) )",
				opconvert=True,
				expected_result=[['||', 'A', 'B', 'C']]),
			UseReduceTestCase(
				"|| ( A || ( B C D ) )",
				opconvert=True,
				expected_result=[['||', 'A', 'B', 'C', 'D']]),
			UseReduceTestCase(
				"|| ( A || ( B || ( C D ) E ) )",
				expected_result=["||", ["A", "B", "C", "D", "E"]]),
			UseReduceTestCase(
				"( || ( ( ( A ) B ) ) )",
				opconvert=True,
				expected_result=['A', 'B']),
			UseReduceTestCase(
				"( || ( || ( ( A ) B ) ) )",
				opconvert=True,
				expected_result=[['||', 'A', 'B']]),
			UseReduceTestCase(
				"|| ( A B ) C",
				opconvert=True,
				expected_result=[['||', 'A', 'B'], 'C']),
			UseReduceTestCase(
				"A || ( B C )",
				opconvert=True,
				expected_result=['A', ['||', 'B', 'C']]),
			UseReduceTestCase(
				"A foo? ( || ( B || ( bar? ( || ( C D E ) ) !bar? ( F ) ) ) ) G",
				uselist=["foo", "bar"],
				opconvert=True,
				expected_result=['A', ['||', 'B', 'C', 'D', 'E'], 'G']),
			UseReduceTestCase(
				"A foo? ( || ( B || ( bar? ( || ( C D E ) ) !bar? ( F ) ) ) ) G",
				uselist=["foo", "bar"],
				opconvert=False,
				expected_result=['A', '||', ['B', 'C', 'D', 'E'], 'G']),

			UseReduceTestCase(
				"|| ( A )",
				opconvert=True,
				expected_result=["A"]),
			UseReduceTestCase(
				"( || ( || ( || ( A ) foo? ( B ) ) ) )",
				expected_result=["A"]),
			UseReduceTestCase(
				"( || ( || ( || ( A ) foo? ( B ) ) ) )",
				uselist=["foo"],
				opconvert=True,
				expected_result=[['||', 'A', 'B']]),
			UseReduceTestCase(
				"( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )",
				opconvert=True,
				expected_result=[]),
			UseReduceTestCase(
				"( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )",
				uselist=["foo", "bar"],
				opconvert=True,
				expected_result=[['||', 'A', 'B']]),
			UseReduceTestCase(
				"A || ( bar? ( C ) ) foo? ( bar? ( C ) ) B",
				opconvert=True,
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"|| ( A ) || ( B )",
				opconvert=True,
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"foo? ( A ) foo? ( B )",
				opconvert=True,
				expected_result=[]),
			UseReduceTestCase(
				"foo? ( A ) foo? ( B )",
				uselist=["foo"],
				opconvert=True,
				expected_result=["A", "B"]),
			UseReduceTestCase(
				"|| ( foo? ( || ( A B ) ) )",
				uselist=["foo"],
				opconvert=True,
				expected_result=[['||', 'A', 'B']]),

			UseReduceTestCase(
				"|| ( ( A B ) foo? ( || ( C D ) ) )",
				uselist=["foo"],
				opconvert=True,
				expected_result=[['||', ['A', 'B'], 'C', 'D']]),

			UseReduceTestCase(
				"|| ( ( A B ) foo? ( || ( C D ) ) )",
				uselist=["foo"],
				opconvert=False,
				expected_result=['||', [['A', 'B'], 'C', 'D']]),

			UseReduceTestCase(
				"|| ( ( A B ) || ( C D ) )",
				expected_result=['||', [['A', 'B'], 'C', 'D']]),

			UseReduceTestCase(
				"|| ( ( A B ) || ( C D || ( E ( F G ) || ( H ) ) ) )",
				expected_result=['||', [['A', 'B'], 'C', 'D', 'E', ['F', 'G'], 'H']]),

			UseReduceTestCase(
				"|| ( ( A B ) || ( C D || ( E ( F G ) || ( H ) ) ) )",
				opconvert=True,
				expected_result=[['||', ['A', 'B'], 'C', 'D', 'E', ['F', 'G'], 'H']]),

			UseReduceTestCase(
				"|| ( foo? ( A B ) )",
				uselist=["foo"],
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( || ( foo? ( A B ) ) )",
				uselist=["foo"],
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( || ( || ( a? ( b? ( c? ( || ( || ( || ( d? ( e? ( f? ( A B ) ) ) ) ) ) ) ) ) ) ) )",
				uselist=["a", "b", "c", "d", "e", "f"],
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( || ( ( || ( a? ( ( b? ( c? ( || ( || ( || ( ( d? ( e? ( f? ( A B ) ) ) ) ) ) ) ) ) ) ) ) ) ) )",
				uselist=["a", "b", "c", "d", "e", "f"],
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( ( A ( || ( B ) ) ) )",
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( ( A B ) || ( foo? ( bar? ( ( C D || ( baz? ( E ) ( F G ) || ( H ) ) ) ) ) ) )",
				uselist=["foo", "bar", "baz"],
				expected_result=['||', [['A', 'B'], ['C', 'D', '||', ['E', ['F', 'G'], 'H']]]]),

			UseReduceTestCase(
				"|| ( ( A B ) || ( foo? ( bar? ( ( C D || ( baz? ( E ) ( F G ) || ( H ) ) ) ) ) ) )",
				uselist=["foo", "bar", "baz"],
				opconvert=True,
				expected_result=[['||', ['A', 'B'], ['C', 'D', ['||', 'E', ['F', 'G'], 'H']]]]),

			UseReduceTestCase(
				"|| ( foo? ( A B ) )",
				uselist=["foo"],
				opconvert=True,
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( || ( foo? ( A B ) ) )",
				uselist=["foo"],
				opconvert=True,
				expected_result=['A', 'B']),

			UseReduceTestCase(
				"|| ( || ( || ( a? ( b? ( c? ( || ( || ( || ( d? ( e? ( f? ( A B ) ) ) ) ) ) ) ) ) ) ) )",
				uselist=["a", "b", "c", "d", "e", "f"],
				opconvert=True,
				expected_result=['A', 'B']),

			# flat test
			UseReduceTestCase(
				"A",
				flat=True,
				expected_result=["A"]),
			UseReduceTestCase(
				"( A )",
				flat=True,
				expected_result=["A"]),
			UseReduceTestCase(
				"|| ( A B )",
				flat=True,
				expected_result=["||", "A", "B"]),
			UseReduceTestCase(
				"|| ( A || ( B C ) )",
				flat=True,
				expected_result=["||", "A", "||", "B", "C"]),
			UseReduceTestCase(
				"|| ( A || ( B C D ) )",
				flat=True,
				expected_result=["||", "A", "||", "B", "C", "D"]),
			UseReduceTestCase(
				"|| ( A || ( B || ( C D ) E ) )",
				flat=True,
				expected_result=["||", "A", "||", "B", "||", "C", "D", "E"]),
			UseReduceTestCase(
				"( || ( ( ( A ) B ) ) )",
				flat=True,
				expected_result=["||", "A", "B"]),
			UseReduceTestCase(
				"( || ( || ( ( A ) B ) ) )",
				flat=True,
				expected_result=["||", "||", "A", "B"]),
			UseReduceTestCase(
				"( || ( || ( ( A ) B ) ) )",
				flat=True,
				expected_result=["||", "||", "A", "B"]),
			UseReduceTestCase(
				"|| ( A )",
				flat=True,
				expected_result=["||", "A"]),
			UseReduceTestCase(
				"( || ( || ( || ( A ) foo? ( B ) ) ) )",
				expected_result=["A"]),
			UseReduceTestCase(
				"( || ( || ( || ( A ) foo? ( B ) ) ) )",
				uselist=["foo"],
				flat=True,
				expected_result=["||", "||", "||", "A", "B"]),
			UseReduceTestCase(
				"( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )",
				flat=True,
				expected_result=["||", "||", "||"]),
			UseReduceTestCase(
				"( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )",
				uselist=["foo", "bar"],
				flat=True,
				expected_result=["||", "||", "A", "||", "B"]),
			UseReduceTestCase(
				"A || ( bar? ( C ) ) foo? ( bar? ( C ) ) B",
				flat=True,
				expected_result=["A", "||", "B"]),
			UseReduceTestCase(
				"|| ( A ) || ( B )",
				flat=True,
				expected_result=["||", "A", "||", "B"]),
			UseReduceTestCase(
				"foo? ( A ) foo? ( B )",
				flat=True,
				expected_result=[]),
			UseReduceTestCase(
				"foo? ( A ) foo? ( B )",
				uselist=["foo"],
				flat=True,
				expected_result=["A", "B"]),

			# use flag validation
			UseReduceTestCase(
				"foo? ( A )",
				uselist=["foo"],
				is_valid_flag=self.always_true,
				expected_result=["A"]),
			UseReduceTestCase(
				"foo? ( A )",
				is_valid_flag=self.always_true,
				expected_result=[]),

			# token_class
			UseReduceTestCase(
				"foo? ( dev-libs/A )",
				uselist=["foo"],
				token_class=Atom,
				expected_result=["dev-libs/A"]),
			UseReduceTestCase(
				"foo? ( dev-libs/A )",
				token_class=Atom,
				expected_result=[]),
		)

		test_cases_xfail = (
			UseReduceTestCase("? ( A )"),
			UseReduceTestCase("!? ( A )"),
			UseReduceTestCase("( A"),
			UseReduceTestCase("A )"),
			UseReduceTestCase("||( A B )"),
			UseReduceTestCase("|| (A B )"),
			UseReduceTestCase("|| ( A B)"),
			UseReduceTestCase("|| ( A B"),
			UseReduceTestCase("|| A B )"),
			UseReduceTestCase("|| A B"),
			UseReduceTestCase("|| ( A B ) )"),
			UseReduceTestCase("|| || B C"),
			UseReduceTestCase("|| ( A B || )"),
			UseReduceTestCase("a? A"),
			UseReduceTestCase("( || ( || || ( A ) foo? ( B ) ) )"),
			UseReduceTestCase("( || ( || bar? ( A ) foo? ( B ) ) )"),
			UseReduceTestCase("foo?"),
			UseReduceTestCase("foo? || ( A )"),
			UseReduceTestCase("|| ( )"),
			UseReduceTestCase("foo? ( )"),

			# SRC_URI stuff
			UseReduceTestCase("http://foo/bar -> blah.tbz2", is_src_uri=True, eapi=EAPI_WITHOUT_SRC_URI_ARROWS),
			UseReduceTestCase("|| ( http://foo/bar -> blah.tbz2 )", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("http://foo/bar -> foo? ( ftp://foo/a )", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("http://foo/bar blah.tbz2 ->", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("-> http://foo/bar blah.tbz2 )", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("http://foo/bar ->", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("http://foo/bar -> foo? ( http://foo.com/foo )", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("foo? ( http://foo/bar -> ) blah.tbz2", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("http://foo/bar -> foo/blah.tbz2", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),
			UseReduceTestCase("http://foo/bar -> -> bar.tbz2 foo? ( ftp://foo/a )", is_src_uri=True, eapi=EAPI_WITH_SRC_URI_ARROWS),

			UseReduceTestCase("http://foo/bar -> bar.tbz2 foo? ( ftp://foo/a )", is_src_uri=False, eapi=EAPI_WITH_SRC_URI_ARROWS),

			UseReduceTestCase(
				"A",
				opconvert=True,
				flat=True),

			# use flag validation
			UseReduceTestCase("1.0? ( A )"),
			UseReduceTestCase("!1.0? ( A )"),
			UseReduceTestCase("!? ( A )"),
			UseReduceTestCase("!?? ( A )"),
			UseReduceTestCase(
				"foo? ( A )",
				is_valid_flag=self.always_false,
				),
			UseReduceTestCase(
				"foo? ( A )",
				uselist=["foo"],
				is_valid_flag=self.always_false,
				),

			# token_class
			UseReduceTestCase(
				"foo? ( A )",
				uselist=["foo"],
				token_class=Atom),
			UseReduceTestCase(
				"A(B",
				token_class=Atom),
		)

		for test_case in test_cases:
			# If it fails then show the input, since lots of our
			# test cases have the same output but different input,
			# making it difficult deduce which test has failed.
			self.assertEqual(test_case.run(), test_case.expected_result,
				"input: '%s' result: %s != %s" % (test_case.deparray,
				test_case.run(), test_case.expected_result))

		for test_case in test_cases_xfail:
			self.assertRaisesMsg(test_case.deparray, (InvalidDependString, ValueError), test_case.run)
