#!/bin/bash
set -e

pkg=abpoa

export LC_ALL=C.UTF-8
if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
  # Double quote below to expand the temporary directory variable now versus
  # later is on purpose.
  # shellcheck disable=SC2064
  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
fi

cp -a "/usr/share/doc/${pkg}/examples"/* "${AUTOPKGTEST_TMP}"
cd "${AUTOPKGTEST_TMP}"

set -x

# Test as many variants of the program as the test node permits.
for SIMDE in avx2 avx sse4.1 ssse3 sse3 generic dispatch
do
	if [ "$SIMDE" = "dispatch" ]
	then BINARY="abpoa"
	elif [ "$SIMDE" = "generic" ] \
	     || grep -q "$SIMDE" /proc/cpuinfo \
	     && command -v "abpoa.$SIMDE" > /dev/null 2>&1
	then BINARY="abpoa.$SIMDE"
	else continue
	fi

	# NOTES FOR TESTERS: tests are inspired by the README.md document.
	# Reference data are tested with diff commands on the basis of the
	# output of an initial version of the program.  If newer versions are
	# outputing different values consistently, then it is well possible
	# that the reference data in the autopkgtest needs being updated.

	# But first, a couple of superficial checks.
	"$BINARY" --version
	"$BINARY" --help || test "$?" = 1

	"$BINARY" ./test_data/seq.fa > cons.fa
	diff - cons.fa << END
>Consensus_sequence
CGTCAATCTATCGAAGCATACGCGGCAGAGCCGAAGACCTCGGCAATCAC
END

	# Consensus data do not seem deterministic, so no reference data are
	# provided for this test.
	"$BINARY" ./test_data/heter.fa > 2cons.fa

	"$BINARY" -r1 ./test_data/seq.fa > out.msa
	diff - out.msa << END
>1
---CGTCAAT-CTA-TC--G---AAGCA---TACG--CGGGC-AGAGCC--GAA---GACCTCGG-CAATCCA--
>2
CCACGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC---AGCC--GAACTCGACCTCGG-CAATCAC--
>3
---CGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC-AGAGCCCGGAA---GACCTCGG-CAATCAC--
>4
---CGTCAATGCTAGTC--G---AAGCA---GCTG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>5
---CGTCAAT-CTA-TC--G---AAGCATTCTACG--C-GGC-AGAGCC--------GACCTCGG-CAATCAC--
>6
---CGTCAAT-CTA-----G---AAGCA---TACG--C-GGCAAGAGCC--GAA---GACCTCGGCCAATCAC--
>7
---CGTCAAT-CTA-TC--GGTAAAGCA---TACGCTC-TGT---AGCC--GAA---GACCTCGG-CAATCAC--
>8
---CGTCAAT-CTA-TCTTC---AAGCA---TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATC----
>9
---CGTCAAT-GGA-TC--G----AG-----TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>10
---CGTCAAT-CTAATC--G---AAGCA---TACG--C-GGC-AGAGCC--G---TCTACCTCGG-CAATCACGT
END

	"$BINARY" -r2 ./test_data/seq.fa > out_cons.msa
	diff - out_cons.msa << END
>1
---CGTCAAT-CTA-TC--G---AAGCA---TACG--CGGGC-AGAGCC--GAA---GACCTCGG-CAATCCA--
>2
CCACGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC---AGCC--GAACTCGACCTCGG-CAATCAC--
>3
---CGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC-AGAGCCCGGAA---GACCTCGG-CAATCAC--
>4
---CGTCAATGCTAGTC--G---AAGCA---GCTG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>5
---CGTCAAT-CTA-TC--G---AAGCATTCTACG--C-GGC-AGAGCC--------GACCTCGG-CAATCAC--
>6
---CGTCAAT-CTA-----G---AAGCA---TACG--C-GGCAAGAGCC--GAA---GACCTCGGCCAATCAC--
>7
---CGTCAAT-CTA-TC--GGTAAAGCA---TACGCTC-TGT---AGCC--GAA---GACCTCGG-CAATCAC--
>8
---CGTCAAT-CTA-TCTTC---AAGCA---TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATC----
>9
---CGTCAAT-GGA-TC--G----AG-----TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>10
---CGTCAAT-CTAATC--G---AAGCA---TACG--C-GGC-AGAGCC--G---TCTACCTCGG-CAATCACGT
>Consensus_sequence
---CGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
END

	"$BINARY" -r3 ./test_data/seq.fa > out.gfa
	diff - out.gfa << END
H	VN:Z:1.0	NS:i:87	NL:i:109	NP:i:10
S	52	C
S	53	C
L	52	+	53	+	0M
S	54	A
L	53	+	54	+	0M
S	1	C
L	54	+	1	+	0M
S	2	G
L	1	+	2	+	0M
S	3	T
L	2	+	3	+	0M
S	4	C
L	3	+	4	+	0M
S	5	A
L	4	+	5	+	0M
S	6	A
L	5	+	6	+	0M
S	7	T
L	6	+	7	+	0M
S	62	G
L	7	+	62	+	0M
S	82	G
L	7	+	82	+	0M
S	8	C
L	7	+	8	+	0M
L	62	+	8	+	0M
S	83	G
L	82	+	83	+	0M
S	9	T
L	8	+	9	+	0M
S	10	A
L	9	+	10	+	0M
L	83	+	10	+	0M
S	63	G
L	10	+	63	+	0M
S	84	A
L	10	+	84	+	0M
S	11	T
L	10	+	11	+	0M
L	63	+	11	+	0M
L	84	+	11	+	0M
S	12	C
L	11	+	12	+	0M
S	13	G
L	12	+	13	+	0M
L	10	+	13	+	0M
S	79	T
L	12	+	79	+	0M
S	72	G
L	13	+	72	+	0M
S	80	T
L	79	+	80	+	0M
S	73	T
L	72	+	73	+	0M
S	81	C
L	80	+	81	+	0M
S	74	A
L	73	+	74	+	0M
S	14	A
L	13	+	14	+	0M
L	74	+	14	+	0M
L	81	+	14	+	0M
S	15	A
L	14	+	15	+	0M
L	13	+	15	+	0M
S	16	G
L	15	+	16	+	0M
S	17	C
L	16	+	17	+	0M
S	18	A
L	17	+	18	+	0M
S	64	G
L	18	+	64	+	0M
S	67	T
L	18	+	67	+	0M
S	65	C
L	64	+	65	+	0M
S	68	T
L	67	+	68	+	0M
S	66	T
L	65	+	66	+	0M
S	69	C
L	68	+	69	+	0M
S	19	T
L	18	+	19	+	0M
L	69	+	19	+	0M
L	16	+	19	+	0M
S	20	A
L	19	+	20	+	0M
S	21	C
L	20	+	21	+	0M
S	22	G
L	21	+	22	+	0M
L	66	+	22	+	0M
S	75	C
L	22	+	75	+	0M
S	76	T
L	75	+	76	+	0M
S	23	C
L	22	+	23	+	0M
L	76	+	23	+	0M
S	24	G
L	23	+	24	+	0M
S	77	T
L	23	+	77	+	0M
S	25	G
L	24	+	25	+	0M
L	23	+	25	+	0M
S	26	G
L	25	+	26	+	0M
L	77	+	26	+	0M
S	27	C
L	26	+	27	+	0M
S	78	T
L	26	+	78	+	0M
S	70	A
L	27	+	70	+	0M
S	28	A
L	27	+	28	+	0M
L	70	+	28	+	0M
S	29	G
L	28	+	29	+	0M
S	30	A
L	29	+	30	+	0M
L	27	+	30	+	0M
L	78	+	30	+	0M
S	31	G
L	30	+	31	+	0M
S	32	C
L	31	+	32	+	0M
S	33	C
L	32	+	33	+	0M
S	60	C
L	33	+	60	+	0M
S	61	G
L	60	+	61	+	0M
S	34	G
L	33	+	34	+	0M
L	61	+	34	+	0M
S	35	A
L	34	+	35	+	0M
S	36	A
L	35	+	36	+	0M
S	55	C
L	36	+	55	+	0M
S	56	T
L	55	+	56	+	0M
L	34	+	56	+	0M
S	57	C
L	56	+	57	+	0M
S	37	G
L	36	+	37	+	0M
L	57	+	37	+	0M
L	33	+	37	+	0M
S	85	T
L	57	+	85	+	0M
S	38	A
L	37	+	38	+	0M
L	85	+	38	+	0M
S	39	C
L	38	+	39	+	0M
S	40	C
L	39	+	40	+	0M
S	41	T
L	40	+	41	+	0M
S	42	C
L	41	+	42	+	0M
S	43	G
L	42	+	43	+	0M
S	44	G
L	43	+	44	+	0M
S	71	C
L	44	+	71	+	0M
S	45	C
L	44	+	45	+	0M
L	71	+	45	+	0M
S	46	A
L	45	+	46	+	0M
S	47	A
L	46	+	47	+	0M
S	48	T
L	47	+	48	+	0M
S	49	C
L	48	+	49	+	0M
S	50	C
L	49	+	50	+	0M
S	58	A
L	49	+	58	+	0M
S	51	A
L	50	+	51	+	0M
S	59	C
L	58	+	59	+	0M
S	86	G
L	59	+	86	+	0M
S	87	T
L	86	+	87	+	0M
P	1	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,24+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,50+,51+	*
P	2	52+,53+,54+,1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,30+,31+,32+,33+,34+,35+,36+,55+,56+,57+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	3	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,60+,61+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	4	1+,2+,3+,4+,5+,6+,7+,62+,8+,9+,10+,63+,11+,12+,13+,14+,15+,16+,17+,18+,64+,65+,66+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	5	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,67+,68+,69+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	6	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,70+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,71+,45+,46+,47+,48+,49+,58+,59+	*
P	7	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,72+,73+,74+,14+,15+,16+,17+,18+,19+,20+,21+,22+,75+,76+,23+,77+,26+,78+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	8	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,79+,80+,81+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+	*
P	9	1+,2+,3+,4+,5+,6+,7+,82+,83+,10+,11+,12+,13+,15+,16+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	10	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,84+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,56+,57+,85+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+,86+,87+	*
END

	"$BINARY" -r4 ./test_data/seq.fa > out4.gfa
	diff - out4.gfa << END
H	VN:Z:1.0	NS:i:87	NL:i:109	NP:i:11
S	52	C
S	53	C
L	52	+	53	+	0M
S	54	A
L	53	+	54	+	0M
S	1	C
L	54	+	1	+	0M
S	2	G
L	1	+	2	+	0M
S	3	T
L	2	+	3	+	0M
S	4	C
L	3	+	4	+	0M
S	5	A
L	4	+	5	+	0M
S	6	A
L	5	+	6	+	0M
S	7	T
L	6	+	7	+	0M
S	62	G
L	7	+	62	+	0M
S	82	G
L	7	+	82	+	0M
S	8	C
L	7	+	8	+	0M
L	62	+	8	+	0M
S	83	G
L	82	+	83	+	0M
S	9	T
L	8	+	9	+	0M
S	10	A
L	9	+	10	+	0M
L	83	+	10	+	0M
S	63	G
L	10	+	63	+	0M
S	84	A
L	10	+	84	+	0M
S	11	T
L	10	+	11	+	0M
L	63	+	11	+	0M
L	84	+	11	+	0M
S	12	C
L	11	+	12	+	0M
S	13	G
L	12	+	13	+	0M
L	10	+	13	+	0M
S	79	T
L	12	+	79	+	0M
S	72	G
L	13	+	72	+	0M
S	80	T
L	79	+	80	+	0M
S	73	T
L	72	+	73	+	0M
S	81	C
L	80	+	81	+	0M
S	74	A
L	73	+	74	+	0M
S	14	A
L	13	+	14	+	0M
L	74	+	14	+	0M
L	81	+	14	+	0M
S	15	A
L	14	+	15	+	0M
L	13	+	15	+	0M
S	16	G
L	15	+	16	+	0M
S	17	C
L	16	+	17	+	0M
S	18	A
L	17	+	18	+	0M
S	64	G
L	18	+	64	+	0M
S	67	T
L	18	+	67	+	0M
S	65	C
L	64	+	65	+	0M
S	68	T
L	67	+	68	+	0M
S	66	T
L	65	+	66	+	0M
S	69	C
L	68	+	69	+	0M
S	19	T
L	18	+	19	+	0M
L	69	+	19	+	0M
L	16	+	19	+	0M
S	20	A
L	19	+	20	+	0M
S	21	C
L	20	+	21	+	0M
S	22	G
L	21	+	22	+	0M
L	66	+	22	+	0M
S	75	C
L	22	+	75	+	0M
S	76	T
L	75	+	76	+	0M
S	23	C
L	22	+	23	+	0M
L	76	+	23	+	0M
S	24	G
L	23	+	24	+	0M
S	77	T
L	23	+	77	+	0M
S	25	G
L	24	+	25	+	0M
L	23	+	25	+	0M
S	26	G
L	25	+	26	+	0M
L	77	+	26	+	0M
S	27	C
L	26	+	27	+	0M
S	78	T
L	26	+	78	+	0M
S	70	A
L	27	+	70	+	0M
S	28	A
L	27	+	28	+	0M
L	70	+	28	+	0M
S	29	G
L	28	+	29	+	0M
S	30	A
L	29	+	30	+	0M
L	27	+	30	+	0M
L	78	+	30	+	0M
S	31	G
L	30	+	31	+	0M
S	32	C
L	31	+	32	+	0M
S	33	C
L	32	+	33	+	0M
S	60	C
L	33	+	60	+	0M
S	61	G
L	60	+	61	+	0M
S	34	G
L	33	+	34	+	0M
L	61	+	34	+	0M
S	35	A
L	34	+	35	+	0M
S	36	A
L	35	+	36	+	0M
S	55	C
L	36	+	55	+	0M
S	56	T
L	55	+	56	+	0M
L	34	+	56	+	0M
S	57	C
L	56	+	57	+	0M
S	37	G
L	36	+	37	+	0M
L	57	+	37	+	0M
L	33	+	37	+	0M
S	85	T
L	57	+	85	+	0M
S	38	A
L	37	+	38	+	0M
L	85	+	38	+	0M
S	39	C
L	38	+	39	+	0M
S	40	C
L	39	+	40	+	0M
S	41	T
L	40	+	41	+	0M
S	42	C
L	41	+	42	+	0M
S	43	G
L	42	+	43	+	0M
S	44	G
L	43	+	44	+	0M
S	71	C
L	44	+	71	+	0M
S	45	C
L	44	+	45	+	0M
L	71	+	45	+	0M
S	46	A
L	45	+	46	+	0M
S	47	A
L	46	+	47	+	0M
S	48	T
L	47	+	48	+	0M
S	49	C
L	48	+	49	+	0M
S	50	C
L	49	+	50	+	0M
S	58	A
L	49	+	58	+	0M
S	51	A
L	50	+	51	+	0M
S	59	C
L	58	+	59	+	0M
S	86	G
L	59	+	86	+	0M
S	87	T
L	86	+	87	+	0M
P	1	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,24+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,50+,51+	*
P	2	52+,53+,54+,1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,30+,31+,32+,33+,34+,35+,36+,55+,56+,57+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	3	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,60+,61+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	4	1+,2+,3+,4+,5+,6+,7+,62+,8+,9+,10+,63+,11+,12+,13+,14+,15+,16+,17+,18+,64+,65+,66+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	5	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,67+,68+,69+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	6	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,70+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,71+,45+,46+,47+,48+,49+,58+,59+	*
P	7	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,72+,73+,74+,14+,15+,16+,17+,18+,19+,20+,21+,22+,75+,76+,23+,77+,26+,78+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	8	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,79+,80+,81+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+	*
P	9	1+,2+,3+,4+,5+,6+,7+,82+,83+,10+,11+,12+,13+,15+,16+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	10	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,84+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,56+,57+,85+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+,86+,87+	*
P	Consensus_sequence	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
END

	cp out.gfa in.gfa
	cp out.msa in.msa

	"$BINARY" -i in.gfa ./test_data/seq.fa -r3 > out.gfa
	diff - out.gfa << END
H	VN:Z:1.0	NS:i:87	NL:i:109	NP:i:20
S	52	C
S	53	C
L	52	+	53	+	0M
S	54	A
L	53	+	54	+	0M
S	1	C
L	54	+	1	+	0M
S	2	G
L	1	+	2	+	0M
S	3	T
L	2	+	3	+	0M
S	4	C
L	3	+	4	+	0M
S	5	A
L	4	+	5	+	0M
S	6	A
L	5	+	6	+	0M
S	7	T
L	6	+	7	+	0M
S	62	G
L	7	+	62	+	0M
S	82	G
L	7	+	82	+	0M
S	8	C
L	7	+	8	+	0M
L	62	+	8	+	0M
S	83	G
L	82	+	83	+	0M
S	9	T
L	8	+	9	+	0M
S	10	A
L	9	+	10	+	0M
L	83	+	10	+	0M
S	63	G
L	10	+	63	+	0M
S	84	A
L	10	+	84	+	0M
S	11	T
L	10	+	11	+	0M
L	63	+	11	+	0M
L	84	+	11	+	0M
S	12	C
L	11	+	12	+	0M
S	13	G
L	12	+	13	+	0M
L	10	+	13	+	0M
S	79	T
L	12	+	79	+	0M
S	72	G
L	13	+	72	+	0M
S	80	T
L	79	+	80	+	0M
S	73	T
L	72	+	73	+	0M
S	81	C
L	80	+	81	+	0M
S	74	A
L	73	+	74	+	0M
S	14	A
L	13	+	14	+	0M
L	74	+	14	+	0M
L	81	+	14	+	0M
S	15	A
L	14	+	15	+	0M
L	13	+	15	+	0M
S	16	G
L	15	+	16	+	0M
S	17	C
L	16	+	17	+	0M
S	18	A
L	17	+	18	+	0M
S	64	G
L	18	+	64	+	0M
S	67	T
L	18	+	67	+	0M
S	65	C
L	64	+	65	+	0M
S	68	T
L	67	+	68	+	0M
S	66	T
L	65	+	66	+	0M
S	69	C
L	68	+	69	+	0M
S	19	T
L	18	+	19	+	0M
L	69	+	19	+	0M
L	16	+	19	+	0M
S	20	A
L	19	+	20	+	0M
S	21	C
L	20	+	21	+	0M
S	22	G
L	21	+	22	+	0M
L	66	+	22	+	0M
S	75	C
L	22	+	75	+	0M
S	76	T
L	75	+	76	+	0M
S	23	C
L	22	+	23	+	0M
L	76	+	23	+	0M
S	24	G
L	23	+	24	+	0M
S	77	T
L	23	+	77	+	0M
S	25	G
L	24	+	25	+	0M
L	23	+	25	+	0M
S	26	G
L	25	+	26	+	0M
L	77	+	26	+	0M
S	27	C
L	26	+	27	+	0M
S	78	T
L	26	+	78	+	0M
S	70	A
L	27	+	70	+	0M
S	28	A
L	27	+	28	+	0M
L	70	+	28	+	0M
S	29	G
L	28	+	29	+	0M
S	30	A
L	29	+	30	+	0M
L	27	+	30	+	0M
L	78	+	30	+	0M
S	31	G
L	30	+	31	+	0M
S	32	C
L	31	+	32	+	0M
S	33	C
L	32	+	33	+	0M
S	60	C
L	33	+	60	+	0M
S	61	G
L	60	+	61	+	0M
S	34	G
L	33	+	34	+	0M
L	61	+	34	+	0M
S	35	A
L	34	+	35	+	0M
S	36	A
L	35	+	36	+	0M
S	55	C
L	36	+	55	+	0M
S	56	T
L	55	+	56	+	0M
L	34	+	56	+	0M
S	57	C
L	56	+	57	+	0M
S	37	G
L	36	+	37	+	0M
L	57	+	37	+	0M
L	33	+	37	+	0M
S	85	T
L	57	+	85	+	0M
S	38	A
L	37	+	38	+	0M
L	85	+	38	+	0M
S	39	C
L	38	+	39	+	0M
S	40	C
L	39	+	40	+	0M
S	41	T
L	40	+	41	+	0M
S	42	C
L	41	+	42	+	0M
S	43	G
L	42	+	43	+	0M
S	44	G
L	43	+	44	+	0M
S	71	C
L	44	+	71	+	0M
S	45	C
L	44	+	45	+	0M
L	71	+	45	+	0M
S	46	A
L	45	+	46	+	0M
S	47	A
L	46	+	47	+	0M
S	48	T
L	47	+	48	+	0M
S	49	C
L	48	+	49	+	0M
S	50	C
L	49	+	50	+	0M
S	58	A
L	49	+	58	+	0M
S	51	A
L	50	+	51	+	0M
S	59	C
L	58	+	59	+	0M
S	86	G
L	59	+	86	+	0M
S	87	T
L	86	+	87	+	0M
P	1	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,24+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,50+,51+	*
P	2	52+,53+,54+,1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,30+,31+,32+,33+,34+,35+,36+,55+,56+,57+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	3	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,60+,61+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	4	1+,2+,3+,4+,5+,6+,7+,62+,8+,9+,10+,63+,11+,12+,13+,14+,15+,16+,17+,18+,64+,65+,66+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	5	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,67+,68+,69+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	6	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,70+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,71+,45+,46+,47+,48+,49+,58+,59+	*
P	7	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,72+,73+,74+,14+,15+,16+,17+,18+,19+,20+,21+,22+,75+,76+,23+,77+,26+,78+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	8	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,79+,80+,81+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+	*
P	9	1+,2+,3+,4+,5+,6+,7+,82+,83+,10+,11+,12+,13+,15+,16+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	10	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,84+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,56+,57+,85+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+,86+,87+	*
P	1	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,24+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,50+,51+	*
P	2	52+,53+,54+,1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,30+,31+,32+,33+,34+,35+,36+,55+,56+,57+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	3	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,60+,61+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	4	1+,2+,3+,4+,5+,6+,7+,62+,8+,9+,10+,63+,11+,12+,13+,14+,15+,16+,17+,18+,64+,65+,66+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	5	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,14+,15+,16+,17+,18+,67+,68+,69+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	6	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,70+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,71+,45+,46+,47+,48+,49+,58+,59+	*
P	7	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,13+,72+,73+,74+,14+,15+,16+,17+,18+,19+,20+,21+,22+,75+,76+,23+,77+,26+,78+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	8	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,11+,12+,79+,80+,81+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+	*
P	9	1+,2+,3+,4+,5+,6+,7+,82+,83+,10+,11+,12+,13+,15+,16+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,35+,36+,37+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+	*
P	10	1+,2+,3+,4+,5+,6+,7+,8+,9+,10+,84+,11+,12+,13+,14+,15+,16+,17+,18+,19+,20+,21+,22+,23+,25+,26+,27+,28+,29+,30+,31+,32+,33+,34+,56+,57+,85+,38+,39+,40+,41+,42+,43+,44+,45+,46+,47+,48+,49+,58+,59+,86+,87+	*
END

	"$BINARY" -i in.msa ./test_data/seq.fa -r1 > out.msa
	diff - out.msa << END
>1
---CGTCAAT-CTA-TC--G---AAGCA---TACG--CGGGC-AGAGCC--GAA---GACCTCGG-CAATCCA--
>2
CCACGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC---AGCC--GAACTCGACCTCGG-CAATCAC--
>3
---CGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC-AGAGCCCGGAA---GACCTCGG-CAATCAC--
>4
---CGTCAATGCTAGTC--G---AAGCA---GCTG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>5
---CGTCAAT-CTA-TC--G---AAGCATTCTACG--C-GGC-AGAGCC--------GACCTCGG-CAATCAC--
>6
---CGTCAAT-CTA-----G---AAGCA---TACG--C-GGCAAGAGCC--GAA---GACCTCGGCCAATCAC--
>7
---CGTCAAT-CTA-TC--GGTAAAGCA---TACGCTC-TGT---AGCC--GAA---GACCTCGG-CAATCAC--
>8
---CGTCAAT-CTA-TCTTC---AAGCA---TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATC----
>9
---CGTCAAT-GGA-TC--G----AG-----TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>10
---CGTCAAT-CTAATC--G---AAGCA---TACG--C-GGC-AGAGCC--G---TCTACCTCGG-CAATCACGT
>1
---CGTCAAT-CTA-TC--G---AAGCA---TACG--CGGGC-AGAGCC--GAA---GACCTCGG-CAATCCA--
>2
CCACGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC---AGCC--GAACTCGACCTCGG-CAATCAC--
>3
---CGTCAAT-CTA-TC--G---AAGCA---TACG--C-GGC-AGAGCCCGGAA---GACCTCGG-CAATCAC--
>4
---CGTCAATGCTAGTC--G---AAGCA---GCTG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>5
---CGTCAAT-CTA-TC--G---AAGCATTCTACG--C-GGC-AGAGCC--------GACCTCGG-CAATCAC--
>6
---CGTCAAT-CTA-----G---AAGCA---TACG--C-GGCAAGAGCC--GAA---GACCTCGGCCAATCAC--
>7
---CGTCAAT-CTA-TC--GGTAAAGCA---TACGCTC-TGT---AGCC--GAA---GACCTCGG-CAATCAC--
>8
---CGTCAAT-CTA-TCTTC---AAGCA---TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATC----
>9
---CGTCAAT-GGA-TC--G----AG-----TACG--C-GGC-AGAGCC--GAA---GACCTCGG-CAATCAC--
>10
---CGTCAAT-CTAATC--G---AAGCA---TACG--C-GGC-AGAGCC--G---TCTACCTCGG-CAATCACGT
END

	"$BINARY" ./test_data/seq.fa -g poa.png > cons.fa
	diff - cons.fa << END
>Consensus_sequence
CGTCAATCTATCGAAGCATACGCGGCAGAGCCGAAGACCTCGGCAATCAC
END

	"$BINARY" ./test_data/heter.fa -d2
done
