Skip to content

Commit

Permalink
add unit tests for symbols #265
Browse files Browse the repository at this point in the history
  • Loading branch information
jcubic committed Jan 25, 2025
1 parent 311b55d commit fa194af
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions tests/symbols.scm
Original file line number Diff line number Diff line change
@@ -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)))

0 comments on commit fa194af

Please sign in to comment.