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