-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPIPEPRINT.BAS
126 lines (109 loc) · 4.29 KB
/
PIPEPRINT.BAS
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
''
' QB64_GJ_LIB
' GRYMMJACK'S PIPEPRINT LIB
'
' Pipe (|) Print emulates Mystic BBS pipe parsing
'
' @author Rick Christy <grymmjack@gmail.com>
' @uses PIPEPRINT.BI
' @uses PIPEPRINT.BM
'
$LET GJ_LIB_UNIFIED_TESTING = 1
' $LET ANSI_DEBUGGING = 1
$IF GJ_LIB_UNIFIED_TESTING = DEFINED AND GJ_LIB_INC_BI = UNDEFINED THEN
'$INCLUDE:'../_GJ_LIB.BI'
$END IF
'$INCLUDE:'PIPEPRINT.BI'
OPTION _EXPLICIT
OPTION _EXPLICITARRAY
_TITLE "QB64_GJ_LIB PIPEPRINT LIB TESTS"
' Emulate ANSI support with native QB64 functionality
GJ_LIB_ANSI_EMU = TRUE
' Output ANSI codes
GJ_LIB_ANSI_OUTPUT = TRUE
' Setup the console
' @bug MacOS/Linux only see: https://github.com/QB64Official/qb64/issues/33
$IF WINDOWS THEN
$CONSOLE:ONLY
$ELSE
$CONSOLE
_DEST _CONSOLE
$ENDIF
_CONTROLCHR OFF
LOCATE 1,1,1 ' Initialize the cursor and turn it on
DIM SHARED PIPE_TESTS_DICT(16) AS DICTIONARY
PIPE_TESTS_DICT(0).key$ = "PIPETEST_COLORS_STANDARD_FG"
PIPE_TESTS_DICT(0).val$ = "|CL|08-|07-|15-|11[|14 YELLOW THING |11]|15-|07-|08-"
PIPE_TESTS_DICT(1).key$ = "PIPETEST_COLORS_STANDARD_BG"
PIPE_TESTS_DICT(1).val$ = "|CL|CY|24 |23 |31 |16 FOO |31 |23 |24 |16|07"
PIPE_TESTS_DICT(2).key$ = "PIPETEST_POSITIONING"
PIPE_TESTS_DICT(2).val$ = "|CL|[X30|[Y011,30|[X40|[Y011,40|[X30|[Y2020,30|[Y20|[X4020,40|[Y22|[X01"
PIPE_TESTS_DICT(3).key$ = "PIPETEST_CURSORS"
PIPE_TESTS_DICT(3).val$ = "|CL|[0CURSOR OFF"
PIPE_TESTS_DICT(4).key$ = "PIPETEST_COLORS_ICE"
PIPE_TESTS_DICT(4).val$ = "|CL|CY|25|15 BRIGHT WHITE ON BRIGHT BLUE |[1CURSOR ON|16|07"
PIPE_TESTS_DICT(5).key$ = "PIPETEST_MOVE_AB"
PIPE_TESTS_DICT(5).val$ = "|CL|[X10|[Y1010,10 line.|[A01Up one line|[B01Down one line"
PIPE_TESTS_DICT(6).key$ = "PIPETEST_MOVE_CD"
PIPE_TESTS_DICT(6).val$ = "|CL|[X10|[Y1010,10 line.|[C10Right 10|[D10Left 10"
PIPE_TESTS_DICT(7).key$ = "PIPETEST_RIGHT_JUSTIFY"
PIPE_TESTS_DICT(7).val$ = "|CL|@R{RIGHT JUSTIFIED TEXT}"
PIPE_TESTS_DICT(8).key$ = "PIPETEST_LEFT_JUSTIFY"
PIPE_TESTS_DICT(8).val$ = "|CL|[X20start|@L{LEFT JUSTIFIED TEXT}BOBO"
PIPE_TESTS_DICT(9).key$ = "PIPETEST_CENTER_JUSTIFY"
PIPE_TESTS_DICT(9).val$ = "|CL|[X40|@C{CENTER JUSTIFIED TEXT}"
PIPE_TESTS_DICT(10).key$ = "PIPETEST_BAR_TEST"
PIPE_TESTS_DICT(10).val$ = "|CL|23|16|@D79 |@R{RIGHT JUSTIFIED TEXT}"
PIPE_TESTS_DICT(11).key$ = "PIPETEST_PIPES"
PIPE_TESTS_DICT(11).val$ = "|CL|08|PI|09|PI|10|PI|15 PIPES!"
PIPE_TESTS_DICT(12).key$ = "PIPETEST_CRLF"
PIPE_TESTS_DICT(12).val$ = "|CL|07|16FOO BAR BAZ|CRBOP BIZ BUZ|CRBIP BEP BAP"
PIPE_TESTS_DICT(13).key$ = "PIPETEST_BOX_TEST"
PIPE_TESTS_DICT(13).val$ = "|CL|23|00|@D11 |[B01|[D11 |[C09 |[B01|[D11|@D11 |15|00|16|07|CR"
PIPE_TESTS_DICT(14).key$ = "PIPETEST_PIPE_STRING1"
PIPE_TESTS_DICT(14).val$ = "|CL|08-|07-|15-|11[|14 YELLOW THING |11]|15-|07-|08-"
PIPE_TESTS_DICT(15).key$ = "PIPETEST_FG_COLORS"
DIM c AS STRING
c$ = "|23|00 BLACK |16"
c$ = c$ + "|01 BLUE |02 GREEN |03 CYAN |04 RED |05 MAGENTA |06 YELLOW |07 WHITE "
c$ = c$ + "|08 BRIGHT BLACK |09 BRIGHT BLUE |10 BRIGHT GREEN |11 BRIGHT CYAN "
c$ = c$ + "|12 BRIGHT RED |13 BRIGHT MAGENTA |14 BRIGHT YELLOW |15 BRIGHT WHITE "
PIPE_TESTS_DICT(15).val$ = c$
PIPE_TESTS_DICT(16).key$ = "PIPETEST_BG_COLORS"
c$ = "|CY|15|16 BLACK "
c$ = c$ + "|15|17 BLUE |18 GREEN |19 CYAN |20 RED |21 MAGENTA |22 YELLOW |23 WHITE "
c$ = c$ + "|24 BRIGHT BLACK |25 BRIGHT BLUE |26 BRIGHT GREEN |27 BRIGHT CYAN "
c$ = c$ + "|28 BRIGHT RED |29 BRIGHT MAGENTA |00|30 BRIGHT YELLOW |31 BRIGHT WHITE |16|07"
PIPE_TESTS_DICT(16).val$ = c$
' Walk dict for tests
DIM AS INTEGER lb, ub, i
lb% = LBOUND(PIPE_TESTS_DICT) : ub% = UBOUND(PIPE_TESTS_DICT)
FOR i% = 0 TO ub%
CALL test_start("PIPEPRINT with " + PIPE_TESTS_DICT(i).key$)
PRINT PIPEPRINT(PIPE_TESTS_DICT(i).val$)
PRINT PIPEPRINT("|07|16SOURCE:|CR"); PIPE_TESTS_DICT(i).val$
CALL test_complete
NEXT i
PRINT : PRINT "All tests complete!"
SUB anykey()
SLEEP
END SUB
SUB test_start(s$)
DIM nil AS STRING
nil$ = ANSI.mode_reset_all
IF GJ_LIB_ANSI_OUTPUT THEN PRINT nil$;
CLS
PRINT "Press any key to test "; s$
CALL anykey
END SUB
SUB test_complete ()
DIM nil AS STRING
PRINT "Test complete, press a key."
nil$ = ANSI.mode_reset_all
IF GJ_LIB_ANSI_OUTPUT THEN PRINT nil$;
CALL anykey
END SUB
$IF GJ_LIB_UNIFIED_TESTING = DEFINED AND GJ_LIB_INC_BM = UNDEFINED THEN
'$INCLUDE:'../_GJ_LIB.BM'
$END IF
'$INCLUDE:'PIPEPRINT.BM'