def test_keep_filtered_read_input():
    import sys
    sys.argv = ['--keep_filtered', 'test.fastq']
    (min_len, keep_filtered, min_GC, max_GC, output_base_name,
     file_name) = read_input()
    assert keep_filtered

    sys.argv = ['test.fastq']
    (min_len, keep_filtered, min_GC, max_GC, output_base_name,
     file_name) = read_input()
    assert not keep_filtered
def test_GC_bounds_read_input():
    import sys
    sys.argv = ['--gc_bounds', '10', '75', 'test.fastq']
    (min_len, keep_filtered, min_GC, max_GC, output_base_name,
     file_name) = read_input()
    assert max_GC == 75
    assert min_GC == 10
    print(OVERWRITE_WARNING)

    if min_len == 0 and min_GC == 0 and max_GC == 0:
        copy_fastq(output_base_name, file_name)
    elif min_len == 0:
        sort_only_GC_trash_filtered(min_GC, max_GC,
                                    output_base_name, file_name)
    elif min_len > 0:
        if min_GC == 0 and max_GC == 100:
            sort_only_len_trash_filtered(min_len,
                                         output_base_name, file_name)
        else:
            sort_by_len_GC_trash_filtered(min_len, min_GC, max_GC,
                                          output_base_name, file_name)


def copy_fastq(output_base_name: str, file_name: str):
    print('Filtration arguments not found. Output file is equal to\
 non filtrated file')
    original = file_name
    target = '{}_output.fastq'.format(output_base_name)
    copyfile(original, target)


if __name__ == '__main__':
    (min_len, keep_filtered, min_GC,
     max_GC, output_base_name, file_name) = read_input()

    main_sorter(min_len, keep_filtered, min_GC,
                max_GC, output_base_name, file_name)
def test_file_name_read_input():
    import sys
    sys.argv = ['--min_length', '50', 'test.fastq']
    (min_len, keep_filtered, min_GC, max_GC, output_base_name,
     file_name) = read_input()
    assert file_name == 'test.fastq'