Skip to content

Commit

Permalink
Add more test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
Bogdan Kulynych committed May 29, 2015
1 parent 1e72600 commit 6cd3e79
Showing 1 changed file with 43 additions and 27 deletions.
70 changes: 43 additions & 27 deletions tests/test_homomorphic_operations.cpp
Expand Up @@ -285,19 +285,39 @@ BOOST_AUTO_TEST_CASE(array_select)
plaintext_arrays.push_back(PlaintextArray(raw_plaintext_array));
}

vector<EncryptedArray> encrypted_arrays;
for (const auto & raw_plaintext_array : raw_plaintext_arrays) {
encrypted_arrays.push_back(sk.encrypt(raw_plaintext_array).expand());
}

vector<vector<bool> > raw_plaintext_selections = {
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1},
};

vector<EncryptedArray> encrypted_selections;
for (const auto & raw_plaintext_selection : raw_plaintext_selections) {
encrypted_selections.push_back(sk.encrypt(raw_plaintext_selection).expand());
}

vector<PlaintextArray> plaintext_selections;
for (const auto & raw_plaintext_selection : raw_plaintext_selections) {
plaintext_selections.push_back(PlaintextArray(raw_plaintext_selection));
}

{
vector<EncryptedArray> encrypted_selections;
for (const auto & raw_plaintext_selection : raw_plaintext_selections) {
encrypted_selections.push_back(sk.encrypt(raw_plaintext_selection).expand());
for (size_t i = 0; i < encrypted_selections.size(); ++i) {
const auto result = encrypted_selections[i].select(encrypted_arrays);
const vector<bool> decrypted_result = sk.decrypt(result);

BOOST_CHECK_EQUAL(result.degree(), 2);
BOOST_CHECK(decrypted_result == plaintext_arrays[i].elements());
}
}

{
for (size_t i = 0; i < encrypted_selections.size(); ++i) {
const auto result = encrypted_selections[i].select(plaintext_arrays);
const vector<bool> decrypted_result = sk.decrypt(result);
Expand All @@ -308,11 +328,16 @@ BOOST_AUTO_TEST_CASE(array_select)
}

{
vector<PlaintextArray> plaintext_selections;
for (const auto & raw_plaintext_selection : raw_plaintext_selections) {
plaintext_selections.push_back(PlaintextArray(raw_plaintext_selection));
for (size_t i = 0; i < plaintext_selections.size(); ++i) {
const auto result = plaintext_selections[i].select(encrypted_arrays);
const vector<bool> decrypted_result = sk.decrypt(result);

BOOST_CHECK_EQUAL(result.degree(), 1);
BOOST_CHECK(decrypted_result == plaintext_arrays[i].elements());
}
}

{
for (size_t i = 0; i < plaintext_selections.size(); ++i) {
const auto result = plaintext_selections[i].select(plaintext_arrays);
BOOST_CHECK(result.elements() == plaintext_arrays[i].elements());
Expand Down Expand Up @@ -347,6 +372,16 @@ BOOST_AUTO_TEST_CASE(array_equal)
vector<bool>{1, 0, 1, 0},
};

vector<PlaintextArray> plaintext_inputs;
for (const auto & raw_plaintext_input : raw_plaintext_inputs) {
plaintext_inputs.push_back(PlaintextArray(raw_plaintext_input));
}

vector<EncryptedArray> encrypted_inputs;
for (const auto & raw_plaintext_input : raw_plaintext_inputs) {
encrypted_inputs.push_back(sk.encrypt(raw_plaintext_input).expand());
}

const vector<vector<bool> > expected_results = {
{0, 0, 0, 0},
{1, 0, 0, 0},
Expand All @@ -355,11 +390,6 @@ BOOST_AUTO_TEST_CASE(array_equal)
};

{
vector<EncryptedArray> encrypted_inputs;
for (const auto & raw_plaintext_input : raw_plaintext_inputs) {
encrypted_inputs.push_back(sk.encrypt(raw_plaintext_input).expand());
}

for (size_t i = 0; i < encrypted_inputs.size(); ++i) {
const auto result = encrypted_inputs[i].equal(encrypted_arrays);
const vector<bool> decrypted_result = sk.decrypt(result);
Expand All @@ -370,10 +400,6 @@ BOOST_AUTO_TEST_CASE(array_equal)
}

{
vector<PlaintextArray> plaintext_inputs;
for (const auto & raw_plaintext_input : raw_plaintext_inputs) {
plaintext_inputs.push_back(PlaintextArray(raw_plaintext_input));
}

for (size_t i = 0; i < plaintext_inputs.size(); ++i) {
const auto result = plaintext_inputs[i].equal(encrypted_arrays);
Expand All @@ -385,26 +411,16 @@ BOOST_AUTO_TEST_CASE(array_equal)
}

{
vector<EncryptedArray> encrypted_inputs;
for (const auto & raw_plaintext_input : raw_plaintext_inputs) {
encrypted_inputs.push_back(sk.encrypt(raw_plaintext_input).expand());
}

for (size_t i = 0; i < encrypted_inputs.size(); ++i) {
const auto result = encrypted_inputs[i].equal(encrypted_arrays);
const auto result = encrypted_inputs[i].equal(plaintext_arrays);
const vector<bool> decrypted_result = sk.decrypt(result);

BOOST_CHECK_EQUAL(result.degree(), 4);
BOOST_CHECK_EQUAL(result.degree(), 1);
BOOST_CHECK(decrypted_result == expected_results[i]);
}
}

{
vector<PlaintextArray> plaintext_inputs;
for (const auto & raw_plaintext_input : raw_plaintext_inputs) {
plaintext_inputs.push_back(PlaintextArray(raw_plaintext_input));
}

for (size_t i = 0; i < plaintext_inputs.size(); ++i) {
const auto result = plaintext_inputs[i].equal(plaintext_arrays);
BOOST_CHECK(result.elements() == expected_results[i]);
Expand Down

0 comments on commit 6cd3e79

Please sign in to comment.