Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/tests/lib/merge.c
2065 views
1
/*-
2
* Copyright (c) 2014 Baptiste Daroussin <[email protected]>
3
* All rights reserved.
4
*~
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer
10
* in this position and unchanged.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*~
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
16
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
19
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*/
26
27
#include <atf-c.h>
28
#include <sys/types.h>
29
#include <private/utils.h>
30
31
ATF_TC_WITHOUT_HEAD(merge);
32
33
ATF_TC_BODY(merge, tc)
34
{
35
xstring *b;
36
b = xstring_new();
37
char *pivot = "test1\ntest2\n";
38
char *modified = "test1\n#test2\n";
39
char *new = "test1\ntest2\ntest3\n";
40
41
ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
42
fflush(b->fp);
43
ATF_REQUIRE_STREQ(b->buf, "test1\n#test2\ntest3\n");
44
45
xstring_reset(b);
46
pivot = "test1\ntest2";
47
modified = "test1\n#test2";
48
new = "test1\ntest2\ntest3";
49
50
ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
51
fflush(b->fp);
52
ATF_REQUIRE_STREQ(b->buf, "test1\n#test2test3");
53
54
xstring_reset(b);
55
pivot = "test1\ntest2";
56
modified = "test1\n";
57
new = "test1\ntest2\ntest3";
58
59
ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
60
fflush(b->fp);
61
ATF_REQUIRE_STREQ(b->buf, "test1\ntest3");
62
63
xstring_reset(b);
64
pivot = "test1\ntest2\ntest3";
65
modified = "test1\na\ntest2\ntest3";
66
new = "test1\ntest2\ntest3";
67
68
ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
69
fflush(b->fp);
70
ATF_REQUIRE_STREQ(b->buf, "test1\na\ntest2\ntest3");
71
72
xstring_free(b);
73
}
74
75
ATF_TP_ADD_TCS(tp)
76
{
77
ATF_TP_ADD_TC(tp, merge);
78
79
return (atf_no_error());
80
}
81
82