# Path: cutadapt-1.12/tests/utils.py
# def run(params, expected, inpath, inpath2=None):
# 	if type(params) is str:
# 		params = params.split()
# 	with temporary_path(expected) as tmp_fastaq:
# 		params += ['-o', tmp_fastaq ] # TODO not parallelizable
# 		params += [ datapath(inpath) ]
# 		if inpath2:
# 			params += [ datapath(inpath2) ]
# 		assert cutadapt.main(params) is None
# 		# TODO redirect standard output
# 		assert files_equal(cutpath(expected), tmp_fastaq)
# 	# TODO diff log files
# 
# def files_equal(path1, path2):
# 	return os.system("diff -u {0} {1}".format(path1, path2)) == 0
# 
# def datapath(path):
# 	return os.path.join(os.path.dirname(__file__), 'data', path)
# 
# def cutpath(path):
# 	return os.path.join(os.path.dirname(__file__), 'cut', path)
# 
# @contextmanager
# def redirect_stderr():
# 	"Send stderr to stdout. Nose doesn't capture stderr, yet."
# 	old_stderr = sys.stderr
# 	sys.stderr = sys.stdout
# 	yield
# 	sys.stderr = old_stderr
# 
# @contextmanager
# def temporary_path(name):
# 	directory = os.path.join(os.path.dirname(__file__), 'testtmp')
# 	if not os.path.isdir(directory):
# 		os.mkdir(directory)
# 	path = os.path.join(directory, name)
# 	yield path
# 	os.remove(path)


import shutil
from nose.tools import raises
from cutadapt.scripts import cutadapt
from .utils import run, files_equal, datapath, cutpath, redirect_stderr, temporary_path
	)


@raises(SystemExit)
def test_interleaved_neither_nor():
	"""Option --interleaved used, but pairs of files given for input and output"""
	with temporary_path("temp-paired.1.fastq") as p1:
		with temporary_path("temp-paired.2.fastq") as p2:
			params = '-a XX --interleaved'.split()
			with redirect_stderr():
				params += [ '-o', p1, '-p1', p2, 'paired.1.fastq', 'paired.2.fastq']
				cutadapt.main(params)


def test_pair_filter():
	run_paired('--pair-filter=both -a TTAGACATAT -A GGAGTA -m 14',
		in1='paired.1.fastq', in2='paired.2.fastq',
		expected1='paired-filterboth.1.fastq', expected2='paired-filterboth.2.fastq'
	)


def test_too_short_paired_output():
	with temporary_path("temp-too-short.1.fastq") as p1:
		with temporary_path("temp-too-short.2.fastq") as p2:
			run_paired('-a TTAGACATAT -A CAGTGGAGTA -m 14 --too-short-output '
				'{0} --too-short-paired-output {1}'.format(p1, p2),
				in1='paired.1.fastq', in2='paired.2.fastq',
				expected1='paired.1.fastq', expected2='paired.2.fastq'
			)
			assert files_equal(cutpath('paired-too-short.1.fastq'), p1)

# Path: cutadapt-1.12/tests/utils.py
# def run(params, expected, inpath, inpath2=None):
# 	if type(params) is str:
# 		params = params.split()
# 	with temporary_path(expected) as tmp_fastaq:
# 		params += ['-o', tmp_fastaq ] # TODO not parallelizable
# 		params += [ datapath(inpath) ]
# 		if inpath2:
# 			params += [ datapath(inpath2) ]
# 		assert cutadapt.main(params) is None
# 		# TODO redirect standard output
# 		assert files_equal(cutpath(expected), tmp_fastaq)
# 	# TODO diff log files
# 
# def files_equal(path1, path2):
# 	return os.system("diff -u {0} {1}".format(path1, path2)) == 0
# 
# def datapath(path):
# 	return os.path.join(os.path.dirname(__file__), 'data', path)
# 
# def cutpath(path):
# 	return os.path.join(os.path.dirname(__file__), 'cut', path)
# 
# @contextmanager
# def redirect_stderr():
# 	"Send stderr to stdout. Nose doesn't capture stderr, yet."
# 	old_stderr = sys.stderr
# 	sys.stderr = sys.stdout
# 	yield
# 	sys.stderr = old_stderr
# 
# @contextmanager
# def temporary_path(name):
# 	directory = os.path.join(os.path.dirname(__file__), 'testtmp')
# 	if not os.path.isdir(directory):
# 		os.mkdir(directory)
# 	path = os.path.join(directory, name)
# 	yield path
# 	os.remove(path)


# Path: cutadapt-1.12/tests/testpaired.py
import shutil
from nose.tools import raises
from cutadapt.scripts import cutadapt
from .utils import run, files_equal, datapath, cutpath, redirect_stderr, temporary_path

	)


@raises(SystemExit)
def test_interleaved_neither_nor():
	"""Option --interleaved used, but pairs of files given for input and output"""
	with temporary_path("temp-paired.1.fastq") as p1:
		with temporary_path("temp-paired.2.fastq") as p2:
			params = '-a XX --interleaved'.split()
			with redirect_stderr():
				params += [ '-o', p1, '-p1', p2, 'paired.1.fastq', 'paired.2.fastq']
				cutadapt.main(params)


def test_pair_filter():
	run_paired('--pair-filter=both -a TTAGACATAT -A GGAGTA -m 14',
		in1='paired.1.fastq', in2='paired.2.fastq',
		expected1='paired-filterboth.1.fastq', expected2='paired-filterboth.2.fastq'
	)


def test_too_short_paired_output():
	with temporary_path("temp-too-short.1.fastq") as p1:
		with temporary_path("temp-too-short.2.fastq") as p2:
			run_paired('-a TTAGACATAT -A CAGTGGAGTA -m 14 --too-short-output '
				'{0} --too-short-paired-output {1}'.format(p1, p2),
				in1='paired.1.fastq', in2='paired.2.fastq',
				expected1='paired.1.fastq', expected2='paired.2.fastq'
			)
			assert files_equal(cutpath('paired-too-short.1.fastq'), p1)

			assert files_equal(cutpath('paired-too-short.2.fastq'), p2)