From fa194af3f33635365d810986c666ee1214ebab6b Mon Sep 17 00:00:00 2001 From: Jakub Jankiewicz Date: Sat, 25 Jan 2025 16:18:42 +0100 Subject: [PATCH] add unit tests for symbols #265 --- tests/symbols.scm | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 tests/symbols.scm diff --git a/tests/symbols.scm b/tests/symbols.scm new file mode 100644 index 00000000..8b82632c --- /dev/null +++ b/tests/symbols.scm @@ -0,0 +1,58 @@ +(load "@lips/lib/srfi/258.scm") + +(test "symbols: it should create interned symbols" + (lambda (t) + (t.is (eq? 'foo 'foo) #t) + (t.is (eqv? 'foo 'foo) #t) + (t.is (equal? 'foo 'foo) #t) + (t.is (symbol=? 'foo 'foo) #t))) + +(test "symbols: it should uninterned symbols" + (lambda (t) + (let ((a (string->uninterned-symbol "foo")) + (b (string->uninterned-symbol "foo"))) + (t.is (eq? a b) #f) + (t.is (eqv? a b) #f) + (t.is (equal? a b) #f) + (t.is (symbol=? a b) #f) + (t.is (string=? a.__name__ b.__name__) #t)))) + +(test "symbols: it should create gensyms" + (lambda (t) + (let ((a (gensym "foo")) + (b (gensym "bar"))) + (t.is (eq? a b) #f) + (t.is (eqv? a b) #f) + (t.is (equal? a b) #f) + (t.is (symbol=? a b) #f) + (t.is (equal? a.__name__ b.__name__) #f)))) + +(test "symbols: it should generate unique symbol" + (lambda (t) + (let ((a (generate-uninterned-symbol)) + (b (generate-uninterned-symbol)) + (c (generate-uninterned-symbol "foo")) + (d (generate-uninterned-symbol "foo"))) + (for-each (lambda (symbol) + (t.is (symbol-interned? symbol) #f)) + (list a b c d)) + (for-each (lambda (pair) + (let ((a (car pair)) + (b (cdr pair))) + (t.is (eq? a b) #f) + (t.is (eqv? a b) #f) + (t.is (equal? a b) #f) + (t.is (symbol=? a b) #f) + (t.is (equal? a.__name__ b.__name__) #f))))))) + +(test "symbols: it should create uninterned literals" + (lambda (t) + (let ((x :|foo|)) + (t.is (symbol-interned? :|foo|) #f) + (t.is (symbol-interned? x) #f)))) + +(test "symbols: gensyms should be uninterned" + (lambda (t) + (t.is (symbol-interned? #:foo) #f) + (t.is (symbol-interned? (gensym)) #f) + (t.is (symbol-interned? (gensym "foo")) #f)))