Commit Graph

93 Commits

Author SHA1 Message Date
John Ralls
b95ea2c4aa Add Account-list options. 2021-07-10 17:24:57 -07:00
John Ralls
399573a89d Fix multichoice test construction. 2021-07-10 17:24:57 -07:00
John Ralls
12c5b94430 New scheme function gnc_option_default_value. 2021-07-10 17:24:57 -07:00
John Ralls
3f576671aa Adapt GncOptionMultiChoiceValue to support list options.
Main change adds a value field to the constructor to set the value and
default value.
2021-07-10 17:24:57 -07:00
John Ralls
2f2ac99944 Replace the direct wrapping of GncOptionDB-set-option-string-foo.
With a simple type-free function gnc_option_set. This mirrors the current
(gnc:option-set(gnc:lookup-option... and takes care of SCM type conversion.
2021-07-10 17:24:57 -07:00
John Ralls
252ba9b477 Change GncOptionDB::lookup_option to gnc_option_value().
The old gnc:lookup-option returned the option object so that it could be
manipulated rather than getting its value; gnc_option_value replicates
the behavior of (gnc:option-value (gnc:lookup-option)).
2021-07-10 17:24:57 -07:00
John Ralls
ff7b263a5f Fix up and test the int specialization of GncOptionRangeValue.
Not sure yet that a double one is really needed.
2021-07-10 17:24:57 -07:00
John Ralls
3dc4bc2377 Implement GncOptionDateValue. 2021-07-10 17:24:57 -07:00
John Ralls
435667e8fe Implement GncOptionMultichoiceValue
Replaces GncOptionValue<GncMultiChoiceOptionChoices> because having the
vector as the value obviously wouldn't work and besides it needs
additional functions.
2021-07-10 17:24:57 -07:00
John Ralls
8eedcb6d6d Extract all SCM functions to gnc-optiondb.i.
So that it can be moved to bindings/ when gnc-module-load-begone is ready.
2021-07-10 17:24:57 -07:00
John Ralls
16d1f0655b Get libswig-gnc-optiondb to install in the right place on Windows. 2021-07-10 17:24:57 -07:00
John Ralls
cee3cdaff9 Instantiate GncOption::set_option for guile, initial types string and int.
For proof-of-concept. Guile obviously doesn't know about templates.
2021-07-10 17:24:57 -07:00
John Ralls
c5fac51a8b Change the type of OptionUIItem's m_ui_item from void* to GncOptionUIItem.
A locally-opaque class wrapping whatever sort of widget ptr one needs.
Thanks, warlord!
2021-07-10 17:24:56 -07:00
John Ralls
3296212aef Sketch out the rest of the option types.
Minimal implentation to get it to compile and pass tests, not functional yet.
2021-07-10 17:24:56 -07:00
John Ralls
0a13b4c518 Fix up the SWIG wrapper for GncOptionDBPtr.
Thanks to Flexo@stackoverflow for
https://stackoverflow.com/questions/27693812/how-to-handle-unique-ptrs-with-swig
5 years later, why isn't this in SWIG yet?
2021-07-10 17:24:56 -07:00
John Ralls
4146251cc7 Add GncOptionUIItem manipulation to GncOptionDB. 2021-07-10 17:24:56 -07:00
John Ralls
6ccb9dbb9e Use a std::unique_ptr<GncOptionDB> instead of a raw ptr.
Passing references to it to the gnc_register_option functions.

Not tested yet with SWIG, might not work.

Includes introducing fixtures to gtest-gnc-optiondb.cpp.
2021-07-10 17:24:56 -07:00
John Ralls
41ef2c5d44 Add OptionUIItem composition class to GncOption.
Provides a type and a raw pointer member with accessors. The type is one of
enum GncOptionIUType and is either VOID (for internal options that don't
get UI items) or one of the widget types specified in dialog-option.c or
business-options-gnome.c.
2021-07-10 17:24:56 -07:00
John Ralls
083e5b93df Replace the CRTP class GncOptionBase with direct calls in its former children.
Benefit of CRTP too limited to accept the cost of understanding it.
2021-07-10 17:24:56 -07:00
John Ralls
2ee0edaa16 Use targets instead of variables for GncOption* tests. 2021-07-10 17:24:56 -07:00
John Ralls
ade7fc8b6e Initial SWIG of GncOptionDB and Scheme tests.
This class will be heavily used by reports so we need to ensure SWIG and
Scheme compatibility from the start.
2021-07-10 17:24:56 -07:00
John Ralls
f3eee511e8 Add free functions to create a new GncOptionDB and to register options.
The objective of the free functions is to hide the GncOption from language
bindings so that the GncOptions can be moved into the GncOptionDB instead
of having shared ptrs splattered around the heap. Nearly all access to
the options can then be mediated through the GncOptionDB container.

Note that gnc_option_db_new creates the GncOptionDB on the heap and
returns a raw ptr, so it's up to the creator of the GncOptionDB to
call delete on it when it's no longer needed.
2021-07-10 17:24:56 -07:00
John Ralls
455d3c2d60 Add GncOptionDB class. 2021-07-10 17:24:56 -07:00
John Ralls
13b94d2370 Test integer options, calling get_value with wrong type. 2021-07-10 17:24:56 -07:00
John Ralls
d88ec0dc1b Replace the gnc_make_foo_option free functions with a template ctor.
The free functions will reappear for GncOptionDB. This is to avoid
having to pass naked pointers to Scheme with the attendant object
lifetime issues.
2021-07-10 17:24:56 -07:00
John Ralls
01dc70cc60 Add GncOption accessors for Classifier strings. 2021-07-10 17:24:56 -07:00
John Ralls
b6fd844774 Wrap GncOptionValue/GncOptionValidatedValue in Boost::Variant.
To provide a single type for containers.
2021-07-10 17:24:56 -07:00
John Ralls
c0ba3e2706 [C++ Options] Begin Implementation for basic and validated options. 2021-07-10 17:24:56 -07:00
John Ralls
c49b45d8f1 Finish the glib 2.67 fixes for CI tests. 2021-03-22 14:02:37 -07:00
Geert Janssens
e9dfd0d9ea Still more fixes for Arch ci failure 2021-03-22 21:30:41 +01:00
Geert Janssens
cb04365013 More fixes for Arch ci failure 2021-03-22 21:14:34 +01:00
John Ralls
7a7c26f87e Move glib and gtk includes out of extern C for tests.
Needed to compile with glib 2.67 and later.
2021-02-16 13:23:48 -08:00
Micha Lenk
9386b276e5 Make prototypes static for autoclear unit test
With the explicit prototypes not marked as static unit test builds on Debian
Buster (using buster-backports) fail with

error: testing::internal::ParamGenerator<TestCase*> gtest_InstantiationAutoClearTestAutoClearTest_EvalGenerator_() was declared extern and later static [-fpermissive]

According to the comment preceding the declaration the only intent of the
explicit prototype (in newer versions of googletest implicitly defined by the
GTEST macros) seems to be to silence a warning which would cause a build
failure on Ubuntu 18.04 when using -Werror.

Builds on Debian unstable seem to build just fine without this explicit
declaration, hence I consider it safe to just drop it. However, builds on
Ubuntu 18.04 then fail (see above).

Making the prototypes as static should make both build environments happy.
2021-02-07 13:50:29 -08:00
John Ralls
c8c58bf349 Add test_autoclear_SOURCES to the dist list for inclusion in the tarball. 2020-12-26 17:23:28 -08:00
Christopher Lam
59ec912928 [modularise] (gnucash app-utils) 2020-12-09 06:40:07 +08:00
Cristian Klein
69789b2b93 [auto-tests] Stick to CodingStandard for member variables 2020-11-08 09:58:57 +01:00
Cristian Klein
f26215feae [auto-tests] Fix misspelling 2020-11-08 09:58:17 +01:00
Cristian Klein
e5378b2048 [auto-clear] Make test more future-proof with GoogleTest 2020-10-30 09:42:05 +01:00
Cristian Klein
982cf86deb [auto-clear] Fix test with googletest 1.8 2020-10-30 09:42:05 +01:00
Cristian Klein
9d4c0b05db [auto-clear] Improve #include style 2020-10-30 09:42:05 +01:00
Cristian Klein
1cf7defee8 [auto-clear] Address feedback 2020-10-30 09:42:05 +01:00
Cristian Klein
9bf550d38f [auto-clear] Include test for ambiguous cases 2020-10-30 09:42:05 +01:00
Cristian Klein
5cd777b673 [auto-clear] Fix test: Add xaccAccountBeginEdit / xaccAccountCommitEdit 2020-10-30 09:42:05 +01:00
Cristian Klein
2faecb2074 [auto-clear] Avoid testing ambigous auto-clear 2020-10-30 09:42:05 +01:00
Cristian Klein
a1806a2f94 [auto-clear] Fix model 2020-10-30 09:42:05 +01:00
Cristian Klein
51715e454c [auto-clear] Add tests 2020-10-30 09:42:05 +01:00
Geert Janssens
abf29aa196 Drop the gnc-module wrapper around the test-engine library
It's not adding anything
2020-04-24 21:29:20 +02:00
Geert Janssens
06ff8a292d Use new keyword parameters for all calls to gnc_add_scheme_test_targets 2020-03-30 08:41:29 +02:00
Geert Janssens
301db9020d Merge branch 'maint' 2020-02-06 16:50:08 +01:00
Geert Janssens
e79e82edcf CMake - remove parameter repetition in else() and endif() statements
This follows Professional CMake's recommended practises
2020-02-05 11:38:14 +01:00