#!vsl

// $Id: std,v 1.1.1.1 1995/05/01 15:48:48 zeller Exp $ 
// Testdatei fuer "std.vsl"

// $Log: std,v $
# Revision 1.1.1.1  1995/05/01  15:48:48  zeller
# DDD 0.9 distribution
#
// Revision 9.3  1993/06/25  11:59:07  zeller
// Fix: Kommentare Log-Datei angepasst
//
// Revision 9.3  1993/06/25  11:59:07  zeller
// Fix: Kommentare Log-Datei angepasst
//
// Revision 9.2  1993/05/22  20:22:45  zeller
// %Q% added by apply-q-flag.sh 1.5
//
// Revision 9.1  1991/07/08  06:02:03  zeller
// Installierte Version
// 
// Revision 8.1  1991/07/06  15:05:03  zeller
// Installierte Version
// 
// Revision 4.1  1991/05/25  12:52:25  zeller
// Neue Version mit folgenden Eigenschaften:
// Let- und Where-Konstrukten;
// Lokalen und globalen Funktionen, Overloading;
// Erweiterten Fehlermeldungen.
// 
// Revision 3.4  1991/04/27  14:46:17  zeller
// Operatoren umgestellt: '|' -> ':', '!' -> '|' (wie gehabt)
// 
// Revision 3.3  1991/04/17  10:04:29  zeller
// Versionsangabe korrigiert
// 
// Revision 3.2  1991/04/17  09:57:05  zeller
// member() entfernt, tab.vsl eingebunden
// 
// Revision 3.1  1991/02/27  02:10:10  zeller
// Umstellung auf neue Syntax (fast ganz wieder die alte)
// 
// Revision 2.2  1991/02/26  11:51:27  zeller
// Umstellung von 'dispVSL' auf 'vsl'
// 
// Revision 2.1  1991/02/26  11:45:47  zeller
// Anpassung auf neue Syntax (vorerst ungetestet)
// 
// Revision 1.12  1991/02/10  18:24:51  zeller
// Letzte Definition muss global sein, um nicht geloescht zu werden
// 
// Revision 1.11  1991/01/29  15:26:57  zeller
// Version eingefuehrt
// 
// Revision 1.10  1990/09/16  15:59:49  zeller
// Tests fuer "and" und "or" eingefuehrt
// 
// Revision 1.9  1990/09/07  16:17:50  zeller
// Bool'sche Tests eingefuehrt
// 
// Revision 1.8  1990/08/29  13:10:48  zeller
// neu: overline_test(), crossline_test(), erweiterter tab_test()
// 
// Revision 1.7  1990/08/29  12:27:24  zeller
// tab_test() eingefuehrt
// 
// Revision 1.6  1990/08/28  19:24:37  zeller
// main() entfernt
// 
// Revision 1.5  1990/08/28  15:08:08  zeller
// ID angepasst
// 
// Revision 1.4  1990/08/27  17:19:12  zeller
// tab_test() ausgeklammert
// 
// Revision 1.3  1990/08/27  16:23:36  zeller
// tab_test() ausgeklammert
// 
// Revision 1.2  1990/08/26  13:46:07  zeller
// ID's korrigiert
// 
// Revision 1.1  1990/08/26  13:44:02  zeller
// Initial revision
// 

#include <std.vsl>
#include <tab.vsl>

// synonym_test
syn4(...) = halign(...);
syn3(...) = syn4(...);
syn2(...) = syn3(...);
syn1(...) = syn2(...);
syn0(...) = syn1(...);
synonym_test() = syn0("1", "2", "3", "4");

// list_test
list(a) = a;
list(a, ...) = a & list(...);
list_test() = list("1", "2", "3", "4");

// concat_test
concat_test() = "1" "2" "3" "4";

// cstring_test
cstring_test() = "Quotes \"\" and Backslashes \\";

// fix_test
fix_test() = hfix(vfix(rule() ^ 50));

// comma_test
comma_test() = commalist("1", "2", "3", "4");

// frame_test
frame_test() = thickframe(doubleframe(10) & vwhite() & doubleframe(10));

// underline_test
underline_test() = "This should be " & underline("underlined") & ".";

// overline_test
overline_test() = "This should be " & overline("overlined") & ".";

// crossline_test
crossline_test() = "This should be " & crossline("crossed") & ".";

// doublestrike_test
doublestrike_test() = "This should be " & doublestrike("doublestriked") & ".";

// tab_test
tab_test() = tab(
[
	[frame(hcenter("1")),   frame(w_flush("1")),   frame(e_flush("1"))],
 	[frame(hcenter("22")),  frame(w_flush("22")),  frame(e_flush("22"))],
 	[frame(hcenter("333")), frame(w_flush("333")), frame(e_flush("333"))]
]
);

// true_test
bool(a) = if a then "T " else "F " fi;

true_test() =  bool(true) & bool(false or true) 
	& bool(true or false) & bool(true and true)
	& bool("1" = "1") & bool(2 + 2 = 4) & bool(not(2 + 2 = 5));

false_test() = bool(false) & bool(true and false) 
	& bool(false and true) & bool(false or false)
	& bool("1" = "2") & bool(2 + 2 = 5) & bool(not(2 + 2 = 4));

// all tests
all_std_tests() = 
  synonym_test()  		& vcenter(" // synonym_test()")
| list_test() 			& vcenter(" // list_test()")
| concat_test()			& vcenter(" // concat_test()")
| comma_test()			& vcenter(" // comma_test()")
| frame_test()			& vcenter(" // frame_test()")
| tab_test()			& vcenter(" // tab_test()")
| overline_test()		& vcenter(" // overline_test()")
| underline_test()		& vcenter(" // underline_test()")
| crossline_test()		& vcenter(" // crossline_test()")
| doublestrike_test()	& vcenter(" // doublestrike_test()")
| true_test()			& vcenter(" // true_test()")
| false_test()			& vcenter(" // false_test()")
;

std_explanation() =
  "This is '$RCSfile: std,v $ $Revision: 1.1.1.1 $', based on '" & std_version() & "' and '" & 
  tab_version() & "'."
| "Each test should yield the string '1234'.";

std_main() = std_explanation() | all_std_tests();
std_main(_...) -> std_main();
