@@ -134,12 +134,12 @@ func TestSuite(t *testing.T) {
134134 T{ 127 CHARS BUFFER: TBUF2 -> }T \ Buffer is aligned
135135 T{ TBUF1 ALIGNED -> TBUF1 }T \ Buffers do not overlap
136136 \ T{ TBUF2 TBUF1 - ABS 127 CHARS < -> <FALSE> }T \ Buffer can be written to
137- \ 1 CHARS CONSTANT /CHAR
138- \ : TFULL? ( c-addr n char -- flag )
139- \ TRUE 2SWAP CHARS OVER + SWAP ?DO
140- \ OVER I C@ = AND
141- \ /CHAR +LOOP NIP
142- \ ;
137+ 1 CHARS CONSTANT /CHAR
138+ : TFULL? ( c-addr n char -- flag )
139+ TRUE 2SWAP CHARS OVER + SWAP ?DO
140+ OVER I C@ = AND
141+ /CHAR +LOOP NIP
142+ ;
143143 \ T{ TBUF1 127 CHAR * FILL -> }T
144144 \ T{ TBUF1 127 CHAR * TFULL? -> <TRUE> }T
145145 \ T{ TBUF1 127 0 FILL -> }T
@@ -267,7 +267,13 @@ func TestSuite(t *testing.T) {
267267 T{ c1 CHAR+ C@ -> 0x12 }T
268268 ` ,
269269 },
270- // CHAR
270+ {
271+ name : "CHAR" ,
272+ setup : `
273+ T{ CHAR X -> 58 }T
274+ T{ CHAR HELLO -> 48 }T
275+ ` ,
276+ },
271277 // CHAR+
272278 // CHARS
273279 // COMPILE,
@@ -412,7 +418,26 @@ func TestSuite(t *testing.T) {
412418 ` ,
413419 },
414420 // DO does not have any tests
415- // DOES>
421+ {
422+ name : "DOES>" ,
423+ setup : `
424+ T{ : DOES1 DOES> @ 1 + ; -> }T
425+ T{ : DOES2 DOES> @ 2 + ; -> }T
426+ T{ CREATE CR1 -> }T
427+ T{ CR1 -> HERE }T
428+ T{ 1 , -> }T
429+ T{ CR1 @ -> 1 }T
430+ T{ DOES1 -> }T
431+ T{ CR1 -> 2 }T
432+ T{ DOES2 -> }T
433+ T{ CR1 -> 3 }T
434+ T{ : WEIRD: CREATE DOES> 1 + DOES> 2 + ; -> }T
435+ T{ WEIRD: W1 -> }T
436+ T{ ' W1 >BODY -> HERE }T
437+ T{ W1 -> HERE 1 + }T
438+ T{ W1 -> HERE 2 + }T
439+ ` ,
440+ },
416441 {
417442 name : "DROP" ,
418443 code : `
@@ -531,14 +556,12 @@ func TestSuite(t *testing.T) {
531556 T{ VARIABLE iw3 IMMEDIATE 234 iw3 ! iw3 @ -> 234 }T
532557 T{ : iw4 iw3 [ @ ] LITERAL ; iw4 -> 234 }T
533558 T{ :NONAME [ 345 ] iw3 [ ! ] ; DROP iw3 @ -> 345 }T
534- \ The rest of these tests fail because CREATE does not
535- \ put the newly created definition on the data space.
536- \ T{ CREATE iw5 456 , IMMEDIATE -> }T
537- \ T{ :NONAME iw5 [ @ iw3 ! ] ; DROP iw3 @ -> 456 }T
538- \ T{ : iw6 CREATE , IMMEDIATE DOES> @ 1+ ; -> }T
539- \ T{ 111 iw6 iw7 iw7 -> 112 }T
540- \ T{ : iw8 iw7 LITERAL 1+ ; iw8 -> 113 }T
541- \ T{ : iw9 CREATE , DOES> @ 2 + IMMEDIATE ; -> }T
559+ T{ CREATE iw5 456 , IMMEDIATE -> }T
560+ T{ :NONAME iw5 [ @ iw3 ! ] ; DROP iw3 @ -> 456 }T
561+ T{ : iw6 CREATE , IMMEDIATE DOES> @ 1+ ; -> }T
562+ T{ 111 iw6 iw7 iw7 -> 112 }T
563+ T{ : iw8 iw7 LITERAL 1+ ; iw8 -> 113 }T
564+ T{ : iw9 CREATE , DOES> @ 2 + IMMEDIATE ; -> }T
542565 \ : find-iw BL WORD FIND NIP ;
543566 \ T{ 222 iw9 iw10 find-iw iw10 -> -1 }T \ iw10 is not immediate
544567 \ T{ iw10 find-iw iw10 -> 224 1 }T \ iw10 becomes immediate
@@ -1360,7 +1383,13 @@ func TestSuite(t *testing.T) {
13601383 T{ 1 ?DUP -> 1 1 }T
13611384 ` ,
13621385 },
1363- // >BODY does not have a test case we can replicate
1386+ {
1387+ name : ">BODY" ,
1388+ setup : `
1389+ T{ CREATE CR0 -> }T
1390+ T{ ' CR0 >BODY -> HERE }T
1391+ ` ,
1392+ },
13641393 // >IN
13651394 // >NUMBER
13661395 {
0 commit comments