improve db tests
This commit is contained in:
parent
032e1ebf55
commit
4cdcfd6a3b
|
@ -147,7 +147,10 @@
|
|||
(when (string? len-fun)
|
||||
(check-equal? (query-value c (sql (format "select ~a($1)" len-fun)) str)
|
||||
(string-length str)
|
||||
"check server-side length")))
|
||||
"check server-side length"))))
|
||||
|
||||
(define-check (check-1char c str)
|
||||
(check-varchar c str)
|
||||
(when (= (string-length str) 1)
|
||||
;; - if one char, check server-side char->int
|
||||
(let ([ci-fun (case dbsys
|
||||
|
@ -229,6 +232,22 @@
|
|||
(,(sql-interval -87 -1 0 0 0 0 0) "-87 years -1 mons")
|
||||
(,(sql-interval -1 -2 3 4 5 6 45000) "-1 years -2 mons +3 days 04:05:06.000045")))
|
||||
|
||||
(define some-basic-strings
|
||||
`("Az0"
|
||||
"this is the time to remember"
|
||||
"it's like that (and that's the way it is)"
|
||||
,(string #\\)
|
||||
,(string #\\ #\\)
|
||||
,(string #\')
|
||||
,(string #\\ #\')
|
||||
"λ the ultimate"))
|
||||
(define some-intl-strings
|
||||
`("αβψδεφγηιξκλμνοπρστθωςχυζ"
|
||||
"अब्च्देघिज्क्ल्म्नोप्र्स्तुव्य्"
|
||||
"شﻻؤيثبلاهتنمةىخحضقسفعرصءغئ"
|
||||
"阿あでいおうわぁ"
|
||||
"абцдефгхиклмнопљрстувњџзѕЋч"))
|
||||
|
||||
(define test
|
||||
(test-suite "SQL types (roundtrip, etc)"
|
||||
(type-test-case '(bool boolean)
|
||||
|
@ -337,33 +356,21 @@
|
|||
(lambda (c)
|
||||
(unless (ANYFLAGS 'isora) ;; Oracle treats empty string as NULL (?!)
|
||||
(check-varchar c ""))
|
||||
(check-varchar c "Az0")
|
||||
(check-varchar c (string #\\))
|
||||
(check-varchar c (string #\\ #\\))
|
||||
(check-varchar c (string #\'))
|
||||
(check-varchar c "this is the time to remember")
|
||||
(check-varchar c "it's like that (and that's the way it is)")
|
||||
(check-varchar c (string #\\))
|
||||
(check-varchar c (string #\'))
|
||||
(check-varchar c (string #\\ #\'))
|
||||
(check-varchar c "λ the ultimate")
|
||||
(for ([str some-basic-strings])
|
||||
(check-varchar c str))
|
||||
(for ([str some-intl-strings])
|
||||
(check-varchar c str)
|
||||
;; and do the extra one-char checks:
|
||||
(check-1char c (substring str 0 1)))
|
||||
(unless (ANYFLAGS 'isora 'isdb2)
|
||||
(check-varchar c (make-string 800 #\a)))
|
||||
(let ([strs '("αβψδεφγηιξκλμνοπρστθωςχυζ"
|
||||
"अब्च्देघिज्क्ल्म्नोप्र्स्तुव्य्"
|
||||
"شﻻؤيثبلاهتنمةىخحضقسفعرصءغئ"
|
||||
"阿あでいおうわぁ"
|
||||
"абцдефгхиклмнопљрстувњџзѕЋч")])
|
||||
(for ([s strs])
|
||||
(check-varchar c s)
|
||||
;; and do the extra one-char checks:
|
||||
(check-varchar c (string (string-ref s 0))))
|
||||
(unless (ANYFLAGS 'isora 'isdb2) ;; too long
|
||||
(check-varchar c (apply string-append strs))))
|
||||
(unless (ANYFLAGS 'isora 'isdb2) ;; too long
|
||||
(check-varchar c (apply string-append some-intl-strings)))
|
||||
;; one-char checks
|
||||
(check-varchar c (string #\λ))
|
||||
(check-varchar c (make-string 1 #\u2200))
|
||||
(check-1char c (string #\λ))
|
||||
(check-1char c (make-string 1 #\u2200))
|
||||
(check-varchar c (make-string 20 #\u2200))
|
||||
;; check large strings
|
||||
(unless (ANYFLAGS 'isora 'isdb2) ;; too long (???)
|
||||
(check-varchar c (make-string 100 #\u2200)))
|
||||
;; Following might not produce valid string (??)
|
||||
|
|
Loading…
Reference in New Issue
Block a user