init
This commit is contained in:
116
test/Objdifftest.cpp
Normal file
116
test/Objdifftest.cpp
Normal file
@@ -0,0 +1,116 @@
|
||||
#include "dtl_test_common.hpp"
|
||||
#include "comparators.hpp"
|
||||
|
||||
class Objdifftest : public ::testing::Test
|
||||
{
|
||||
protected :
|
||||
dtl_test_typedefs(string, vector<elem>)
|
||||
typedef struct case_t {
|
||||
sequence A;
|
||||
sequence B;
|
||||
sesElemVec expected;
|
||||
sesElemVec ses_seq;
|
||||
} case_t;
|
||||
typedef vector< case_t > caseVec;
|
||||
|
||||
caseVec obj_diff_cases;
|
||||
|
||||
template < typename comparator >
|
||||
case_t createCase (const sequence a, const sequence b, sesElemVec ses, string test_name) {
|
||||
case_t c;
|
||||
elemVec lcs_v;
|
||||
string diff_name("objdiff");
|
||||
|
||||
Diff< elem, sequence, comparator > diff(a, b, true);
|
||||
|
||||
diff.compose();
|
||||
|
||||
c.A = a;
|
||||
c.B = b;
|
||||
c.ses_seq = diff.getSes().getSequence();
|
||||
c.expected = ses;
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
void SetUp(void) {
|
||||
{
|
||||
string array1[] = {"the", "quick", "brown"};
|
||||
string array2[] = {"The", "Quick", "Fox"};
|
||||
|
||||
sequence A(array1, array1 + (sizeof(array1) / sizeof(array1[0])));
|
||||
sequence B(array2, array2 + (sizeof(array2) / sizeof(array2[0])));
|
||||
|
||||
dtl::Ses< elem > ses;
|
||||
ses.addSequence("the", 1, 1, dtl::SES_COMMON);
|
||||
ses.addSequence("quick", 2, 2, dtl::SES_COMMON);
|
||||
ses.addSequence("brown", 3, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("Fox", 0, 3, dtl::SES_ADD);
|
||||
|
||||
obj_diff_cases.push_back(createCase< StringCaseInsensitive >(A, B, ses.getSequence(), "objdiff_test0_pattern"));
|
||||
}
|
||||
|
||||
{
|
||||
string array1[] = {"b", "c", "e", "g"};
|
||||
string array2[] = {"a", "d", "e", "f", "h"};
|
||||
|
||||
sequence A(array1, array1 + (sizeof(array1) / sizeof(array1[0])));
|
||||
sequence B(array2, array2 + (sizeof(array2) / sizeof(array2[0])));
|
||||
|
||||
dtl::Ses< elem > ses;
|
||||
ses.addSequence("b", 1, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("c", 2, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("a", 0, 1, dtl::SES_ADD);
|
||||
ses.addSequence("d", 0, 2, dtl::SES_ADD);
|
||||
ses.addSequence("e", 3, 3, dtl::SES_COMMON);
|
||||
ses.addSequence("g", 4, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("f", 0, 4, dtl::SES_ADD);
|
||||
ses.addSequence("h", 0, 5, dtl::SES_ADD);
|
||||
|
||||
obj_diff_cases.push_back(createCase< StringCaseInsensitive >(A, B, ses.getSequence(), "objdiff_test1_unswapped"));
|
||||
}
|
||||
{
|
||||
string array1[] = {"a", "d", "e", "f", "h"};
|
||||
string array2[] = {"b", "c", "e", "g"};
|
||||
|
||||
sequence A(array1, array1 + (sizeof(array1) / sizeof(array1[0])));
|
||||
sequence B(array2, array2 + (sizeof(array2) / sizeof(array2[0])));
|
||||
|
||||
dtl::Ses< elem > ses;
|
||||
ses.addSequence("a", 1, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("d", 2, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("b", 0, 1, dtl::SES_ADD);
|
||||
ses.addSequence("c", 0, 2, dtl::SES_ADD);
|
||||
ses.addSequence("e", 3, 3, dtl::SES_COMMON);
|
||||
ses.addSequence("f", 4, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("h", 5, 0, dtl::SES_DELETE);
|
||||
ses.addSequence("g", 0, 4, dtl::SES_ADD);
|
||||
|
||||
obj_diff_cases.push_back(createCase< StringCaseInsensitive >(A, B, ses.getSequence(), "objdiff_test2_swapped"));
|
||||
}
|
||||
}
|
||||
|
||||
void TearDown () {
|
||||
//for_each(obj_diff_cases.begin(), obj_diff_cases.end(), Remover< case_t >());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Objdifftest
|
||||
* check list:
|
||||
* - SES pattern "SES_COMMON, SES_DELETE, SES_ADD"
|
||||
* - Indepence of results from swapping
|
||||
*/
|
||||
|
||||
TEST_F (Objdifftest, objdiff_test0_pattern) {
|
||||
EXPECT_EQ(obj_diff_cases[0].expected, obj_diff_cases[0].ses_seq);
|
||||
}
|
||||
|
||||
TEST_F (Objdifftest, objdiff_test1_unswapped) {
|
||||
EXPECT_EQ(obj_diff_cases[1].expected, obj_diff_cases[1].ses_seq);
|
||||
}
|
||||
|
||||
TEST_F (Objdifftest, objdiff_test2_swapped) {
|
||||
EXPECT_EQ(obj_diff_cases[2].expected, obj_diff_cases[2].ses_seq);
|
||||
}
|
||||
Reference in New Issue
Block a user