mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[auto-clear] Include test for ambiguous cases
This commit is contained in:
parent
5cd777b673
commit
9bf550d38f
@ -39,7 +39,12 @@ struct SplitDatum {
|
||||
bool cleared;
|
||||
};
|
||||
|
||||
SplitDatum splitData[] = {
|
||||
struct TestCase {
|
||||
gint64 amount;
|
||||
const char *expectedErr;
|
||||
};
|
||||
|
||||
std::vector<SplitDatum> easySplitData = {
|
||||
{ "Memo 01", - 8234, true },
|
||||
{ "Memo 02", -156326, true },
|
||||
{ "Memo 03", - 4500, true },
|
||||
@ -72,12 +77,7 @@ SplitDatum splitData[] = {
|
||||
{ "Memo 30", - 61200, false },
|
||||
};
|
||||
|
||||
struct TestCase {
|
||||
gint64 amount;
|
||||
const char *expectedErr;
|
||||
};
|
||||
|
||||
TestCase testCases[] = {
|
||||
std::vector<TestCase> easyTestCases = {
|
||||
{ 0, "The selected amount cannot be cleared.", },
|
||||
{ -869227, "Account is already at Auto-Clear Balance." }, // No splits need to be cleared.
|
||||
{ -869300, "The selected amount cannot be cleared." },
|
||||
@ -85,7 +85,33 @@ TestCase testCases[] = {
|
||||
{ -963272, NULL }, // All splits need to be cleared.
|
||||
};
|
||||
|
||||
TEST(AutoClear, AutoClearAll) {
|
||||
std::vector<SplitDatum> ambiguousSplitData = {
|
||||
{ "Memo 01", -10, false },
|
||||
{ "Memo 02", -10, false },
|
||||
{ "Memo 03", -10, false },
|
||||
};
|
||||
|
||||
std::vector<TestCase> ambiguousTestCases = {
|
||||
{ -10, "Cannot uniquely clear splits. Found multiple possibilities." },
|
||||
{ -20, "Cannot uniquely clear splits. Found multiple possibilities." },
|
||||
|
||||
// Commented out, auto-clear algorithm is not smart enough yet.
|
||||
//{ -30, NULL },
|
||||
};
|
||||
|
||||
class AutoClearTest
|
||||
: public testing::TestWithParam<
|
||||
std::pair<
|
||||
std::vector<SplitDatum>,
|
||||
std::vector<TestCase>
|
||||
>
|
||||
> {
|
||||
};
|
||||
|
||||
TEST_P(AutoClearTest, DoesAutoClear) {
|
||||
auto splitData = GetParam().first;
|
||||
auto testCase = GetParam().second;
|
||||
|
||||
QofBook *book = qof_book_new ();
|
||||
Account *account = xaccMallocAccount(book);
|
||||
xaccAccountSetName(account, "Test Account");
|
||||
@ -102,7 +128,7 @@ TEST(AutoClear, AutoClearAll) {
|
||||
}
|
||||
xaccAccountCommitEdit(account);
|
||||
|
||||
for (auto &t : testCases) {
|
||||
for (auto &t : testCase) {
|
||||
gnc_numeric amount_to_clear = gnc_numeric_create(t.amount, DENOM);
|
||||
char *err;
|
||||
|
||||
@ -124,3 +150,12 @@ TEST(AutoClear, AutoClearAll) {
|
||||
|
||||
qof_book_destroy(book);
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
InstantiationAutoClearTest,
|
||||
AutoClearTest,
|
||||
testing::Values(
|
||||
std::pair{ easySplitData, easyTestCases },
|
||||
std::pair{ ambiguousSplitData, ambiguousTestCases }
|
||||
)
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user