-
Notifications
You must be signed in to change notification settings - Fork 0
/
CONTRIBUTING
35 lines (29 loc) · 1.68 KB
/
CONTRIBUTING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
To contribute you must agree to the use of the LGPL license.
The public interface for this library is contained under "public".
All headers that will have a bound contract for integration into
other systems must be contained in this space. These headers must
be self contained and not reference any headers other than those
utilized by the C language and possibly the C++ language.
The internal interfaces for this library are contained under "include".
They may including references to the public interfaces and otherwise
have no restrictions.
Headers do not contain implementation - e.g. functions.
Helper functions (e.g simple C Macros or C++ inline functions) may
be contained here; but must be very limited in ability.
For example, the NORMALIZED_TO_SCALAR C Macro is a good function
to have here. Anything more complex should have its interface
defined in the headers, and an implementation defined under 'src'.
The source is included under 'src'. All implementation could must
go here. Implementation files that are not tests must not have the
term 'tests' in their name or path. They will be excluded from the
standard build.
There is a goal of 100% testing - unit, functional, and integration.
All tests live under 'src/test'. If there is any functionality that
is *not* tested, then please make sure to add it to the TESTING.rst
file so that it can be tracked. The codebase will be periodically
audited in order to validate the test coverage. Something is only
considered tested if it is *directly* tested - e.g there is a unit
test that covers it.
As a general rule, class destructors are exempt from explicit testing.
However, one should ensure that they are covered via indirect testing
where possible.