diff options
Diffstat (limited to 'tests/tax_tests.cpp')
| -rw-r--r-- | tests/tax_tests.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/tax_tests.cpp b/tests/tax_tests.cpp new file mode 100644 index 0000000..3debaa8 --- /dev/null +++ b/tests/tax_tests.cpp @@ -0,0 +1,46 @@ +TEST _tax_uniqueness_test(void) +{ + s32 country_count = country::get_count(); + + for (s32 i = 0; i < country_count; i++) + { + tax_rate* trb1 = (tax_rate*)memops::alloc(sizeof(tax_rate) * 500); + u32 trc1 = country::get_available_tax_rates(country::get_code_by_index(i), trb1, 500); + + // check for duplicates in country. + for (u32 x1 = 0; x1 < trc1; x1++) + { + for (u32 x2 = 0; x2 < trc1; x2++) + { + if (x1 == x2) continue; + if (strops::equals(trb1[x1].internal_code, trb1[x2].internal_code)) { + FAIL(); + } + } + } + + // cross check with other countries. + for (s32 x = 0; x < country_count; x++) + { + if (x==i) continue; + tax_rate* trb2 = (tax_rate*)memops::alloc(sizeof(tax_rate) * 500); + u32 trc2 = country::get_available_tax_rates(country::get_code_by_index(x), trb2, 500); + + for (u32 x1 = 0; x1 < trc1; x1++) + { + for (u32 x2 = 0; x2 < trc2; x2++) + { + if (strops::equals(trb1[x1].internal_code, trb2[x2].internal_code)) { + FAIL(); + } + } + } + } + } + + PASS(); +} + +SUITE(tax_generic_tests) { + RUN_TEST(_tax_uniqueness_test); +}
\ No newline at end of file |
