File: Intdifftest.cpp

package info (click to toggle)
dtl 1.19-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 424 kB
  • sloc: cpp: 2,214; makefile: 2
file content (144 lines) | stat: -rw-r--r-- 4,183 bytes parent folder | download | duplicates (3)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include "dtl_test_common.hpp"

class Intdifftest : public ::testing::Test
{
protected :
    dtl_test_typedefs(int, vector< int >)
    typedef struct case_t {
        sequence   A;
        sequence   B;
        size_t     editdis;
        elemVec    lcs_v;
        sequence   lcs_s;
        sesElemVec ses_seq;
        uniHunkVec hunk_v;
        size_t     editdis_ses;
        size_t     editdis_uni;
        string     path_rses;
        string     path_rhunks;
    } case_t;
    typedef vector< case_t > caseVec;
    caseVec cases;
    
    case_t createCase (const sequence a, const sequence b, string test_name) {
        case_t c;
        string diff_name("intdiff");
        Diff< elem > diff(a, b);
        diff.compose();
        diff.composeUnifiedHunks();
        
        if (test_name != "") {
            string path_lses   = create_path(test_name, diff_name, TYPE_DIFF_SES);
            string path_rses   = create_path(test_name, diff_name, TYPE_DIFF_SES, true);
            string path_lhunks = create_path(test_name, diff_name, TYPE_DIFF_UNI);
            string path_rhunks = create_path(test_name, diff_name, TYPE_DIFF_UNI, true);

            create_file< elem, sequence, Compare< elem > >(path_rses,   diff, TYPE_DIFF_SES);
            create_file< elem, sequence, Compare< elem > >(path_rhunks, diff, TYPE_DIFF_UNI);
            c.editdis_ses = cal_diff_uni(path_lses,   path_rses);
            c.editdis_uni = cal_diff_uni(path_lhunks, path_rhunks);
            c.path_rses   = path_rses;
            c.path_rhunks = path_rhunks;
        }


        c.A = a;
        c.B = b;
        c.editdis = diff.getEditDistance();
        c.lcs_v   = diff.getLcsVec();
        c.ses_seq = diff.getSes().getSequence();
        return c;
    }
    
    void SetUp() {
        cases.push_back(createCase(sequence(0), sequence(0), "diff_test0"));
        sequence B1;
        B1.push_back(1);
        cases.push_back(createCase(sequence(0), B1, "diff_test1"));
        sequence A2;
        A2.push_back(1);
        cases.push_back(createCase(A2, sequence(0), "diff_test2"));
        int a4[]   = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int b4[]   = {3, 5, 1, 4, 5, 1, 7, 9, 6, 10};
        int a4siz  = sizeof(a4) / sizeof(int);
        int b4siz  = sizeof(b4) / sizeof(int);
        sequence A4(&a4[0], &a4[a4siz]);
        sequence B4(&b4[0], &b4[b4siz]);
        cases.push_back(createCase(A4, B4, "diff_test3"));
        int a5[]   = {1, 2, 3, 4, 5};
        int b5[]   = {3, 5, 1, 4, 5};
        int a5siz  = sizeof(a5) / sizeof(int);
        int b5siz  = sizeof(b5) / sizeof(int);
        sequence A5(&a5[0], &a5[a5siz]);
        sequence B5(&b5[0], &b5[b5siz]);
        cases.push_back(createCase(A5, B5, "diff_test4"));
    }
    
    void TearDown () {
        for_each(cases.begin(), cases.end(), Remover< case_t >());
    }
    
};

/**
 * Intdifftest
 * check list is following
 * - editdistance
 * - LCS
 * - SES
 */
TEST_F (Intdifftest, diff_test0) {
    EXPECT_EQ(0, cases[0].editdis);
    
    EXPECT_TRUE(cases[0].lcs_v.empty());
    
    ASSERT_EQ(0, cases[0].editdis_ses);

    ASSERT_EQ(0, cases[0].editdis_uni);
}

TEST_F (Intdifftest, diff_test1) {
    EXPECT_EQ(1, cases[1].editdis);
    
    EXPECT_TRUE(cases[1].lcs_v.empty());
    
    ASSERT_EQ(0, cases[1].editdis_ses);

    ASSERT_EQ(0, cases[1].editdis_uni);
}

TEST_F (Intdifftest, diff_test2) {
    EXPECT_EQ(1, cases[2].editdis);
    
    EXPECT_TRUE(cases[2].lcs_v.empty());
    
    ASSERT_EQ(0, cases[2].editdis_ses);

    ASSERT_EQ(0, cases[2].editdis_uni);
}

TEST_F (Intdifftest, diff_test3) {
    EXPECT_EQ(8, cases[3].editdis);
    
    EXPECT_EQ(3, cases[3].lcs_v[0]);
    EXPECT_EQ(4, cases[3].lcs_v[1]);
    EXPECT_EQ(5, cases[3].lcs_v[2]);
    EXPECT_EQ(7, cases[3].lcs_v[3]);
    EXPECT_EQ(9, cases[3].lcs_v[4]);
    
    ASSERT_EQ(0, cases[3].editdis_ses);

    ASSERT_EQ(0, cases[3].editdis_uni);
}

TEST_F (Intdifftest, diff_test4) {
    EXPECT_EQ(4, cases[4].editdis);
    
    EXPECT_EQ(3, cases[4].lcs_v[0]);
    EXPECT_EQ(4, cases[4].lcs_v[1]);
    EXPECT_EQ(5, cases[4].lcs_v[2]);
    
    ASSERT_EQ(0, cases[4].editdis_ses);

    ASSERT_EQ(0, cases[4].editdis_uni);
}