LCOV - code coverage report
Current view: top level - tests/lib - merge.c (source / functions) Hit Total Coverage
Test: rapport Lines: 38 38 100.0 %
Date: 2021-12-10 16:22:55 Functions: 4 4 100.0 %
Branches: 11 22 50.0 %

           Branch data     Line data    Source code
       1                 :            : /*-
       2                 :            :  * Copyright (c) 2014 Baptiste Daroussin <bapt@FreeBSD.org>
       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(merge);
      32                 :            : 
      33                 :         26 : ATF_TC_HEAD(merge, tc)
      34                 :            : {
      35                 :         26 :         atf_tc_set_md_var(tc, "descr",
      36                 :            :             "3 way merge");
      37                 :         26 : }
      38                 :            : 
      39                 :         13 : ATF_TC_BODY(merge, tc)
      40                 :            : {
      41                 :            :         xstring *b;
      42                 :         13 :         b = xstring_new();
      43                 :         13 :         char *pivot = "test1\ntest2\n";
      44                 :         13 :         char *modified = "test1\n#test2\n";
      45                 :         13 :         char *new = "test1\ntest2\ntest3\n";
      46                 :            : 
      47         [ +  - ]:         13 :         ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
      48                 :         13 :         fflush(b->fp);
      49         [ +  - ]:         13 :         ATF_REQUIRE_STREQ(b->buf, "test1\n#test2\ntest3\n");
      50                 :            : 
      51                 :         13 :         xstring_reset(b);
      52                 :         13 :         pivot = "test1\ntest2";
      53                 :         13 :         modified = "test1\n#test2";
      54                 :         13 :         new = "test1\ntest2\ntest3";
      55                 :            : 
      56         [ +  - ]:         13 :         ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
      57                 :         13 :         fflush(b->fp);
      58         [ +  - ]:         13 :         ATF_REQUIRE_STREQ(b->buf, "test1\n#test2test3");
      59                 :            : 
      60                 :         13 :         xstring_reset(b);
      61                 :         13 :         pivot = "test1\ntest2";
      62                 :         13 :         modified = "test1\n";
      63                 :         13 :         new = "test1\ntest2\ntest3";
      64                 :            : 
      65         [ +  - ]:         13 :         ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
      66                 :         13 :         fflush(b->fp);
      67         [ +  - ]:         13 :         ATF_REQUIRE_STREQ(b->buf, "test1\ntest3");
      68                 :            : 
      69                 :         13 :         xstring_reset(b);
      70                 :         13 :         pivot = "test1\ntest2\ntest3";
      71                 :         13 :         modified = "test1\na\ntest2\ntest3";
      72                 :         13 :         new = "test1\ntest2\ntest3";
      73                 :            : 
      74         [ +  - ]:         13 :         ATF_REQUIRE_EQ(merge_3way(pivot, modified, new, b), 0);
      75                 :         13 :         fflush(b->fp);
      76         [ -  + ]:         13 :         ATF_REQUIRE_STREQ(b->buf, "test1\na\ntest2\ntest3");
      77                 :            : 
      78                 :         13 :         xstring_free(b);
      79                 :         13 : }
      80                 :            : 
      81                 :         52 : ATF_TP_ADD_TCS(tp)
      82                 :            : {
      83   [ +  -  -  +  :         26 :         ATF_TP_ADD_TC(tp, merge);
                   -  + ]
      84                 :            : 
      85                 :         26 :         return (atf_no_error());
      86                 :         26 : }

Generated by: LCOV version 1.15