# Sather Caveats

The following notes identify known problem areas or requests for input to the library/testing process.

1. The Container classes FMAP and FMULTIMAP have very brief test programs. While the other classes in the library make fairly extensive use of FMAPs and the class is therefore sort-of tested in the background we would welcome offers to build a more comprehensive test class for both FMAP and FMULTIMAP.
2. There is a rather philosophical problem with respect to operations which may be invoked on a non-immutable class. Should there be an explicit test for void - or should that form part of a pre-condition? On the basis that anything except a predicate (which is required to be total) - and possibly a 'size' enquiry - is used in order to do something sensible we have opted to put any necessary void test in a pre-condition. We believe that thorough testing of a program should reveal all such situations either by using the pre and post conditions which are provided for all operations or by explixit user-written test code. When a program is fully tested then it may be desired to compile without checking code - and there will then be no overhead of a void test. There are two areas which it might be useful to bring to programmers' attention :-
   - There is a minor restriction in the semantics of an ARRAY class object compared with the 1.2 library.
   - elt! iters require a non-void object.
3. Some operations on string literals (the use of which is HEAVILY discouraged!!!!) will only work if the string culture/coding, etc is known. Since the machine on which the program is compiled may not be that used for execution, any use of literals require the use of the operation default_lib - ie "Mary had a little lamb".default_lib.
4. IMPORTANT The concurrency classes have been converted - simple tests seem to work - but sometimes the program crashes in closing down. Help in tracing this is most welcome!
5. Since the abstraction of a cursor is applied not only to strings of characters, but binary strings, strings of runes, etc, etc the two operations currently having the names 'advance_one_char' and 'retract_one_char' now have the much shorter names 'advance' and 'retract'.
6. Canonical string ordering tests have yet to be done to demonstrate compliance with the string ordering standard. Preliminary tests indicate that this should work. It just hasn't been necessary when other things were of higher priority. They will be done when time permits.
7. Code conversion of the default culture files needs to be done - just another thing on the list not needed for beta testing.
8. The class FSET has been revised to ensure that there is a difference between void and an empty set. This was NOT so in the 1.2 distribution! I would like to change the name of the existing 'create' with no arguments to be 'empty' and return an empty set (not void!).
9. The classes FLT and FLTD in the 1.2 distribution have max and min set to +/- infinity. Unfortunately that is not a valid value for arithmetic purposes. This has been changed to max normal and -max normal.
10. Again for the classes FLT and FLTD the 'asize' problem reared its ugly head so the definition of asize is (until the new compiler) put into both FLT and FLTD, rather than in the partial class FLT_COMMON.
11. While the class MONEY tests OK as far as I can go without assistance, it should only be used in respect of local currency - ie no exchange rate conversion. The reason for this is that I have not been able to find out if there is a standard (preferably an ISO one) for an exchange rate file. I would be grateful if someone can find a standard for such a file. Is there not a European standard (EN nnnnn perhaps?
12. All plaudits and brickbats accepted with thanks!

Comments or enquiries should be made to Keith Hopper . Page last modified: Monday, 16 October 2000. |