From 555e2e019359d20b41aea8d3ac5020ea3a324c6d Mon Sep 17 00:00:00 2001 From: Markus Pfeiffer Date: Tue, 16 Nov 2021 12:52:14 +0000 Subject: [PATCH] Add a regression test for make-rule-parser --- .../brag/test/make-rule-parser-grammar.rkt | 4 ++ brag-lib/brag/test/test-make-rule-parser.rkt | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 brag-lib/brag/test/make-rule-parser-grammar.rkt create mode 100644 brag-lib/brag/test/test-make-rule-parser.rkt diff --git a/brag-lib/brag/test/make-rule-parser-grammar.rkt b/brag-lib/brag/test/make-rule-parser-grammar.rkt new file mode 100644 index 0000000..7183bfc --- /dev/null +++ b/brag-lib/brag/test/make-rule-parser-grammar.rkt @@ -0,0 +1,4 @@ +#lang brag + +start: next +next: "0" diff --git a/brag-lib/brag/test/test-make-rule-parser.rkt b/brag-lib/brag/test/test-make-rule-parser.rkt new file mode 100644 index 0000000..2917129 --- /dev/null +++ b/brag-lib/brag/test/test-make-rule-parser.rkt @@ -0,0 +1,44 @@ +#lang racket/base + +(require rackunit + brag/support + br-parser-tools/lex + brag/rules/parser + brag/rules/lexer + ) + +(require "make-rule-parser-grammar.rkt") + + +(define parse-next + (make-rule-parser next)) + +(define parse-start + (make-rule-parser start)) + +(define (lex ip) + (port-count-lines! ip) + (lambda () + (define next-char (read-char ip)) + (cond [(eof-object? next-char) + (token eof)] + [(char=? next-char #\0) + (token "0" "0")] + [(char=? next-char #\1) + (token "1" "1")]))) + + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "0")))) + '(start (next "0"))) +(check-equal? (syntax->datum (parse #f (lex (open-input-string "0")))) + (syntax->datum (parse (lex (open-input-string "0"))))) + +(check-equal? (syntax->datum (parse-start #f (lex (open-input-string "0")))) + '(start (next "0"))) +(check-equal? (syntax->datum (parse-start #f (lex (open-input-string "0")))) + (syntax->datum (parse-start (lex (open-input-string "0"))))) + +(check-equal? (syntax->datum (parse-next #f (lex (open-input-string "0")))) + '(next "0")) +(check-equal? (syntax->datum (parse-next #f (lex (open-input-string "0")))) + (syntax->datum (parse-next (lex (open-input-string "0"))))) \ No newline at end of file