feat: add more robust tests

- add test to cover corner cases and known failure points

Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>
This commit is contained in:
2025-12-06 18:23:08 +05:30
parent 5448271298
commit 612086dfb7
16 changed files with 386 additions and 191 deletions

View File

@@ -1,58 +1,6 @@
#include <iostream>
// SPDX-FileCopyrightText: 2025 Avinal Kumar avinal.xlvii@gmail.com
// SPDX-License-Identifier: MIT
#include <blowfish/blowfish.h>
#include "test_framework.h"
std::string from_uint(uint32_t sh) {
std::string re("");
for (int i = 0; i < 4; i++) {
re += (unsigned char)(sh >> i * 8);
}
return re;
}
int main(int argc, char const *argv[]) {
std::string key("test@pass47");
std::string message("My name is Avinal and I am cute");
std::string cipher("");
int len = message.length();
int j = sizeof(uint32_t);
int rem =
((len > j * 2) ? (((len / j * 2) + 1) * j * 2 - len) : (j * 2 - len));
message.append(rem, '\0');
len = message.length();
Blowfish blowfish(key);
std::cout << "My message is: " << message << std::endl;
uint32_t lm, rm;
for (size_t i = 0; i < len; i += 8) {
lm = 0;
rm = 0;
lm = *reinterpret_cast<unsigned int *>(
const_cast<char *>(message.substr(i, j).c_str()));
rm = *reinterpret_cast<unsigned int *>(
const_cast<char *>(message.substr(i + 4, j).c_str()));
blowfish.encrypt(lm, rm);
cipher += from_uint(lm) + from_uint(rm);
}
std::cout << cipher << std::endl;
std::string decipher("");
len = cipher.length();
std::cout << "length: " << len << std::endl;
for (size_t i = 0; i < len; i += 8) {
lm = 0;
rm = 0;
lm = *reinterpret_cast<unsigned int *>(
const_cast<char *>(cipher.substr(i, 4).c_str()));
rm = *reinterpret_cast<unsigned int *>(
const_cast<char *>(cipher.substr(i + 4, 4).c_str()));
blowfish.decrypt(lm, rm);
decipher += from_uint(lm) + from_uint(rm);
}
std::cout << decipher << std::endl;
if (message == decipher) {
std::cout << "Test successful!" << std::endl;
return 0;
} else {
return 1;
}
}
int main() { return tests_summary(); }