| 1 | == Concept Checking == |
| 2 | I don't have much to say about this yet... It's not so complicated (just not too pretty). |
| 3 | |
| 4 | == Concept Coverage == |
| 5 | Testing concept coverage amounts to the use of so-called "archetypes" to ensure that your documentation actually defines the full set of requirements your algorithms impose upon its template parameters. Its actually pretty easy to miss some requirements, especially if your algorithm is a set of nested function calls that have different requirements. |
| 6 | |
| 7 | That said, an archetype is an idealized type that represents some minimal set of requirements for a type. Objects of archetypes are only meant to be used in compile tests, not at runtime. The reason for this is that their objects have no real data and will certainly cause test programs to crash. Archetypes are essentially defined through template classes and each class implments only the requirements that it satisfies - no more, no less. To put in modern concept-ese, an archetype models exactly one concept (and anything that concept is a refinement of). |
| 8 | |
| 9 | So far, I've completely rewritten most of the archertypes corresponding to graph concepts. There was a subtle problem with refinment (inheritance) and the composition of orthoganal concepts. It was preventing me from defining a bidirectional and vertex list graph archetype. |
| 10 | |
| 11 | === Property Graph Archetypes === |
| 12 | For some reason, it doesn't appear that the given implementation of property graph archetypes allows me to consdider graphs with multiple properties - which is kind of strange since we can use recursive templates to apply properties to graph types. I think its reasonable to talk about a graph that is "indexed" and "weighted" (has vertex indices and edge weights as interior properties). |
| 13 | |
| 14 | === Bundled Properties === |
| 15 | There are no concepts that test bundled properties - but there could be. |