void test_growseq(void) { int seqsize = 80; char *seq = calloc(seqsize, sizeof(char)); CU_ASSERT_FALSE(initseq(&seq, seqsize, opts)); CU_ASSERT_PTR_NOT_NULL(seq); }
static void join ( FILE *fp1, FILE *fp2 ) { struct seq seq1, seq2; struct line line; int diff, i, j, eof1, eof2; /* Read the first line of each file. */ initseq (&seq1); getseq (fp1, &seq1); initseq (&seq2); getseq (fp2, &seq2); while (seq1.count && seq2.count) { diff = keycmp (&seq1.lines[0], &seq2.lines[0]); if (diff < 0) { if (print_unpairables_1) prline (&seq1.lines[0]); freeline (&seq1.lines[0]); seq1.count = 0; getseq (fp1, &seq1); continue; } if (diff > 0) { if (print_unpairables_2) prline (&seq2.lines[0]); freeline (&seq2.lines[0]); seq2.count = 0; getseq (fp2, &seq2); continue; } /* Keep reading lines from file1 as long as they continue to match the current line from file2. */ eof1 = 0; do if (!getseq (fp1, &seq1)) { eof1 = 1; ++seq1.count; break; } while (!keycmp (&seq1.lines[seq1.count - 1], &seq2.lines[0])); /* Keep reading lines from file2 as long as they continue to match the current line from file1. */ eof2 = 0; do if (!getseq (fp2, &seq2)) { eof2 = 1; ++seq2.count; break; } while (!keycmp (&seq1.lines[0], &seq2.lines[seq2.count - 1])); if (print_pairables) { for (i = 0; i < seq1.count - 1; ++i) for (j = 0; j < seq2.count - 1; ++j) prjoin (&seq1.lines[i], &seq2.lines[j]); } for (i = 0; i < seq1.count - 1; ++i) freeline (&seq1.lines[i]); if (!eof1) { seq1.lines[0] = seq1.lines[seq1.count - 1]; seq1.count = 1; } else seq1.count = 0; for (i = 0; i < seq2.count - 1; ++i) freeline (&seq2.lines[i]); if (!eof2) { seq2.lines[0] = seq2.lines[seq2.count - 1]; seq2.count = 1; } else seq2.count = 0; } if (print_unpairables_1 && seq1.count) { prline (&seq1.lines[0]); freeline (&seq1.lines[0]); while (getline (fp1, &line)) { prline (&line); freeline (&line); } } if (print_unpairables_2 && seq2.count) { prline (&seq2.lines[0]); freeline (&seq2.lines[0]); while (getline (fp2, &line)) { prline (&line); freeline (&line); } } delseq (&seq1); delseq (&seq2); }
void test_initseq(void) { char *seq = NULL; int seqsize = 20; CU_ASSERT_FALSE(initseq(&seq, seqsize, opts)); CU_ASSERT_PTR_NOT_NULL(seq); }